WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性

目录

知识点

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini妙用

4、文件上传-PHP语言特性

详细介绍

1、检测层面:前端,后端等

2、检测内容:文件头,完整性,二次渲染等

3、检测后缀:黑名单,白名单,MIME检测等

4、绕过技巧

5、前置知识

案例演示-CTFSHOW-文件上传-151到161关卡

CTF-文件上传-151

CTF-文件上传-152

CTF-文件上传-153

CTF-文件上传-154

CTF-文件上传-156

CTF-文件上传-157

CTF-文件上传-159

CTF-文件上传-160

CTF-文件上传-161


知识点

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini妙用

.user.ini:有php就可以使用

.user.ini:php支持基于每个目录的ini文件配置,如果php运行在apache里与.htaccess有同样的效果

4、文件上传-PHP语言特性

详细介绍

1、检测层面:前端,后端等

前端:检测代码写到前端,如js等

后端:采用后端代码,检测代码需要通过发包发到对方服务器,然后服务器进行检测这个文件上传成功或者失败。

从检测层面的基础上面在往里细节就是检测内容和后缀

2、检测内容:文件头,完整性,二次渲染等

文件头、完整性、二次渲染

3、检测后缀:黑名单,白名单,MIME检测等

通过后缀检测可以检测到上传文件的类型。尽量按照网站的脚本语言来进行后门的格式,否则容易不支持格式。

黑名单:声明一个禁止上传的黑名单,符合黑名单的内容就会失败

白名单:声明了允许上传的白名单,符合白名单的内容就可以上传

MIME:比如多个图片(png,jpg)或者多个文本都有不同的后缀名,mime会有一种归类来进行文件上传的判断是否符合

4、绕过技巧

前端、MIME、上传.user.ini文件进行包含、{}绕过[]过滤、反引号、包含日志文件、添加文件头部验证

5、前置知识

后门代码需要用特定格式后缀解析(比如是php的后门代码必须是php的格式才可以进行解析),不能以图片后缀解析脚本后门代码(解析漏洞除外)

如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门,除非使用.user.ini

案例演示-CTFSHOW-文件上传-151到161关卡

CTF-文件上传-151

思路:修改前端代码

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第1张图片

尝试上传php后门脚本,发现失败 

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第2张图片

 通过检查源码,可以断定是通过前端进行验证后缀

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第3张图片

直接修改前端代码,就可以正常上传php后门

php一句话木马:

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第4张图片

访问目录下的1.php,并将利用后门获取flag 

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第5张图片

CTF-文件上传-152

该关卡用151关卡的方法肯定是不行的,所以不在演示

思路:因为是MIME判断,修改Content-Type的参数

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第6张图片

先修改页面源代码绕过前端验证

 分别上传php和png图片,抓包进行比较。可以明显发现两个数据包的Content-Type不太一样。该验证就为MIME验证。

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第7张图片

 

 那么可以直接通过修改Content-Type的值,在上传php文件时把值修改成png时的值,进行MIME的绕过

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第8张图片

通过后门获取flag 

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第9张图片

CTF-文件上传-153

该关肯定之前的办法都不行,所以不尝试前端和MIME的绕过,也可以尝试修改filename的文件后缀、尝试修改后缀名的大小写(如果是linux不能,因为在访问文件时linux区分大小写)、尝试多后缀解析(例如:php5、php7等)

思路:利用user.ini文件进行包含

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第10张图片

那么可以尝试使用user.ini,index.php可以直接让user.ini生效从而利用.user.ini包含1.png文件,1.png里包含的php后门程序,通过情况下png格式无法让php代码生效,所以使用到了.user.ini。

注意:上传.user.ini文件时要将Content-Type改为image/png格式

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第11张图片

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第12张图片

利用后门获取flag

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第13张图片

CTF-文件上传-154

155关卡与154相同

思路:该关过滤php字符,只需要写入不带php字符的代码就可以了。WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第14张图片

 

上传user.ini文件,发现没有任何问题。但是上传带有后门脚本的文件时发现上传失败

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第15张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第16张图片

 将内容修改成普通内容是可以正常上传的,通过不断测试发现了是过滤了php字符

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第17张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第18张图片

 

那么只需要写入不带php字符的代码就可以了。这里为各位总结了一下

echo '123';?>                                             //前提是开启配置参数short_open_tags=on

(表达式)?>                                               //不需要开启参数设置

<% echo '123';%>                                          //前提是开启配置参数asp_tags=on

<script language=”php”>echo '1'; script>   //不需要修改参数开关

选择符合条件的代码进行上传,获取flag

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第19张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第20张图片

CTF-文件上传-156

思路:上传文件时过滤后门脚本中的中括号,直接利用大括号即可

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第21张图片

上传user.ini文件和后门脚本文件,把包含变量的中括号改为大括号

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第22张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第23张图片 

直接访问获取flag,获取利用菜刀蚁剑连接后门

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第24张图片 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第25张图片

 

CTF-文件上传-157

157与158相同

思路:该关直接过滤了分号和{},那么直接让包含的图片输出flag即可

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第26张图片

 上传user.ini文件和后门代码文件

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第27张图片

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第28张图片

 直接访问upload文件即可获取flag

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第29张图片

 

CTF-文件上传-159

思路:该关过滤(),那么system就不可以使用,可以利用反引号执行代码

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第30张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第31张图片 

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第32张图片

 访问index.php触发.user.ini文件,.user.ini文件触发test文件,最后触发代码获取falgWEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第33张图片

 

CTF-文件上传-160

思路:该题因为过滤了反引号,所以可以从日志文件入手 ,让user.ini文件包含图片文件,图片文件包含日志文件,修改日志文件的UA头实现后门代码。

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第34张图片

 上传user.ini和图片文件WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第35张图片

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第36张图片

 访问upload时,可以查到日志文件WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第37张图片

 再次访问页面并将UA头修改成后门代码

然后直接访问upload文件,并利用post传参。或者直接上菜刀获取flag都可。 

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第38张图片 

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第39张图片

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第40张图片 

CTF-文件上传-161

思路:该题考的是文件头部检测是否为图片格式文件:不同的文件,比如png,jgp都有不同的文件头

WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第41张图片

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第42张图片

 那么再上传user.ini文件和包含日志的图片文件时,在开始部分加上文件头的信息绕过验证WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第43张图片

 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第44张图片

访问页面,抓包并修改UA头

 

 直接获取flagWEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性_第45张图片

 

 

你可能感兴趣的:(前端,javascript,php)