刷题记录:[V&N2020 公开赛]TimeTravel
题目复现链接:https://buuoj.cn/challenges
参考链接:2020 年 V&N 内部考核赛 WriteUp
V&N公开赛2020 writeup
httpoxy
https://httpoxy.org/
HTTPOXY漏洞说明
利用条件:
- 代码以cgi模式运行,其中使用环境变量
HTTP_PROXY
- 信任 HTTP 客户端
HTTP_PROXY
并将其配置为代理 - 在请求处理程序中使用的该客户端发出HTTP(与HTTPS相对)请求
受影响范围
Language | Environment | HTTP client |
---|---|---|
PHP | php-fpm mod_php |
Guzzle 4+ Artax |
Python | wsgiref.handlers.CGIHandler twisted.web.twcgi.CGIScript |
requests |
Go | net/http/cgi | net/http |
Guzzle>=4.0.0rc2,<6.2.1
版本受此影响
漏洞原因
在CGI(RFC 3875)的模式的时候, 会把请求中的Header, 加上HTTP_ 前缀, 注册为环境变量, 所以如果你在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量, 于是getenv("HTTP_PROXY")就变成可被控制的了. 那么如果你的所有类似的请求, 都会被代理到攻击者想要的地址,之后攻击者就可以伪造,监听,篡改你的请求了...
利用
在vps上创建./api/eligible
,内容是{"success":true}
,可以用php CLI SAPI 提供的内置的Web服务器,php -S 0:2333
。然后携带Proxy
头访问