文件解析漏洞,说白了就是网站管理员骚操作或者Web容器自己抽风,把一些奇葩格式的文件当成脚本执行了。这就像把二哈当警犬使,不出事才怪!黑客就喜欢这种漏洞,能让他们偷偷摸摸搞事情。
今天咱就来扒一扒那些年我们一起追过的Web中间件文件解析漏洞,看看它们都是怎么翻车的。
一、老古董IIS 6.0的那些事儿
用着6.x版本的服务器,那都是Windows Server 2003的老爷爷了,网站也都是上了年纪的,一般都用ASP开发。所以,这解析漏洞也就只能解析ASP文件,想解析ASPX?没门!
1、目录解析:/x.asp/x.jpg (这名字起的,一看就是老司机!)
这个x.jpg你可以随便换成啥文本文件,比如x.txt,里面塞点后门代码。
IIS 6.0 默认会把.asp,.asa目录下的文件都当成asp文件来解析,简直是图样图森破!
2、后缀解析:/x.asp;.jpg (这波操作有点骚啊!)
IIS 6.0 比较耿直,看到;号就觉得后面没啥用了,直接忽略。所以x.asp;.jpg就被当成asp文件解析了。
3、默认解析:/x.asa,/x.cer,/x.cdx (集齐这三个后缀,召唤神龙?)
IIS 6.0 默认配置里,除了.asp,还有.asa、.cer、.cdx这三个后缀,默认都是由 asp.dll 这个老家伙来解析的。权限和.asp一样一样儿的。当然,你也可以自己动手,把这几个后缀删了,省得夜长梦多。
可以结合目录解析漏洞一起用,比如 /x.asa/x.jpg 或者 /x.cer/x.jpg 或者 /x.asa;.jpg,效果更佳!
4、亡羊补牢,为时未晚的修复方案
1、微软官方还没出补丁,只能自己写个正则,把x.asp;.jpg这种妖艳贱货给拦住。
2、做好权限管理,别让用户随便创建文件夹,防止他们搞事情。
二、IIS 7.0、IIS 7.5、Nginx <8.03:难兄难弟,一个都跑不了
1、PHP解析漏洞:都是cgi.fix_pathinfo惹的祸!
php的配置文件 php.ini 里面,cgi.fix_pathinfo这个选项被打开了,再加上/etc/php5/fpm/pool.d/www.conf里面security.limit_extensions配置不当,就允许把其他格式的文件当成php来解析执行了。
来,咱们做个小实验:
本地建一个文件phpinfo.jpg,内容是:<?php phpinfo() ?>,然后访问http://127.0.0.1/phpinfo.jpg/.php,Duang!恶意代码就执行了。
但是在nginx<8.03环境里,新建一个文件test.jpg,直接访问会显示图片解析错误。然后你在浏览器里访问/test.jpg/test.php ,就会显示Access denied.。
这就奇怪了,test.jpg明明是个文件,test.php更是压根不存在,访问/test.jpg/test.php没报404,反而显示Access denied.,这不科学!
原因嘛,就是Nginx拿到URI(/test.jpg/test.php)后,一看后缀是.php,直接丢给php去处理了。php一看,/test.jpg/test.php不存在啊,就删掉最后的/test.php,继续判断/test.jpg存在,然后就把/test.jpg当成要执行的文件了。但是后缀是.jpg,php觉得这不是php文件,就返回Access denied.。
这里面有个关键因素,就是php的选项:cgi.fix_pathinfo,默认是1,也就是开启的。开启这个选项后,PHP对文件路径的处理逻辑是从右向左判断文件是否存在,一层一层地剥,直到找到存在的那个路径为止。 这就导致php会尝试解析test.jpg。
这个选项在php.ini文件里。如果关掉这个选项,访问 /test.jpg/test.php 只会返回找不到文件。但是关掉这个选项可能会导致其他问题,所以一般默认是开启的。
漏洞形式:/x.jpg/x.php (记住这个套路!)
还有一种利用方式,上传一个名字叫test.jpg的文件,内容是:
');?>
然后访问 test.jpg/.php,就会在这个目录下生成一句话木马shell.php,简直不要太方便!
图片马利用方法:``将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾。``例:copy xx.jpg/b + yy.txt/a xy.jpg``/b 即二进制[binary]模式``/a 即ascii模式 xx.jpg正常图片文件
新版本的php引入了security.limit_extensions ,限制了可执行文件的后缀,默认只允许执行.php文件。
这个漏洞是由于Nginx中php配置不当造成的,和Nginx版本关系不大。但是在高版本的php中,由于security.limit_extensions 的限制,使得这个漏洞很难被成功利用。
IIS在这点上和Nginx是一样的,同样存在这个问题。而像Apache,会先判断文件是否存在,如果存在再决定怎么处理。 cgi.fix_pathinfo是php的特性,如果在php之前就判断了文件是否存在,cgi.fix_pathinfo就没用了,这个问题自然就不存在了。
2、IIS相关的解析漏洞:换汤不换药
IIS7.5的漏洞和nginx类似,都是因为php配置文件中开启了 cgi.fix_pathinfo,这并不是nginx或者iis7.5本身的漏洞。
和 nginx 解析漏洞一样,利用的条件是 php.ini => cgi.fix_pathinfo=1 开启的情况才会产生。
可以配合操作系统文件命名规则,上传不符合 windows 文件命名规则的文件名。
比如:
- test.asp.
- test.asp(空格)
- test.php:1.jpg
- test.php:: $DATA
这些文件名会被 windows 系统自动去掉不符合规则符号后面的内容,然后再配合这个解析漏洞来执行文件。
3、亡羊补牢,为时未晚的修复方案
1、修改php.ini文件,将cgi.fix_pathinfo的值设置为0;
2、在Nginx配置文件中添加以下代码:
if ( $fastcgi_script_name ~ ..*/.*php ) {
这行代码的意思是,当匹配到类似test.jpg/a.php的URL时,返回403错误代码。
三、Nginx:不甘示弱,继续搞事情
1、%00空字节代码解析漏洞:老司机都懂的套路
Ngnix在遇到%00空字节时,和后端FastCGI处理方式不一样,导致可以在图片里嵌入PHP代码,然后通过访问xxx.jpg%00.php来执行代码。
环境要求:
php < 5.3.4
Nginx 0.5.*
Nginx 0.6.*
Nginx 0.7 <= 0.7.65
Nginx 0.8 <= 0.8.37
漏洞形式:
filename=test.php%00.txt
1、上传时路径可控,使用00截断
2、文件下载时,00截断绕过白名单检查
3、文件包含时,00截断后面限制(主要是本地包含时)
4、其他和文件操作有关的地方都可能用到00截断。
2、CVE-2013-4547(%20%00):空格和截止符的阴谋
非法字符空格和截止符(%00)会导致Nginx解析URI时的有限状态机混乱,允许攻击者通过一个非编码空格绕过后缀名限制。
影响nginx版本:nginx 0.8.41 ~ 1.5.6
漏洞形式
http://127.0.0.1/file.jpg .php
这样会让Nginx认为文件“file.jpg ”的后缀为“.php”。
来,咱们再做个测试
在Nginx/1.0.15的环境中,准备文件“test.jpg ”(注意文件名的最后一个字符是空格),文件内容是:<?php phpinfo(); ?>。
用Burp Suite抓包并修改,把原本的URL http://*.*.*.*/test.jpg...php,将jpg后的第一个“.”改为20,第二个“.”改为00。
修改完毕后 Forword 该请求,在浏览器里就能看到phpinfo的结果了。
四、Apache:压轴登场,实力不容小觑
1、后缀解析:test.php.x1.x2.x3 (俄罗斯套娃式解析)
Apache的文件解析规则是从右向左判断后缀是否可以解析,如果x3不是可识别的后缀,就再判断x2,直到找到可识别的后缀为止,然后把这个可识别的后缀拿去解析。
亡羊补牢,为时未晚的修复方案
后缀验证尽量用白名单的方式,这样就算用不存在的后缀名,也绕不过去。
2、配置问题:一招不慎,满盘皆输
1、如果在Apache的conf里有这样一行配置 AddHandler php5-script .php
那只要文件名里包含.php,就算文件名是xx.php.jpg,也会被当成php来执行。
2、如果在Apache的conf里有这样一行配置 AddType application/x-httpd-php .jpg
那就算扩展名是jpg,也会被当成php来执行。
亡羊补牢,为时未晚的修复方案
1、在apache配置文件里,禁止.php.这样的文件执行,配置文件里面加入
<Files~“.(php.|php3.)”>
2、用伪静态解决这个问题,重写类似.php.*这类文件。打开apache的httpd.conf,找到 LoadModule rewrite_module modules/mod_rewrite.so,把#号去掉,重启apache,在网站根目录下建立.htaccess文件,代码如下:
<IfModulemod_rewrite.c>
3、罕见后缀:冷门知识点,拿走不谢
还记得mime.types文件吗?在这个文件里搜索“php”这三个字母,结果如下所示:
:~$ cat /etc/mime.types | grep php
Apache 配置文件里会有.+.ph(p[345]?|t|tml)之类的正则表达式,被当php程序执行的文件名要符合这个正则表达式,也就是说php3,php4,php5,pht,phtml也是可以被解析的。
4、.htaccess文件:小身材,大能量
一般来说,配置文件的作用范围都是全局的,但是 Apache 提供了一种很方便的、可作用于当前目录及其子目录的配置文件—— .htaccess(分布式配置文件)。
要想使.htaccess文件生效,需要两个条件:
一是在Apache的配置文件httpd.conf中写上:
AllowOverrideAll
如果这样写,.htaccess就不会生效:
AllowOverrideNone
二是要加载mod_Rewrite 模块。加载该模块,需要在Apache的配置文件中写上:
LoadModulerewrite_module/usr/lib/apache2/modules/mod_rewrite.so
如果在Ubuntu中,可能还需要执行命令:
sudoa2enmod rewrite
配置完后需要重启 Apache。
.htaccess 文件可以配置很多事情,比如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。但是我们这里只关心.htaccess 文件的一个作用—— MIME 类型修改。
比如在 .htaccess 文件中写入:
AddType application/x-httpd-php .xxx
那这个.htaccess文件所在的目录及其子目录中的后缀为.xxx的文件,就会被Apache当做php文件来解析。
另一种写法是:
<FilesMatch"shell.jpg">
这条语句会让 Apache 把shell.jpg 文件当作 php 文件来解析。
五、lighttpd:小众选手,也有自己的玩法
类似于最上面的Nginx的解析漏洞;
漏洞形式:x.jpg/x.php
六、其他解析漏洞:细节决定成败
在Windows环境下,x.jpg[空格] 或者x.jpg. 这两类文件都是不允许存在的,如果这样命名,Windows会默认除去空格或点。黑客可以抓包修改文件名,在后面加个空格或点,试图绕过黑名单,如果上传成功,最后的点或空格都会被消除,变成可以解析的恶意文件。
PS:以上信息收集于互联网,不保证完全正确哦,如果有错的或者遗漏的,欢迎各位师傅帮忙纠正,谢谢!
```
黑客/网络安全学习包
资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**
**
6.面试题合集
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
更多内容为防止和谐,可以扫描获取~
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************