前言
一些常见服务器(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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号