CVE-2018-14574
Django < 2.0.8 任意URL跳转漏洞(CVE-2018-14574)
1.漏洞影响版本
django.middleware.common.CommonMiddleware在1.11.15之前的Django 1.11.x和2.0.8之前的2.0.x
详见:CVE-2018-14574
2.漏洞危害
任意URL跳转
3.漏洞POC
豆瓣源修改Dockerfile为中pip源为豆瓣源
在pip后加上:-i http://pypi.douban.com/simple --trusted-host pypi.douban.com
cd /root/vulhub/django/CVE-2018-14574 //进入本次复现的漏洞目录
docker-compose build
docker-compose up -d //docker-compose搭建环境
部署成功
图片.png环境启动后,访问http://your-ip:8000即可查看网站首页。
重定向到百度访问http://your-ip:8000//www.example.com,即可返回是301跳转到//www.example.com/:
4.复盘
漏洞出现原因
Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。(由配置项中的django.middleware.common.CommonMiddleware、APPEND_SLASH来决定)。
在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。
该漏洞利用条件是目标URLCONF中存在能匹配上//example.com的规则。
总结
1.python豆瓣源,解决大多数pip安装国内超时问题。
2.第二次提及,涉及到vulhub目录中的py、sh等脚本,一定要:
cat -v Dockerfile
cat -v docker-compose.yml
cat -v [programname]
查看隐藏字符,切勿出现^M隐藏字符
3.dos2unix filename可以清除^M隐藏字符