常见的上传绕过及解析漏洞

解析漏洞

一、Apache解析漏洞
(黑名单:进制上传的文件,比如.php.asp.jsp.aspx等)
比如上传一个黑名单之外的文件,如:abc.php.xxx.aaa.bbb
首先,网站会寻找.bbb的解析凡是,如果找不到就继续向前匹配,直到找到一个认识的后缀名,比如.php,然后就以.php的方式运行这个文件。
二、iis解析漏洞
iis6.0
1.当文件夹的名字以.asp,.asa,.cer,.cdx结尾的时候,那么目录中的文件都会以这个后缀名一类的文件解析。如aaaa.asp文件夹,里面有个文件a.txt,那么访问网站http://www.xxx.com/aaa.asp.a.txt/ 会以asp方式运行。
2.特殊文件名:当文件以任意文件名.asp命名的时候,如aaa.asp;.jpg这个文件会以asp方式运行。
iis7.0、7.5:
任意文件名.jpg,在后面追加上/任意文件名.php,那么这个文件会以PHP方式来运行。
http://xss.tv/meinv/tila.jpg/ccc.php
3.Nginx解析漏洞:
#类似于iis7.0、7.5的解析漏洞,在任意文件名后面添加xxx.php的方式来运行这个文件
http://xss.tv/meinv/tila.jpg/xxx.php会以php方式运行
#在文件后面添加%00.php也会以php的方式运行。
http://xss.tv/meinv/tila.jpg.php会以php方式运行
Nginx 0.5.x
Nginx 0.6.x
Nginx 0.7<=0.7.65
Nginx 0.8<=0.8.37
#在文件的后面添加%20%00.php,也会以php方式运行
在Linux系统里,一下Nginx容器的版本下,Nginx 0.8.41~1.4.3, 1.5<=1.5.7

常见的上传绕过

常见上传检测规则

在这里插入图片描述
A.客户端JavaScript检测(通常为检测文件拓展名)
B.服务端MIME类型检测(检测Content-Type内容)
C.服务端目录路径检测(检测跟path参数相关的内容)
D.服务端文件名拓展名检测(检测跟文件estension相关的内容)
E.服务器文件内容检测(检测内容是否合法或含有恶意代码)

客户端检测
客户端检测通常在上传页面里含有专门检测文件上传的JavaScript代码。最常
见的就是检测拓展名是否合法。
判断方式:
在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上
传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

绕过办法
利用brupsuite之类的代理工具
修改webshell后缀类型为允许上传类型
抓包拦截将其后缀名改为对应的服务器可以解析的后缀名。

服务端MIME检测
服务端MIME类型检测也就是检测Content-Type的内容。下面是一段测试模拟代码:
在这里插入图片描述
绕过办法
我们将request包的Content-Type修改:
图片类型:
在这里插入图片描述
在这里插入图片描述

服务端目录路径检测
服务端目录路径检测:一般是检测保存路径是否合法,但一般都没有防御。检
测跟path参数相关的内容。
漏洞成因是因为对目录路径的检测不够严谨而导致可以用0x00截断的方式来进
行攻击。
0x00截断:上传文件的时候,当系统文件读到(0x00)时,会认为文件已经结
束。利用00截断就是利用WEB应用对文件上传的路径过滤的不严格,产生0x00上传截断漏洞。

绕过办法
通过抓包截断将 eval.php.jpg 换成 eval.php_jpg(下划线为0x00)。在上
传文件时系统文件遇到0x00。会认为文件已经结束。从而将eval.php.jpg的内
容写入到eval.php中。
$ FilePath = C:/wamp/www/uploadfile/eval.php_.jpg
move_uploaded_file($ _FILES[“upload_file”][“tmp_name”], $FilePath)
在执行move_uploaded_file的这个函数时底层操作调用类似于C语言。遇到0x00
会自动截断,真实写入的地址应该是C:/wamp/www/uploadfile/eval.php

服务端文件名拓展检测

基于黑名单检测:
黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多。
一般有个专门的blacklist,里面包含常见的危险脚本文件。

绕过办法
1、文件名大小写绕过(AsP, pHp等等)
2、黑白名单绕过(php、php2、php3、php5、phtml、asp、aspx、ascx、
ashx、cer、asa、jsp、jspx)cdx,
3、特殊文件名绕过
修改数据包里的文件名改为 test.php. 或者 test.asp_ (下划线是空格)由于
这种命名格式在windows系统里是不允许的。所以在绕过上传之后windows系统
会自动去掉 点和空格。Unix/Linux系统没有这个特性。
4、0x00截断绕过
5、.htaccess文件攻击(结合黑名单攻击)
6、 解析绕过

