nginx在使用proxy_pass的时候,需要处理静态文件有时候会这样做:
location /static {
alias /home/uploads/static/;
}
payload:
curl vuln.com/static../requirements.pip
上面如果是两个路径最后都没有带/
或者都带/
则该漏洞不存在。
代理末尾添加/之后,nginx会先对uri进行normalized处理,使用../读取文件会失败,当没有添加/的时候,nginx会把原请求直接转发给后端服务器,所以可以读取成功。