文件解析常见漏洞总结,从零基础到精通,收藏这篇就够了!

文件解析漏洞,说白了就是网站管理员骚操作或者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:以上信息收集于互联网,不保证完全正确哦,如果有错的或者遗漏的,欢迎各位师傅帮忙纠正,谢谢!
```

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

猜你喜欢

转载自blog.csdn.net/Javachichi/article/details/146984861
今日推荐