【网络安全 --- web服务器解析漏洞】IIS,Apache,Nginx中间件常见解析漏洞-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一工具及环境准备
以下都是超详细保姆级安装教程缺什么安装什么即可提供镜像工具资源
1-1 VMware 16.0 安装
1-2 Windows server 2003 安装
1-3 pikachu靶场安安装
1-4 凡诺企业管理系统靶场安装
二服务器解析漏洞
服务器解析漏洞算是历史比较悠久了但如今依然广泛存在。在此记录汇总一些常见服务器WEB server的解析漏洞比如IIS6.0、IIS7.5、apache、nginx等方便以后回顾温习。
2-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.做好权限设置限制用户创建文件夹。
2-1-1 www.xxx.com/xx.asp;.jpg
我们演示一个www.xxx.com/xx.asp;.jpg
我们打开凡诺企业管理系统网站靶场安装请看第一部分工具及环境准备
这个首页就是index.asp ,我们复制一份这个index.asp,重命名为show.asp;.jpg 如下
然后浏览器访问 http://192.168.31.208/show.asp;.jpg
发现依然能访问成功这就是一个解析漏洞如果发现asp网站有能上传图片的地方可以使用这种方法上传asp木马程序来绕过验证
2-1-2 www.xxx.com/xx.asp/xx.jpg
原理: 服务器默认会把.asp.asa目录下的文件都解析成asp文件。
浏览器访问 192.168.31.208/xx.asp/index.jpg
我们发现报错了不过报错也正常因为首页肯定包含一些别的代码文件我们把首页移动到了别的目录当然找不到这些包含的路径了所以报错而上图也显示确实找不到一个包含文件但是肯定的是index.jpg当一个asp文件执行了只是执行的时候由于路径问题报错了而已
2-1-3 index.asa | index.cer | index.cdx
IIS6.0 默认的可执行文件除了asp还包含这三种 :
/test.asa
/test.cer
/test.cdx
选一个演示一下我们把首页的index.asp改名字改为index.cer
访问效果如下也能进行访问
cer文件一般是证书文件iis默认也是可以解析的我们来看网站属性
2-2 apache 解析漏洞
漏洞原理
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 方式执行。xx.jpg
示例www.xxxx.xxx.com/test.php.php123
以pikachu靶场为例靶场安装请看第一部分工具及环境准备
比如我们将sql.php改为sql.php.xxxx正常来讲的话是不能解析的但是老版本的apache(apache2.2版本及之前的)是能够正常将这个文件解析为php文件的
我用的是新版本的apache没搭建老版本的所以这个漏洞大家就记住他就行了当然新版本的apache如果配置不当也会引起这个漏洞有兴趣的大家可以去安装一个低版本的apache来玩玩你看新版本的就不解析运行代码了直接把源代码给你看而不是将源代码执行了。以前大家通过黑名单的方式来防御的基本都挂了因为你发现后缀名你随意写
其余配置问题导致漏洞
1如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
2如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg一样能以 php 方式执行。
这两个漏洞不是apache自身的问题而是运维人员进行配置时自己配置的出了问题。
这里就不演示了
修复方案
1.apache配置文件禁止.php.这样的文件执行配置文件里面加入
<Files ~ “.(php.|php3.)”>
Order Allow,Deny
Deny from all
</Files>
2.用伪静态能解决这个问题重写类似.php.*这类文件打开apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so把#号去掉重启apache,在网站根目录下建立.htaccess文件,代码如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .(php.|php3.) /index.php
RewriteRule .(pHp.|pHp3.) /index.php
RewriteRule .(phP.|phP3.) /index.php
RewriteRule .(Php.|Php3.) /index.php
RewriteRule .(PHp.|PHp3.) /index.php
RewriteRule .(PhP.|PhP3.) /index.php
RewriteRule .(pHP.|pHP3.) /index.php
RewriteRule .(PHP.|PHP3.) /index.php
</IfModule>
2-3 nginx解析漏洞
大致原理该漏洞与nginx、php版本无关属于配置不当造成的解析漏洞。
## 当php.ini配置文件中开启了cgi.fix_pathinfo该值默认为1表示开启。看名字大概知道是处理路径用的配置。
## 比如我们上传了一个木马文件web.jpg因为web.php不能上传现在我们想执行这个web.jpg可以如下路径访问
http://192.168.2.104/pikachu/web.jpg/aaa.php## 而目标服务器上没有aaa.php文件本来如果nginx.conf的配置没有问题的话nginx会先去找下这个文件是否存在如果存在在找php解释器来解释执行代码如果不存在nginx会直接返回错误信息说找不到该文件但是如果nginx.conf配置不当会导致nginx把以’.php’结尾的文件交给fastcgi处理也就是说首先nginx看到你路径中要找aaa.php哦原来是php文件nginx不去找这个文件了而是就直接交给了fastcgifastcgi又去找php解释器去处理该路径而php开启了cgi.fix_pathinfo那么php解释器处理这个路径的时候发现没有aaa.php文件那么他会找路径中上一层路径的文件作为aaa.php来运行如是乎就找到了web.jpg将web.jpg当作aaa.php来运行了所以代码被执行看到如下效果
示例我们通过phpstudy来改成nginx运行 pikachu靶场
fix_pathinfo这个功能参数默认是开启的所以这个漏洞影响也是比较大的我们访问一下phpinfo.php文件看看这个功能是否开启了。
值为1表示开启状态那么就存在这个漏洞
比如我将一个木马文件改为.jpg文件放到pikachu的文件夹下
这个木马文件在文件上传闯关靶场的工具资料里给过需要的看我下面这篇博客下载
然后通过浏览器来访问一下
能看出默认是不能访问的我们只要在路径后面加上一个 /tu.php 就能够按照php来解析了直接就是漏洞。因为图片我们是正常能够上传的上传过去之后如果是nginx来解析的并且开启了cgi.fix_pathinfo功能那么基本上属于被你拿下了。
其他漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php这是上面说的漏洞
www.xxxx.com/UploadFiles/image/1.jpg%00.php #我们试过这个00截断除了apache之外nginx也有这个00截断漏洞,这个导致的效果是1.jpg会被当成php文件来解析。
www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php #也算是00截断的一种
xxx.jpg%00.php (Nginx <0.8.03版本 存在空字节代码执行漏洞)
修复方案
1.修改php.ini文件将cgi.fix_pathinfo的值设置为0;
2.在Nginx配置文件中添加以下代码
if ( $fastcgi_script_name ~ ..*/.*php ) {
return 403;
}
这行代码的意思是当匹配到类似test.jpg/a.php的URL时将返回403错误代码。
2-4 IIS7.x解析漏洞
IIS7.5的漏洞与nginx的类似都是由于php配置文件(php.ini文件)中开启了cgi.fix_pathinfo而这并不是nginx或者iis7.5本身的漏洞都是配置不当引起的。
当安装完成后 php.ini里默认cgi.fix_pathinfo=1对其进行访问的时候在URL路径后添加.php后缀名会当做php文件进行解析漏洞由此产生
php.ini文件配置
虽然通过配置上看我们发现是有这个漏洞的但是实际测试过程中并不是那么简单如下注意下面的示例是用的phpstudy2016版本来演示的win7及以上的系统才行昂win2003不行的勾选iis的时候可能会提示你说你没有尚未安装iis 7/8大家自行安装一下即可。按照这个phpstudy的官网来安装PHP - - phpStudy其中要激活CGI功能别忘了。
你的phpstudy可能会报错
解决方法安装vc9工具
放到我们的win7虚拟机上
安装
一会就提示你安装好了在重启phpstudy即可。如果提示你网站运行端口冲突了我们改个端口即可按照文档的安装和配置我们访问我们的iis网站下面的图片时
根据iis的解析漏洞方式来写如下访问网址
还是报错了要进行如下配置才能看到效果。
找到网站代码存放目录来部署网站
注在进行实际的测试的时候iis并不像nginx似的直接可以利用发现漏洞并没有产生后来发现要将FastCGI的调用情况取消限制如下将对勾去掉。
效果如下
所以你会发现这个漏洞如果想用的话高版本需要进行很多的配置所以一般不会出现这个漏洞
中间件常见解析漏洞就讲到这里下一篇博客文件包含漏洞