文件解析

一、文件解析漏洞

使用了低版本的,存在漏洞的web服务器。解析漏洞有以下几种:

IIS 5.x/6.0解析漏洞

目录解析:在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀为后缀的文件夹,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行。

http://www.xxx.com/xx.asp/xx.jpg

文件解析:在IIS6.0下,分号后面的不被解析,也就是说6.0下,分号后面的不被解析,也就是说xx.asp;.jpg将被当做xx.asp解析并执行。http://www.xxx.com/xx.asp;.jpg 在文件改名时也可以尝试 xx.asp;jpg

IIS6.0 默认的可执行文件有asp、asa、cer、cdx四种。

注意:这两个漏洞,是需要在服务器的本地硬盘上确实存在这样的文件或者文件夹,若只是通过web应用映射出来的Url,则是无法触发的。

IIS 7.0/IIS 7.5/ Nginx <0.8.3畸形解析漏洞

在默认Fast-CGI开启状况下,访问以下网址,服务器将把xx.jpg文件当做php解析并执行。可以根据请求 /xx.jpg 和 /xx.jpg/.php 时返回的 Content-type 是否不同来判断是否存在漏洞。

http://www.xxx.com/xx.jpg/notexist.php

修复: php 配置文件中 cgi.fix_pathinfo=0,将不再递归查询路径确认文件的合法性。这个往前递归的功能原本是想解决 /info.php/test 这种url,能够正确解析到 info.php 上。

Nginx <8.03 空字节代码执行漏洞

影响范围:Nginx0.5.,0.6.,0.7 ⇐ 0.7.65, 0.8 ⇐ 0.8.37

访问以下网址,服务器将把xx.jpg文件当做php解析并执行。

http://www.xxx.com/xx.jpg%00.php

Apache解析漏洞

Apache对文件解析是从右到左开始判断解析,如果文件的后缀为不可识别(apache httpd server 的 mime.types 文件里面没有定义), 就再往左判断,解析。 如xx.php.owf.rar,由于Apache无法解析rar和owf后缀,但能够解析php后缀,因此Apache会将xx.php.owf.rar当做php格式的文件进行解析并执行。

访问以下网址,服务器将把xx.php.owf.rar文件当做php解析并执行。

http://www.xxx.com/xx.php.owf.rar

假设图片文件上传的校验逻辑是 先 explode by . 取文件后缀成一个数组,取最后一个 即 jpg, 通过后缀校验(默认不能上传 php 后缀的文件),接着调用 move_uploaded_file 进行文件上传。这样我们访问 www.test.ichunqiu/index.php.jpg 就能执行我们的php 代码。对此 可以在 apache conf 里面写上 deny from all 这样就禁止访问 非 php 后缀的文件。但还是有办法绕过,index.php%00.jpg, 通过后缀判断后 php 5.3 版本以下的 move_uploaded_file 函数会把 %00 后面的截断,保存在服务器路径下的文件名是 index.php

CVE-2013-4547 Nginx解析漏洞

访问以下网址,服务器将把xx.jpg文件当做php解析并执行。

http://www.xxx.com/xx.jpg(非编码空格)\0.php

http://127.0.0.1/a.jpg(非编码空格)\0.php

当我们这样请求的时候,最终导致nginx认为此次请求的后缀名为php,通过配置,会传给fastcgi进行处理,而fastcgi在查找文件的时候被\0截断,最终取到"a.jpg(非编码空格)"文件(注:Linux下php-fpm默认限制的后缀名为php,如未取消限制,访问将出现access denied。测试想要查看执行结果,需修改php-fpm.conf中的security.limit_extensions为空,即允许任意后缀名文件作为php解析。)

常规利用中如果想触发代码执行,条件为可上传带空格的文件到服务器,并且服务器存储的时候也需要保留空格,而大多数情况下,web应用在处理上传文件时,都会将文件重命名,通过应用自身添加后缀,或者对后缀名去掉特殊字符后,做类型判断。故在 linux 环境时是比较鸡肋的漏洞。但根据windows读取文件时的特点,即文件系统api创建文件名或查找文件名时,默认会去掉文件名后的空格,再执行操作。此时我们可以直接上传不带空格的文件,当 fast-cgi 调用windows api 查找文件时,最终去找的是不带空格的文件,漏洞就可以被成功触发。

使用.htaccess将任意文件作为可执行脚本解析

如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:

SetHandler application/x-httpd-php

这将把目录下的所有后缀为jpg的文件当做可执行的php脚本进行解析并执行。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直...
    付出从未后悔阅读 1,287评论 0 4
  • 1.什么是解析漏洞 以其他格式执行出脚本格式的效果。 2.解析漏洞产生的条件 1.命名规则 2.搭建平台 3.常见...
    查无此人asdasd阅读 1,966评论 0 3
  • 远看 惊艳 傻笑窃喜暗自喜欢 短暂 遗憾 未看够那一抹容颜 不管 晚安 在梦里遇见 留恋 心间 着急 为难 不知如...
    jetris阅读 185评论 0 5
  • 早上出门买菜,发现天慢慢阴了下来,风凉凉地吹着。 台风又要来了。 生活在沿海地区的人,每年都能感受到几场台风。台风...
    燃燃的小书屋阅读 478评论 0 1
  • 别人的故事千千万万种,而作为千千万万的一个,你将如何书写自己的故事?
    甦眠阅读 125评论 0 0

友情链接更多精彩内容