Nginx 配置错误导致漏洞(insecure-configuration)复现

#免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关。


目录

漏洞简介

环境搭建

CRLF注入漏洞

(1)漏洞描述

(2)漏洞复现

(3)修复建议

目录穿越漏洞

(1)漏洞描述

(2)漏洞复现

(3)修复建议

目录遍历漏洞

(1)漏洞描述

(2)漏洞利用

(3)修复建议

add_header被覆盖

(1)漏洞描述

(2)漏洞利用

(3)修复建议

参考资料


漏洞简介

Nginx 配置错误导致漏洞有三种,分别是:(1)CRLF注入漏洞; (2)目录穿越遍历漏洞 (3)add_header被覆盖

环境搭建

本次的环境使用vulhub靶场,在ubuntu打开vulhub中的nginx/insecure-configuration目录,拉取镜像。并且查看镜像环境。

docker-compose up -d
docker ps

CRLF注入漏洞

(1)漏洞描述

回车换行(CRLF)注入攻击是一种当用户将CRLF字符插入到应用中而触发漏洞的攻击技巧。CRLF字符(%0d%0a)在许多互联网协议中表示行的结束,包括HTML,该字符解码后即为\ r\ n。这些字符可以被用来表示换行符,并且当该字符与HTTP协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,包括http请求走私(HTTP RequestSmuggling)和http响应拆分(HTTP Response Splitting)。

查看Nginx文档,可以发现有三个表示uri的变量: 1.$uri 2.$document_uri 3.$request_uri 1和2表示的是解码以后的请求路径,不带参数;3表示的是完整的URI(没有解码)

Nginx会将$uri进行解码,导致传入%0d%0a即可引入换行符,造成CRLF注入漏洞。 错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

location / { return 302 https://$host$uri; }

 

(2)漏洞复现

1.访问一个页面(http:your-ip:8080),进行抓包.

2.注入CLRF符号,并且设置一段XSS代码

3.注入CRLF符号,自定义cookie内容

(3)修复建议

修改配置文件如下:

location / {
        return 302 https://$host$request_uri;
}

目录穿越漏洞

(1)漏洞描述

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

location /files {

        alias /home/;

}

 

(2)漏洞复现

1.访问nginx站点(此处为默认站点)的files目录。

2.访问files…/,如果返回目录信息,说明存在目录穿越漏洞。

(3)修复建议

只需要保证 location alias 的值都有后缀 / 或都没有 / 这个后缀

目录遍历漏洞

(1)漏洞描述

当Nginx配置文件中,autoindex 的值为on时,将造成一个目录遍历漏洞。

(2)漏洞利用

由于使用的是vulhub靶场,为了方便就不添加目录了,但是当autoindex 的值为on时,将会造成如下图所示的目录遍历。

(3)修复建议

autoindex 的值为置为 off

add_header被覆盖

(1)漏洞描述

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。 如下列代码,整站(父块中)添加了CSP头:

add_header Content-Security-Policy "default-src 'self'";
add_header X-Frame-Options DENY;

location = /test1 {
    rewrite ^(.*)$ /xss.html break;
}

location = /test2 {
    add_header X-Content-Type-Options nosniff;
    rewrite ^(.*)$ /xss.html break;
}

 

(2)漏洞利用

1.正常情况下访问:http:your-ip:8082/test1。

在test1中访问,CSP头使用的是父块的CSP。

2.访问:http:your-ip:8082/test2,发现csp头消失。

访问test2后,CSP头则是使用的子块定义的。

3.后续可以插入xss语句,但是我失败了,查看了很多教程,结果都和我一样,据说要用旧版的浏览器才可以弹窗,有无大佬可以指点指点!

(3)修复建议

点我查看

参考资料

nginx常见漏洞

vulhub靶场漏洞环境介绍

nginx漏洞汇总

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值