首先我们来普及一下几个知识点,嘿嘿!!
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
- webshell
百度百科:
- 危害:
2.文件后缀名大小写绕过
4.JavaScript绕过
1.Nginx解析漏洞
我们有一张图片:http://ap.test.com:8080/1.jpg
而当我们正常访问,Nginx会把这个当作非脚本语言直接读取传送回客户端(也就是浏览器),但是存在解析漏洞的Nginx会把如下连接解析并且执行~:
1. http://ap.test.com:8080/1.jpg/1.PHP
2. http://ap.test.com:8080/1.jpg%00.PHP
漏洞影响范围:Nginx 0.7.65以下(0.5.*,0.6.*,0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。
2.IIS解析漏洞
① 版本:iis5.*/6.0
漏洞信息:
1.目录解析
网站目录有一个名字为1.asp(其他的asp扩展名也可以),目录里有一个1.jpg 内容为asp代码。
访问:http://ap.test.com/1.asp/1.jpg 会被当成正常asp文件执行
2.文件名解析
在IIS6.0下,分号后面的不被解析,也就是说mst.asp;.jpg会被服务器看成是mst.asp,还有IIS6.0 默认的可执行文件除了asp还包含这三种:/.asa/.cer/.cdx
② 版本:iis7.0/7.5
漏洞信息:
畸形解析漏洞,上传一个名字为mst.jpg,内容为:一句话代码的文件,然后访问mst.jpg/1.PHP,就可以连接 。同Nginx解析1
3.Apache解析漏洞:
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。
比如 mst.PHP.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把mst.PHP.owf.rar解析成PHP。
如何判断是不是合法的后缀就是这个漏洞的利用关键
测试时可以尝试上传一个mst.PHP.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀
4.其他解析漏洞:
在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被windows自动消除,这样也可以getshell。如果在Apache中.htaccess可被执行,且可被上传,那可以尝试在.htaccess中写入:
<FilesMatch "mst.jpg"> SetHandler application/x-httpd-PHP
</FilesMatch>
然后再上传mst.jpg的木马,这样mst.jpg就可解析为PHP文件
文件上传黑名单旁路技术
Windows IIS服务器黑名单文件上载旁路:
Apache Windows黑名单旁路:
1.Windows 8.3功能允许短名称替换现有文件,例如:web.config可以替换为web~config.con或.htaccess可以替换为HTACCE~1 2.尝试上传。文件,如果上传函数root是/www/uploads/它将在上面的目录中创建一个名为uploads的文件。
一般黑名单旁路:
1.确定要过滤的字符 - 使用burp intruder评估带有元字符列表的插入点 2.确保您的列表中包含常见的文件类型的扩展名,例如.PHP5,.PHP3,.phtml 3.测试保护机制中的缺陷,如果剥离文件名可能会被滥用吗?示例:shell.p.PHPp如果应用程序剥离.PHP,它可以将扩展名重命名为.PHP 4.%00在文件名中的不同位置尝试一个空字节,例如:shell.PHP%00.jpg,shell.PHP%0delete0.jpg- 观察应用程序的响应方式 5.双重扩展:如果应用程序正在剥离或重命名扩展名 - 如果你给它两个扩展名怎么办?示例:shell.PHP.PHP或4shell.txt.jpg.png.asp 6.尝试使用长文件名,例如supermassivelongfileeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeename.PHP应用与长文件名一起使用的其他过滤器旁路技术 7.试试吧test.asp\,test.asp.8.你可以上传flash XSS有效载荷,命名为.jpg 9.尝试使用以前的技术,但请使用PDF或Silverlight 10.同样但尝试滥用crossdomain.xml或clientaccesspolicy.xml文件 11.尝试使用编码绕过黑名单过滤器,尝试URL,HTML,Unicode和双重编码 12.结合所有上述旁路技术 13.尝试使用替代HTTP Verb,尝试使用POST而不是PUT或GET(反之亦然),您可以使用Burp Intruder和HTTP Verbs有效负载列表枚举选项 14.此外,确保所有输入点都针对各种输入验证失败进行模糊测试,例如XSS,命令注入,XPath,sqli,LDAPi,SSJI