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

目录

Django介绍

URL跳转漏洞介绍

Django任意URL跳转漏洞介绍

环境搭建

防御方法


前段时间在面试时,问到了URL跳转漏洞,我没有回答好,下午把URL跳转漏洞学习了,发现也不难,看来还需要学习的东西很多呀,这里我再vulhub靶场中找到一个Django的URL跳转漏洞,刚好来练习一下

Django介绍

Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。以下内容简要介绍了如何使用 Django 实现一个数据库驱动的网络应用。

URL跳转漏洞介绍

URL跳转漏洞,也叫开放重定向漏洞(open redirect) 。

WE-601对该漏洞的描述为:http 参数可能包含一个 URL 值,并可能导致 Web 应用程序将请求重定向到指定的 URL。

通过修改恶意站点的 URL 值,攻击者可能成功发起网络钓鱼诈骗并窃取用户凭据。

简单说来就是参数可控导致的漏洞产生。

可能产生的位置

- **用户登录、统一身份认证、认证完进行跳转。**
- **用户分享、收藏内容跳转。**
- **跨站点认证、授权后。**
- **站内其它链接跳转。**
- **注册、注销、修改密码等。**
- **账户切换、保存设置。**

产生的原因:

1. 代码层忽视URL跳转漏洞,或不知道/不认为这是个漏洞;
2. 代码层过滤不严,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
3. 对传入参数操作(剪切/拼接/重组)和判断不当,导致绕过;
4. 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性;
5. [服务器]/[容器]特性、浏览器等对标准URL协议解析处理等差异性导致被绕过;

Django任意URL跳转漏洞介绍

Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。

(由配置项中的django.middleware.common.CommonMiddlewareAPPEND_SLASH来决定)。

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

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

环境搭建

移动到如下目录中:

/opt/vulhub-master/django/CVE-2018-14574

使用docker-compose up -d来拉取环境

然后我们可以在浏览器中访问一下

可以看到页面打印了hello word,那么下面我们可以传入一个外部URL试试看

可以看到没有反应,但是当我们去除掉www.baidu.com后面的/后

成功的跳转到了百度页面,这里如果我们将跳转的页面设置为一个钓鱼的页面,发送给其他人,是不是就可以成功的获取到其他人的敏感信息了

漏洞产生的原因上面也言简意赅的说明了,在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。

防御方法

1、最有效的方法之一就是使用白名单严格控制将要跳转的域名,如:

function checkURL ( sURL) {
return(/^(https?:\/\/)?[\w-.]+.(yourDomainA|yourDomainB|yourDomainC).com($|\/|)/i).test(sUrl)||(/^\w+$/i).test(sUrl)||(/^[\/][^\/]/i).test(sUrl)? true : false;}

2、限制referer、添加token,这样可以避免恶意用户构造跳转链接进行散播;

参考文章:

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

URL跳转(开放重定向)挖掘技巧及实战案例全汇总-腾讯云开发者社区-腾讯云

https://github.com/djytmdj/Network-security-study-notes

相关推荐
安的列斯凯奇14 分钟前
SpringBoot篇 单元测试 理论篇
spring boot·后端·单元测试
架构文摘JGWZ44 分钟前
FastJson很快,有什么用?
后端·学习
BinaryBardC44 分钟前
Swift语言的网络编程
开发语言·后端·golang
邓熙榆1 小时前
Haskell语言的正则表达式
开发语言·后端·golang
大懒猫软件1 小时前
如何运用python爬虫获取大型资讯类网站文章,并同时导出pdf或word格式文本?
python·深度学习·自然语言处理·网络爬虫
旭华智能2 小时前
智慧脚下生根,智能井盖监测终端引领城市安全新革命
安全
XianxinMao2 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
专职4 小时前
spring boot中实现手动分页
java·spring boot·后端
Ciderw4 小时前
Go中的三种锁
开发语言·c++·后端·golang·互斥锁·
查理零世4 小时前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法