深入探究:反向代理的攻击面 (下)
字数 1565 2025-08-26 22:11:34
反向代理攻击面深度分析(下)
服务端攻击:请求错误路由
Nginx路径遍历漏洞(例子2)
漏洞原理:
- Nginx的
location规则匹配前缀/to_app时,会匹配任何以/to_app开头的路径 - 代理规则会将匹配后的剩余部分与
proxy_pass指定的路径拼接 - 通过构造特殊路径可实现目录遍历
配置示例:
location /to_app {
proxy_pass http://server/any_path/;
}
攻击方法:
GET /to_app../other_path HTTP/1.1
处理流程:
- Nginx匹配
/to_app前缀 - 提取剩余部分
../other_path - 与
proxy_pass拼接为http://server/any_path/../other_path - 后端服务器解析后实际访问
http://server/other_path
Haproxy绝对URI绕过(例子3)
漏洞原理:
- Haproxy不支持绝对URI格式的请求
- 但会直接转发此类请求到后端服务器
- 可绕过基于Host头的路由限制
配置示例:
frontend http-in
acl host_example1 hdr(host) -i example1.com
use_backend example1_backend if host_example1
backend example1_backend
server server1 192.168.78.1:9999 maxconn 32
攻击方法:
GET http://unsafe-value/path/ HTTP/1.1
Host: example1.com
特殊案例:
- Apache某些版本会从
ProxyPass解析提取主机值 - 可构造
GET @evil.com HTTP/1.1实现SSRF攻击
客户端攻击
浏览器路径处理差异
各浏览器特性:
- Chrome/IE:不解码
%2f,不规范化/path/anything/..%2f../ - Firefox:旧版本不做URL解码,新版类似Chrome
- Safari:不处理URL编码,直接发送
/path/%2e%2e/another_path/ - IE:对本地地址不处理路径
标头修改滥用攻击
案例场景:
- Nginx代理Tomcat后端
- Tomcat默认设置
X-Frame-Options: deny /iframe_safe/路径需要iframe访问,Nginx配置删除该标头
配置示例:
location /iframe_safe/ {
proxy_pass http://tomcat_server/iframe_safe/;
proxy_hide_header "X-Frame-Options";
}
location / {
proxy_pass http://tomcat_server/;
}
攻击方法:
<iframe src="http://nginx_with_tomcat/iframe_safe/..;/any_other_path">
攻击原理:
- 浏览器不规范化路径
- Nginx匹配
/iframe_safe/规则 - Tomcat解析
..;/为路径参数 - 绕过X-Frame-Options限制,导致点击劫持
缓存相关攻击
缓存工作机制
关键点:
- 缓存基于主机头和路径
- 检查
Cache-Control和Set-Cookie标头 Set-Cookie存在则不缓存Cache-Control决定缓存策略:no-cache, no-store, must-revalidate:禁止缓存public, max-age=31536000:允许缓存
Web缓存欺骗攻击
案例场景:
- Nginx强制缓存Tomcat的
/images目录 - 忽略后端
Cache-Control标头
配置示例:
location /images {
proxy_cache my_cache;
proxy_pass http://tomcat_server;
proxy_cache_valid 200 302 60m;
proxy_ignore_headers Cache-Control Expires;
}
攻击方法:
攻击流程:
- 受害者访问恶意URL
- Nginx匹配
/images规则并转发 - Tomcat处理
/index.jsp返回敏感数据 - Nginx缓存响应
- 攻击者获取缓存中的敏感信息
缓存中毒攻击
案例场景:
- Nuster(Haproxy缓存代理)缓存
/img/目录 - Web应用存在self-XSS漏洞
配置示例:
nuster cache on
nuster rule img ttl 1d if { path_beg /img/ }
攻击方法:
/img/..%2faccount/attacker/
攻击流程:
- 构造特殊URL匹配缓存规则
- 后端返回XSS响应
- 代理服务器缓存XSS响应
- 其他用户访问时触发XSS
防御建议
-
路径规范化:
- 实现统一的路径规范化标准
- 严格验证路径中的特殊字符
-
缓存策略:
- 避免过度宽松的缓存规则
- 对敏感内容严格设置
Cache-Control - 不要忽略后端的安全标头
-
标头处理:
- 谨慎修改安全相关标头
- 对修改标头的规则进行严格测试
-
代理配置:
- 了解不同代理服务器的特性差异
- 测试边界条件下的代理行为
-
持续监控:
- 监控异常的代理行为
- 定期审计代理配置规则