文章目录
- 1、概念
- 2、Apache解析漏洞 CVE-2017-15715
- 3、Apache AddHandler解析漏洞
- 4、IIS6 解析漏洞(`;`)
- 5、IIS6 解析漏洞(`*.asp/目录`)
- 6、IIS7 解析漏洞(ISAP或CGI的模式下)
- 7、nginx解析漏洞(cgi.fix_pathinfo)
- 8、nginx解析漏洞(%00空字节)
- 9、总结
- 1)轻量级检测绕过
- 2)路径/文件扩展名检测绕过
- 3)文件内容检测方式
1、概念
解析漏洞主要是一些特殊文件被Apache、IIS、Nginx等Web服务器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞
2、Apache解析漏洞 CVE-2017-15715
影响范围:2.4.0~2.4.29版本
此漏洞形成的根本原因,在于 , 正则表达式中 , 正则表达式中 ,正则表达式中不仅匹配字符串结尾位置,也可以匹配\n 或 \r ,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
上传文件test.php. 抓包 修改 php后面的点(2e
) 为 换行(0a
)
访问 test.php%0a
3、Apache AddHandler解析漏洞
Apache默认一个文件可以有多个后缀名,每次识别从右到左识别,当最右边的后缀无法识别时,则继续向左识别。mime.types中记录apache可识别的后缀名
。
添加AddHandler
,使得任何文件只要包含.php后缀名的文件都会被当作php文件解析为了使php文件可以被解析,用户自己添加了AddHandler:AddHandler application/xhttpd-php .php
4、IIS6 解析漏洞(;
)
基于文件名:该版本默认会将*.asp;.jpg此种格式的文件名,当成asp解析。
原理是服务器默认不解析 ; 号及其后面的内容相 当于截断
。
5、IIS6 解析漏洞(*.asp/目录
)
基于文件夹名,该版本默认会将 *.asp/
目录下的所有文件当成asp解析。
当在网站下建立文件夹的名字为*.asp、*.asa、*.cer、*.cdx
的文件夹
,那么其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。
注意:微软不认为这一个是漏洞,因为正常情况下,是无法创建 *.asp 命名的文件夹的。
6、IIS7 解析漏洞(ISAP或CGI的模式下)
服务器是使用IIS7环境,并且在ISAP或CGI的模式下,在任意文件,如test.jpg后面加上 /.php ,会自动将test.jpg解析为php文件。
例如:127.0.0.1/test.jpg/.php 会被解析成 127.0.0.1/test.php
7、nginx解析漏洞(cgi.fix_pathinfo)
nginx查看url,得到.php结尾,将路径传递给php fastcgi处理程序,nigin传递给php的路径为
php根据url映射,在服务器寻找xxx.php文件,但是xxx.php文件不存在,由于cgi.fix_pathinfo是默认开启。php会继续检查 路径存在的文件,并将多余部分当作PATH_INFO,接着找到文件存在.jpg文件,后以php形式执行.jpg内容,并将/xxx.php 存储在PATH_INFO后丢弃。
- 举例来说:
1)上传了一个图片木马文件:upload/1.jpg
2)然后访问方式是:upload/1. jpg /1.jlkk/1.php
3)这时后系统会从后面开始找,先去找1.php,没找到;接着往前找1.jlkk,也没找到;再往前找1. jpg,找到了。
4)系统就会把找到的1.jpg来当成是最后的一个1.php来当成PHP文件执行。
8、nginx解析漏洞(%00空字节)
Nginx如下版本: 0.5.*、0.6.*、0.7 <= 0.7.65、0.8 <= 0.8.37
该漏洞不受cgi.fix_pathinfo影响,当其为0时,依旧解析。
- 生成一个upload/info.jpg格式的木马文件
- 使用burp抓包,访问info.jpg,修改为info.jpg…php , 在16进行模式下,修改jpg后面的 . ,为00
- 访问时就直接访问upload/info.jpg .php
- 这时就直接会把info.jpg当成info.php来执行。
9、总结
从攻击者的角度来给上传分类:
1)轻量级检测绕过
a.绕过前端JavaScript检测:使用Burp抓包改包。
b.绕过服务器端MIME类型检测:使用Burp抓包改包。
2)路径/文件扩展名检测绕过
黑名单检测方式
- 文件名大小写绕过;
- 名单列表绕过;
- 特殊文件名绕过;
- 0x00截断绕过;
- .htaccess文件攻击;
- 本地文件包含漏洞;
- Apache解析漏洞;
- IIS解析漏洞;
- Nginx解析漏洞;
白名单检测方式
- 0x00截断绕过;
- 本地文件包含漏洞;
- Apache解析漏洞;
- IIS解析漏洞;
- Nginx解析漏洞;
3)文件内容检测方式
对文件进行恶意代码注入,再配合解析漏洞(或文件包含漏洞)。