中间件漏洞记录--3

目录

1.Nginx配置文件错误导致的解析漏洞

漏洞原理

1> 环境配置

2> 访问环境自带的图片马

3> 在其后加上 /xxx.php ,被解析为php执行 

4> 修复建议

2.Nginx 文件名逻辑漏洞(CVE-2013-4547)

1> 配置环境

2> 搭建成功

3> 上传图片马,抓包,给后缀加一个空格

4> 然后抓一个上传图片的访问包,, /uploadfiles/1.gif...php

5> 再放出去,就成功解析

修复建议

3.Nginx 配置错误导致漏洞(三个)

配置环境

(1) CRLF注入漏洞

(2)目录穿越

漏洞原理

可以穿越到根目录

(3) add_header被覆盖

漏洞原理


1.Nginx配置文件错误导致的解析漏洞

漏洞原理

这一漏洞是由于Nginx中php配置不当而造成的,与Nginx版本无关

同IIS 7.0/7.5 ,其实是PHP CGI漏洞,再php配置文件中,有一个配置选项:chi.fi:x_pathinfo 。这个选项在很多版本中是默认开启的,比如在访问http://www.xxx.com/x.jpg/xx.php,xx.php是不存在的,所以就会向前递归解析,但是再获取文件名后,它检测到是.php结尾的,所以就直接交给fastcgi去处理,所以最后找到jpg文件,也会当作php去解析

1> 环境配置

漏洞环境:docker+vulhub

这里会有可能拉取失败,是因为那是在国外

先创建加速 vim /etc/docker/daemon.json,把下面这段写进去

再重启docker 

sudo service docker restart

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"],
"insecure-registries": ["127.0.0.1:5000"]
}
cd vulhub/nginx/nginx_parsing_vulnerability
docker-compose up -d

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx版本跟漏扫的不一样

访问,这就搭建成功了

nginx版本跟漏扫的不一样 nginx常见漏洞_php_02

2> 访问环境自带的图片马

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx_03

3> 在其后加上 /xxx.php ,被解析为php执行 

nginx版本跟漏扫的不一样 nginx常见漏洞_中间件_04

4> 修复建议

1.配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序。
2.或如果需要使用到cgi.fix_pathinfo这个特性(例如:Wordpress),那么可以禁止上传目录的执行脚本权限。 或将上传存储的内容与网站分离,即站库分离。
3.或高版本PHP提供了security.limit_extensions这个配置参数,设置security.limit_extensions = .php

2.Nginx 文件名逻辑漏洞(CVE-2013-4547)

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
 

1> 配置环境

docker+vulhub

cd vulhub/nginx/CVE-2013-4547

docker-compose up -d

会有一个警告,让执行这个
docker-compose build

2> 搭建成功

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx_05

这个环境是黑名单验证,我们无法上传php后缀的文件,需要利用CVE-2013-4547。我们上传一个“1.gif ”,注意后面的空格:

3> 上传图片马,抓包,给后缀加一个空格

nginx版本跟漏扫的不一样 nginx常见漏洞_php_06

4> 然后抓一个上传图片的访问包,, /uploadfiles/1.gif...php

在Hex 里将三个2e 改成这样

nginx版本跟漏扫的不一样 nginx常见漏洞_安全_07

5> 再放出去,就成功解析

nginx版本跟漏扫的不一样 nginx常见漏洞_php_08

Note:该漏洞不受cgi.fix_pathinfo影响,当其为0时,依旧解析,在Windows上有所限制。

修复建议

1. 设置security.limit_extensions = .php
2. 或升级Nginx

3.Nginx 配置错误导致漏洞(三个)

配置环境

docker+vulhub

cd vulhub/nginx/insecure-configuration

docker-compose up -d

(1) CRLF注入漏洞

Nginx会将$uri进行解码,导致传入%0a%0d即可引入换行符,造成CRLF注入漏洞。

错误的配置文件示例(原本的目的是为了让http的请求跳转到https上)

抓个包

http://192.168.129.129/%0aX-XSS-Protection:%200%0a%0d%0a%0d%3Cimg%20src=1%20οnerrοr=alert(/xss/)%3E

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx版本跟漏扫的不一样_09

配合xss

nginx版本跟漏扫的不一样 nginx常见漏洞_安全_10

(2)目录穿越

漏洞原理

        Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。
错误的配置文件示例(原本的目的是为了让用户访问到C:/WWW/home/目录下的文件)

location /files {
    autoindex on;
    alias c:/WWW/home/;
 }

可以穿越到根目录

nginx版本跟漏扫的不一样 nginx常见漏洞_php_11

(3) add_header被覆盖

漏洞原理

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

正常访问时,scp头

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx_12

因为/test2中的location中又添加了X-Content-Type-Options头,导致父块中的防止xss的csp头等add_header全部失效。

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx_13

然后这里就可以执行xss了

再然后我没成功。。。

nginx版本跟漏扫的不一样 nginx常见漏洞_nginx版本跟漏扫的不一样_14