Web服务解析漏洞(iis、appache、nginx)


前言

一些常见服务器(WEB server)的解析漏洞(IIS6.0、IIS7.5、apache、nginx)。

1、iis解析漏洞

1.1 IIS5.x-6.x解析漏洞

使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句一般为asp;该

解析漏洞也只能解析asp文件,而不能解析aspx文件。win7-win10中多为iis7.x-8.x了,版本比较高。

目录解析(6.0)

形式:www.xxx.com/xx.asp/xx.jpg

原理: 服务器默认会把.asp,.asa目录下的文件都解析成asp文件。

文件解析

形式:www.xxx.com/xx.asp;.jpg

原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

解析文件类型

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

/test.asa

/test.cer

/test.cdx

修复方案

1.目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传xx.asp;.jpg类型的文件名。

2.做好权限设置,限制用户创建文件夹。

1).目录解析:新建一个xx.asp文件夹, 服务器默认会把.asp,.asa目录下的任意后缀名的文件都解析成asp文件。这个我们昨天演示过了的。这个有个前提条件,就是用户对目录有修改权限。如果我们通过抓包工具抓包,发现其中的目录是可以通过请求来改变的,那么这种情况下,很有可能成功。

访问网站目录下的111.jpg木马文件,访问失败,将该文件复制到xxx.asp目录下,后可以正常访问:

2).文件解析:形式:www.xxx.com/xx.asp;.jpg,也就是说,如果我们将某个asp文件改为xx.asp;.jpg,那么iis能够对这个文件类型进行解析。比如我们将网站的index.asp文件改为index.asp;.jpg;

3).解析文件类型

IIS6.0 默认的可执行文件除了asp还包含这三种 :也都是当作脚本来解析,一般开发人员做黑名单的时候,

不会将如下三个后缀名文件加入到黑名单,导致漏洞

/test.asa

/test.cer

/test.cdx

将网站的index.asp文件改为index.cer:

cer文件一般是证书文件,iis默认也是可以解析的,我们来看网站属性

1.2 IIS7.5解析漏洞

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

https://www.xp.cn/a.php/182.html ,当安装完成后, php.ini里默认cgi.fix_pathinfo=1,对其进行访问的时候,在URL路径后添加.php后缀名会当做php文件进行解析,漏洞由此产生;

Php.ini文件配置:

虽然通过配置上看,我们发现是有这个漏洞的,但是实际测试过程中,并不是那么简单,下面的示例是用的phpstudy2016版本来演示的,win7及以上的系统才行,win2003不行的,勾选iis的时候,可能会提示没有尚未安装iis 7/8,大家自行安装一下即可。按照这个phpstudy的官网来安装:https://www.xp.cn/a.php/182.html

按照文档的安装和配置,我们访问我们的iis网站下面的图片时:

根据iis的解析漏洞方式来写如下访问网址,还是报错了,要进行如下配置才能看到效果。

注:在进行实际的测试的时候,iis并不像nginx似的直接可以利用,发现漏洞并没有产生,后来发现要设置FastCGI为关闭,该项好像是用来处理数据文件

2 、appache解析漏洞

漏洞原理

Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如

test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把

xx.php.owf.rar解析成php。

漏洞形式

www.xxxx.xxx.com/test.php.php123

这个漏洞当时通杀了所有的apache搭建的网站。

其余配置问题导致漏洞

(1)如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里

包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。

(2)如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使

扩展名是 jpg,一样能以 php 方式执行。

2.1 Apache HTTPD 换行解析漏洞(CVE-2017-15715)

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

编译及运行漏洞环境:

docker-compose build

docker-compose up -d

启动后Apache运行在http://your-ip:8080。上传一个名为1.php的文件,被拦截:

在1.php后面插入一个 (注意,不能是 ,只能是一个 ),不再拦截:

访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:

2.2 appache httpd 多后缀解析漏洞

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:

AddType text/html .html

AddLanguage zh-CN .cn

其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。

以上就是Apache多后缀的特性。如果运维人员给.php后缀增加了处理器:

AddHandler application/x-httpd-php .php

那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

运行如下命令启动一个稳定版Apache,并附带PHP 7.3环境:docker-compose up -d

环境运行后,访问http://your-ip/uploadfiles/apache.php.jpeg即可发现,phpinfo被执行了,该文件被解析为php脚本。

http://your-ip/index.php中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为xxx.php.jpg或xxx.php.jpeg的文件,利用Apache解析漏洞进行getshell。


3、nginx解析漏洞

该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。直接执行docker-compose up -d启动容器,无需编译。

访问http://192.168.1.18/uploadfiles/nginx.png(把图片(图片马)下载下来)和http://192.168.1.18/uploadfiles/nginx.png/.php即可查看效果。(图片马中有php木马,在访问命令里加.php可直接访问木马程序)正常显示:

增加/.php后缀,被解析成php文件:

nginx木身存在解析漏洞: xx.php/xx.jpg,这个xx.php文件夹下面的任意文件类型都会当作php文件来解析。此时,如果php.ini配置文件开启了一个选项,叫做fix_pathinfo=1,那么会导致的问题是:当我们访问 wnw.x.com/phpinfo.jpg/1.php,如果找不到1.php文件,将上一级文件phpinfo.jpg当作php文件类型执行。访问这个图片马后,在url后面添加/.php,就将图片马当作php文件执行,就会访问图片马中php函数内容:当把fix_pathinfo=1改为fix_pathinfo=0后,nginx解析漏洞就修复了;正常修复该漏洞需要升级nginx版本或php版本;

展开阅读全文

页面更新:2024-04-29

标签:漏洞   后缀   文件类型   版本   上传   发现   服务器   文件   图片   网站

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top