其他绕过方式

  1. 0x00截断绕过
    文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语
    言函数中,处理字符串的函数中0x00被认为是终止符。
    例如:
    网站上传函数处理xxx.php%00.jpg时,首先后缀名是合法的jpg格式,可以
    上传,在保存文件时,遇到%00字符丢弃后面的jpg,文件后缀最终保存的后缀
    名为xxx.php

  2. .htaccess文件攻击
    .htaccess文件攻击即结合黑名单攻击服务器的 .htaccess文件 。
    通过move_uploaded_file函数把自己写的 .htaccess文件覆盖掉服务
    器上的这样就可以解析定义名单了。
    .htaccess文件用处:
    通过.htaccess文件调用php解释器去解析一个文件名中只要包含
    “haha”这个字符串的任意文件,无论你文件名是什么样子,只要包
    含”haha”这个字符串,都可以被以php的方式来解析。
    .htaccess文件内容:

    <FilesMatch “haha”>
    SetHandler application/x-httpd-php
    < /FilesMatch>

  3. 服务端文件内容拓展检测
    如果文件内容检测设置得比较严格,那么上传攻击将变得非常困难。也可
    以说它是在代码层检测的最后一道关卡。如果它被突破了,就算代码层的漏
    洞,也可以结合解析漏洞进行攻击。
    1.文件幻数检测 jpg(JFIF) gif(GIF89a) png(%PNG)
    2.文件相关信息检测(文件头加一些图片信息中间夹杂攻击代码)
    3.文件加载检测(调用API或者函数进行文件加载测试 php的 gd库)

  4. 文件幻数检测绕过
    主要是检测文件内容开始处的文件幻数,比如图片类型的文件幻数如下:
    要绕过jpg文件幻数检测就要在文件开头写上下图的值:
    在这里插入图片描述
    gif文件:GIF89a
    png文件:%PNG

  5. 制作图片马
    cmd下执行:
    copy /b 1.jpg+2.php=3.jpg

  6. Apache解析漏洞
    test.php.aaa.bbb.ccc任意不属于黑名单且不属于Apache解析白名单之内的后缀名。
    说明:一个文件名为test.php.aaa.bbb.ccc的文件,Apache会从ccc的位置往php的位置开始尝试去解析bbb,这样一直往前尝试,直到遇到一个能解析的拓展名为止。

以下版本存在Apache解析漏洞
WampServer2.0All Version (WampServer2.0i / Apache 2.2.11) [Success]
WampServer2.1All Version (WampServer2.1e-x32 / Apache 2.2.17) [Success]
Wamp5 All Version (Wamp5_1.7.4 /Apache 2.2.6) [Success]
AppServ 2.4All Version (AppServ - 2.4.9 /Apache 2.0.59) [Success]
AppServ 2.5All Version (AppServ - 2.5.10 /Apache 2.2.8) [Success]
AppServ 2.6All Version (AppServ - 2.6.0 /Apache 2.2.8) [Success]

iis解析漏洞
test.asp/任意文件名 | test.asp;任意文件名 | 任意文件名/任意文件名.php
IIS6.0 在解析 asp 格式的时候有两个解析漏洞.
一个是如果目录名包含".asp 、.asa、.cer “字符串,那么这个目录下所
有的文件都会按照 asp 去解析。eg: “test.asp/1.jpg”
另一个是只要文件名中含有”.asp;、.asa;、.cer;会优先按 asp 来解析
eg: “1.asp;.jpg”
IIS7.0/7.5是对php解析时有一个类似于Nginx的解析漏洞, 对任意文件
名只要在URL
后面追加上字符串"/任意文件名.php"就会按照 php 的方式去解析
eg:”http://www.target.com/upload/1.jpg/1.php”

iis漏洞版本
IIS6.0 (Win2003 SP2 + IIS6.0) [Success]
IIS7.0 (Win2008 R1 + IIS7.0) [Success]
IIS7.5 (Win2008 R2 + IIS7.5) [Success]

Nginx解析漏洞
任意文件名/任意文件名.php | 任意文件名%00.php

目前 Nginx 主要有这两种漏洞:
• 一个是对任意文件名,在后面添加/任意文件名.php的解析漏
洞,比如原本文件名是 test.jpg,可以添加为 test.jpg/x.php 进行
解析攻击。
• eg: “http://www.target.com/upload/1.jpg/1.php”
• 一种是对低版本的 Nginx 可以在任意文件名后面添加%00.php
进行解析攻击。

Nginx漏洞版本
• Nginx 0.5.*
• Nginx 0.6.*
• Nginx 0.7 <= 0.7.65
• Nginx 0.8 <= 0.8.37
• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂
文件1.jpg,然后以1.jpg%00.php进行请求。
• Nginx 0.8.41 – 1.5.6:
• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂
文1.jpg,然后以1.jpg%20%00.php进行请求

总结

路径/拓展名检测绕过
• 黑名单绕过
文件名大小写绕过
名单列表绕过
特殊文件名绕过
0x00截断绕过
.htaccess文件攻击
Apache解析漏洞
IIS解析漏洞
Nginx解析漏洞

• 白名单绕过
文件名后缀0x00截断绕过
PHP文件包含漏洞
IIS解析漏洞
Nginx解析漏洞

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北境L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值