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.CommonMiddleware、APPEND_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

相关推荐
Gopher_HBo10 小时前
Go CPU 剖析的"地基":信号、CAS、写屏障、无锁环形缓冲
后端
panbook10 小时前
从0到1实现一个分布式时序数据库(二):写入成功之后,如何用 WAL 找回数据
后端
Swot11 小时前
上传一张 4MB 图片,我先后撞上了三层请求体限制
后端
IT_陈寒11 小时前
Vite的HMR把我整不会了:一个生产环境的热更新坑
前端·人工智能·后端
OLRainM11 小时前
实习复盘:大模型网关渠道质量评分实战(二)—— 报错了到底算谁的锅?流式归因与 Token 补账踩过的 8 个真坑
后端
用户9562562542911 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
梦想恒远11 小时前
Spring Boot + LangChain4j 统计 token 成本:ChatModelListener 实测与单价口径
spring boot·后端
威哥爱编程11 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程12 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801112 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化