Awesome-POC/开发框架漏洞/Django 2.0.8 任意URL跳转漏洞 CVE-2018-14574.md
2024-11-06 14:10:36 +08:00

27 lines
983 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Django < 2.0.8 任意 URL 跳转漏洞 CVE-2018-14574
## 漏洞描述
Django 默认配置下,如果匹配上的 URL 路由中最后一位是/,而用户访问的时候没加/Django 默认会跳转到带/的请求中。(由配置项中的 `django.middleware.common.CommonMiddleware``APPEND_SLASH` 来决定)。
在 path 开头为 `//example.com` 的情况下Django 没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意 URL 跳转漏洞。
该漏洞利用条件是目标 `URLCONF` 中存在能匹配上 `//example.com` 的规则。
## 环境搭建
Vulhub 运行如下环境编译及运行一个基于 django 2.0.7 的网站:
```
docker-compose build
docker-compose up -d
```
环境启动后,访问 `http://your-ip:8000` 即可查看网站首页。
## 漏洞复现
访问 `http://your-ip:8000//www.example.com`,即可返回是 301 跳转到 `//www.example.com/`
![image-20220222162748333](images/202202221627404.png)