Django 默认配置下,如果匹配上的 URL 路由中最后一位是 /,而用户访问的时候没加 /,Django 默认会跳转到带 / 的请求中。(由配置项中的 django.middleware.common.CommonMiddleware、APPEND_SLASH 来决定)。
在 path 开头为 //example.com 的情况下,Django 没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意 URL 跳转漏洞。
该漏洞利用条件是目标 URLCONF 中存在能匹配上 //example.com 的规则。
PS: 感觉略有点鸡肋,不过也看如何利用了。红队高人估计低危都能玩出花。
因为vulhub对应的docker file安装时总报错,所以自己手动安装了下
/bin/python -m pip install --upgrade pip
pip install django==2.0.7 -i https://pypi.tuna.tsinghua.edu.cn/simple
app.py 文件参考 vulhub的文件即可,服务器上用supervisctl来部署应用
supervisord配置文件参考
[program:django_url]
autostart=true
autorestart=true
startsecs=10
startretries=2000
command=/root/virtualenvs/py3710/bin/python app.py runserver 0.0.0.0:8070
directory=/root/sources/CVE-2018-14574/
升级到最新版