漏洞复现----Nginx解析漏洞
# Nginx 解析漏洞
# 一、版本信息
- Nginx 1.x 最新版
- PHP 7.x 最新版
# 二、复现
- 环境:Ubuntu18 (靶机),Win10 (攻击机)
- Ubuntu 中进入到 Nginx 文件夹中,
docker-compose up -d
启动环境 - 在攻击机中访问靶机地址
1.1.1.1/index.php
- 选择一个图片,使用文本编辑器在打开图片,最后一行加入一句话木马 (图片不宜过大)
- 选择上传后,访问图片地址,并在图片地址
http://IP/uploadfiles/图片名称.jpg
后面拼上/.php
或者一个不存在的 php 文件。
- 删除镜像
docker-compose down
# 三、分析
- 该漏洞是由于配置不当引起。
- 由于错误配置,Nginx 首先会把
.php
结尾的文件交给fastcgi
处理,所以才能在图片路径后面拼接一个不存在的 php 文件。 - 但是
fastcgi
在处理这个不存在的文件时,会受到php.ini
配置文件中cgi.fix_pathinfo=1
这个选项的影响 (这项配置用于修复路径,如果当前路径不存在则采用上层路径),到上一级中执行解析 (也就是在靶机中/uploadfiles/d9d99c01b2d14ca7b00c65362f88c7b7.png/aa.php
,fastcgi
发现aa.php
文件不存在会对/uploadfiles/d9d99c01b2d14ca7b00c65362f88c7b7.png
进行解析,d9d99c01b2d14ca7b00c65362f88c7b7.png
文件是真实存在的),但是解析时候又受到php-fpm.conf
中的配置选项security.limit_extensions
的影响,只有在此选项为空的时候才能指定.png
等其他文件转为代码解析,如果此选项后面设置参数,那么解析的时候就按设置的参数进行解析,比如:
1 |
|
# 参考链接:
漏洞复现----Nginx解析漏洞
https://rofgd.github.io/2022/10/14/漏洞复现---Nginx解析漏洞/