Nginx中的解析漏洞整理

在实战中经常遇到nginx,遇到nginx第一反应就是解析漏洞

Nginx中php配置错误导致的解析漏洞

漏洞详情
这一漏洞是由于Nginx中php配置不当而造成的,与Nginx版本无关
Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了

这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项有什么用呢?看名字就知道是对文件路径进行“修理”。何谓“修理”?举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy/ccc.zzz”时,若“/aaa.xxx/bbb.yyy/ccc.zzz”不存在,则会去掉最后的“/ccc.zzz”,然后判断“/aaa.xxx/bbb.yyy”是否存在,若存在,则把“/aaa.xxx/bbb.yyy”当做文件“/aaa.xxx/bbb.yyy/ccc.zzz”,若“/aaa.xxx/bbb.yyy”仍不存在,则继续去掉“/bbb.yyy”,以此类推。

该选项在配置文件php.ini中

新版本的php引入了“security.limit_extensions”,限制了可执行文件的后缀,默认只允许执行.php文件

复现过程
1、 使用docker搭建漏洞环境

2、 执行如下命令,运行环境

docker-compose up -d

3、 浏览器访问http://192.168.247.129/
Nginx中的解析漏洞整理_第1张图片

4.上传一个图片马

5.浏览器访问http://192.168.247.129/uploadfiles/156005c5baf40ff51a327f1c34f2975b.jpg/a.php
下图看到成功执行了php代码,说明存在解析漏洞
Nginx中的解析漏洞整理_第2张图片
6.我们用中国蚁剑去连接
Nginx中的解析漏洞整理_第3张图片
漏洞修复
主要是两个配置文件中配置不当造成的。

​1. 修改配置文件vim /etc/php5/fpm/php.ini

​ 将cgi.fix_pathinfo=1,设置为0

​ 2.修改配置文件vim /etc/php5/fpm/pool.d/www.conf

​ 将security.limit_extensions=,设置为:

​ security.limit_extensions=.php,只允许php文件解析

CVE-2013-4547(文件名逻辑漏洞)

漏洞详情

该漏洞利用了Nginx错误的解析了URL地址,导致可以绕过服务端限制,从而解析PHP文件,造成命令执行的危害。
根据nginx.conf文件中location中的定义,以.php结尾的文件都解析为php。若我们访问的文件名为shell.gif[0x20][0x00].php,该文件名以.php结尾可以被FastCGI接收,FastCGI在读取文件名时被00截断,导致读取的文件名为1.gif[0x20],配合limit_extensions为空即可利用成功。该漏洞利用条件有两个:

1.Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
2.php-fpm.conf中的security.limit_extensions为空,也就是说任意后缀名都可以解析为PHP

简单来说就是我们构造:http://127.0.0.1/test.aaa \0bbb
让Nginx认为文件“file.aaa ”的后缀为“.bbb”。
复现过程
1、 使用docker搭建漏洞环境
2、 执行如下命令,运行环境
docker-compose up -d
3、 浏览器访问http://192.168.247.129:8080/
Nginx中的解析漏洞整理_第4张图片
4.上传个图片马
Nginx中的解析漏洞整理_第5张图片

发现上传成功并返回路径
Nginx中的解析漏洞整理_第6张图片

5.接下来需要构造我们 2.jpg[0x20][0x00].php 来造成Nginx解析漏洞,使我们的test.gif被解析成php
url:http://192.168.247.129:8080/uploadfiles/test.gif%20%20.php
手工更改成下图
Nginx中的解析漏洞整理_第7张图片
选中%00
Nginx中的解析漏洞整理_第8张图片
转发数据包
Nginx中的解析漏洞整理_第9张图片
Nginx中的解析漏洞整理_第10张图片
成功解析!
在这里遇到点小问题,上传纯的图片木马解析能成功(只改变文件后缀)。用php文件+图片合成的木马图片则解析不了。这点还在研究中?为啥!!或者有大佬指点一下

漏洞修复
升级版本

你可能感兴趣的:(web渗透测试,安全,php,nginx,centos)