Nginx 解析漏洞
发布日期:2021-06-29 11:26:35 浏览次数:5 分类:技术文章

本文共 1088 字,大约阅读时间需要 3 分钟。

声明

好好学习,天天向上

漏洞描述

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

但是fastcgi在处理’.php’文件时发现文件并不存在,这时php.ini配置文件中cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。为此这里交由fastcgi处理的文件就变成了’/test.png’。

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

注:限制fpm允许解析的脚本扩展名。此设置可以预防web服务器配置的错误。应当限制fpm仅仅解析.php扩展名,阻止恶意用户使用其他扩展名运行php代码。默认值:.php

影响范围

复现过程

这里使用1版本

使用vulhub

cd /app/vulhub-master/spring/CVE-2016-4977

使用docker启动

docker-compose builddocker-compose up -d

环境启动后,访问http://your-ip:8080

http://192.168.239.129:8080

访问如下URL,可以看到是正常的图片

http://192.168.239.129/uploadfiles/nginx.png

在这里插入图片描述

其实这是个图片马,如何让图片中的代码执行,访问下述URL即可,即可把图片马解析

http://192.168.239.129/uploadfiles/nginx.png/.php

在这里插入图片描述

关闭镜像(每次用完后关闭)

docker-compose down

docker-compose常用命令

拉镜像(进入到vulhub某个具体目录后)

docker-compose builddocker-compose up -d

镜像查询(查到的第一列就是ID值)

docker ps -a

进入指定镜像里面(根据上一条查出的ID进入)

docker exec -it ID /bin/bash

关闭镜像(每次用完后关闭)

docker-compose down

转载地址:https://blog.csdn.net/zy15667076526/article/details/111414021 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Nginx 配置错误导致漏洞
下一篇:H2 Database Console 未授权访问

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月21日 09时38分19秒