利用Vulnhub复现漏洞 - Django 小于 2.0.8 任意URL跳转漏洞(CVE-2018-14574)

Django < 2.0.8 任意URL跳转漏洞(CVE-2018-14574)

    • Vulnhub官方复现教程
      • 漏洞原理
    • 复现漏洞
      • 启动环境
    • 漏洞复现
      • 301状态码

Vulnhub官方复现教程

https://github.com/vulhub/vulhub/blob/master/django/CVE-2018-14574/README.zh-cn.md

漏洞原理

Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。(由配置项中的django.middleware.common.CommonMiddlewareAPPEND_SLASH来决定)。

在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。

该漏洞利用条件是目标URLCONF中存在能匹配上//example.com的规则。

复现漏洞

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/django/CVE-2018-14574

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:三分半
(第一次报红,第二次又三分半,成功)
利用Vulnhub复现漏洞 - Django 小于 2.0.8 任意URL跳转漏洞(CVE-2018-14574)_第1张图片
环境启动后,访问http://your-ip:8000即可查看网站首页。
在这里插入图片描述

漏洞复现

浏览器:手动代理配置,IP:127.0.0.1,端口号为8000
Burp:打开ProxyTab下的Options,添加对8000的监控
利用Vulnhub复现漏洞 - Django 小于 2.0.8 任意URL跳转漏洞(CVE-2018-14574)_第2张图片
访问http://your-ip:8000//www.example.com,即可返回是301跳转到//www.example.com/:
利用Vulnhub复现漏洞 - Django 小于 2.0.8 任意URL跳转漏洞(CVE-2018-14574)_第3张图片

301状态码

301 redirect: 301 代表永久性转移(Permanently Moved)
301表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)

你可能感兴趣的:(渗透)