Django1.11.4 XSS漏洞复现(CVE-2017-12794)

3 篇文章 0 订阅
3 篇文章 0 订阅
文章详细介绍了DjangoWeb框架在1.11.5版本中对1.11.4的XSS漏洞进行的修复,该漏洞存在于500错误页面。修复主要涉及关闭autoescape全局转义和特定条件下的force_escape过滤报错。作者通过复现过程展示了如何利用payload触发XSS,并解释了Django在处理错误时的内部机制。
摘要由CSDN通过智能技术生成

        Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django 是一个开放源代码的 Web 应用框架,由 Python 写成。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。
        新版本1.11.5,修复了1.11.4中500页面中可能存在的一个XSS漏洞。

开启环境


docker启动vluhub中的CVE-2017-12794的漏洞环境。(这里就不叙述怎么搭建vulhub)

使用命令docker-compose up -d 启动

查看端口docker-compose ps 查看端口

下载git clone https://github.com/django/django.git

查看官方修复发布的1.11.5与1.11.4有什么不同

发现关闭了autoescape全局转义(红色为1.11.4),以及在{% ifchanged frame.exc_cause %}{% if frame.exc_cause %}的条件句中,1.11.4同时也关闭了force_escape的过滤报错。

查看报错函数是进行如何处理的

 首先定义了dj错误类型数组,以及获取了db的错误类型,判断出现错误类型是否在db的错误类型中,如果存在,则将dj.exc.value.__cause__=exc.value (图上没有可能是因为在1.11.5版本下),直接将错误的值传给__cause__,而在500页面中会输出__cause__的值。

那么我们直接开始复现

http://127.0.0.1:8000/create_user/?username=%3Cscript%3Ealert(%27nncx%27)%3C/script%3E

再次执行此payload可以出发xss漏洞。

 复现成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值