本文主要是介绍突破后缀限制文件上传漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
php类型:
1:
构造服务器端虚假扩展名检测上传
将一句话木马的文件名lubr.php改成lubr.php.abc。首先,服务器验证文件扩展名的时候,验证的是.abc,只要改扩展名符合服务器端黑名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了.abc扩展名,会向前寻找可解析的扩展名,即”.php”。一句话木马可以被解析,即可通过中国菜刀连接。
Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断
如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个wooyun.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀
2:
利用00截断,brupsuite上传
利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0X00上传截断漏洞。
假设文件的上传路径为http://xx.xx.xx.xx/upfiles/lubr.php.jpg ,通过Burpsuite抓包截断将lubr.php后面的“.”换成“0X00”。在上传的时候,当文件系统读到”0X00″时,会认为文件已经结束,从而将lubr.php.jpg的内容写到lubr.php中,从而达到攻击的目的。
3:
IS7.0/IIS7.5/ Nginx <8.03畸形解析漏洞
在默认Fast-CGI开启状况下,黑阔上传一个名字为wooyun.jpg,内容为
<?PHPfputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
的文件,然后访问wooyun.jpg/.php,在这个目录下就会生成一句话木马shell.php
asp类型:
1:
在IIS6.0下,分号后面的不被解析,也就是说
wooyun.asp;.jpg会被服务器看成是wooyun.asp
改类型:
绕过Content-Type检测文件类型上传
当浏览器在上传文件到服务器端的时候,服务器对上传的文件Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失效。绕过Content-Type文件类型检测,就是用Burpsuite截取并修改数据包中文件的Content-Type类型,使其符合白名单的规则,达到上传的目的。
图片木马:
1:
构造图片木马,绕过文件内容检测上传Shell
一般文件内容验证使用getimeagesize()函数检测,会判断文件是否一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。
制作图片木马: copy1.jpg/b+2.php/a 3.jpg
2:图片文件头后加木马
决定文件是否是jpeg格式?
二进制形式打开文件,文件开始字节为FFD8,文件结束两字节为FF D9。则初步判定文件为jpeg。
jpeg的SOI(start ofimage) 为ff d8,EOD(end of image)为ff d9
a).xxx.php[\0].JPG,对于一个只允许上传JPG格式的服务器,此文件可以绕过文件上传检查,但是对于服务器端解释来说,函数会被[\0]截断,导致成为xxx.php代码。
b).在IIS6.0下,分号后面的不被解析,也就是说sp.asp;.jpg,会被服务器看成是sp.asp。
c).Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。
比如 sec.php.owf.rar “.owf”和”.rar”,这两种后缀是apache不可识别解析,apache就会把sec.php.owf.rar解析成php。
d).上传不符合windows文件命名规则的文件名
test.asp.
test.asp(空格)
test.php:1.jpg
test.php:: $DATA
会被windows系统自动去掉不符合规则符号后面的内容。
对非法上传的防御机制大致有如下几种:
1.客户端检测,使用JS对上传图片检测,包括文件大小、文件扩展名、文件类型等
2.服务端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测,对文件重命名
3.其他限制,服务器端上传目录设置不可执行权限
这篇关于突破后缀限制文件上传漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!