iwebsec靶场 解析漏洞通关笔记2-Nginx解析漏洞
目录
PHP CGI漏洞
1.产生原因
2.产生条件
第02关 Nginx解析漏洞
1.打开靶场
2.iwebsec靶场渗透配置
(1)确保nginx版本可以解析php
(2)确保cgi.fix_pathinfo配置正确
3.渗透分析
4.渗透实战
PHP CGI漏洞
1.产生原因
当php.ini中 cgi.fix_pathinfo = 1配置开启时,会产生解析漏洞
http://x.x.x.x:8000/parse/index.jpg/x.php时,如果x.php不存在,PHP会递归向前解析,如果index.jpg存在就会把index.jpg当做PHP解析,造成了解析漏洞.
2.产生条件
(1) cgi.fix_pathinfo = 1
(2)IIS 7.0/IIS 7.5/Nginx <0.8.03
第02关 Nginx解析漏洞
1.打开靶场
如下所示,打开靶场的解析漏洞,如下红框处的02 Nignx 解析漏洞关卡
http://iwebsec.com:81/
网址为
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/parse/02.php
打开后如下所示,根据提示,本关卡为Nginx的解析漏洞。
2.iwebsec靶场渗透配置
(1)确保nginx版本可以解析php
首先确保nginx版本号有此PHP-CGI漏洞,其次要确认nginx可以解析php文件
在iwebsec靶场的实践中,发现此靶场的8000启动nginx服务功能不全,不支持解析php。在nginx的根目录下,存在一个文件叫做php.php,内容是获取服务器php的敏感信息。
但是在访问http://192.168.71.151:8000/php.php文件时,提示无法解析。
在配置的过程中,查看nginx的php配置文件,如下所示
不过在iwebsec靶场的容器中,查看9000端口判断是否启动
netstat -ano|grep 9000
却发现9000端口根本就没有启动。于是需要通过php-fpm启动9000端口,如下所示
service php-fpm restart
启动后如下所示,确认9000端口已经启动
接下来将php-fpm加入到开机自动启动
chkconfig php-fpm on
配置完毕后再次访问php.php,如下所示已经可以正常解析php文件
(2)确保cgi.fix_pathinfo配置正确
首先查找php.ini文件,
然后修改配置确保cgi.fix_pathinfo开启,如果没有开启的话将注释删掉,保证cgi.fix_pathinfo=1,如下所示
3.渗透分析
iwebsec靶场的nginx根目录为/usr/share/nginx/html/
在/usr/share/nginx/html/parse/目录下存在一个index.jpg,浏览器访问如下所示
http://192.168.71.151:8000/parse/index.jpg
其实这个index.jpg是一个图片马,打开文件查看可以发现在文件的尾部有展示php信息的脚本,如下所示。
基于此,在访问http://192.168.71.151:8000/parse/index.jpg/x.php时,由于x.php不存在,PHP会递归向前解析,如果index.jpg存在就会把index.jpg当做PHP解析,造成了解析漏洞。
4.渗透实战
访问如下url地址
http://192.168.71.151:8000/parse/index.jpg/x.php
访问后如下所示
虽然看起来是乱码,但是不断向下滑动,就会发现php的版本号
如上所示,PHP CGI漏洞渗透成功