URL跳转漏洞
当setting中配置了django.middleware.common.CommonMiddleware且APPEND_SLASH为True时漏洞就会触发。即Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。
该漏洞利用条件是目标URLCONF中存在能匹配上//baidu.com的规则。即在path开头为//baidu.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。
参考:Django URL跳转漏洞分析(CVE-2018-14574 ) - 先知社区
复现环境:vulhub
1.开启环境
命令:docker-compose up -d
2.访问网址
127.0.0.1:8000
3.只要在url后加上//想跳转的网页,即可实现跳转
抓包分析一下
发现301
提示301,即跳转到了我们访问的网页
对那些末尾没加/的url自动填补/然后重新发起请求 所以如果在末尾加上了/是不会跳转成功的
4.关闭环境
docker-compose down