前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2021-35042Django SQL注入漏洞复现

CVE-2021-35042Django SQL注入漏洞复现

作者头像
亿人安全
发布2022-06-30 15:04:27
1K0
发布2022-06-30 15:04:27
举报
文章被收录于专栏:红蓝对抗
漏洞描述
Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。
组件介绍
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
综合评价

高危,最终造成服务器敏感信息泄露

影响版本
代码语言:javascript
复制
Django 3.2
Django 3.1
安全版本
代码语言:javascript
复制
Django >= 3.2.5
Django >= 3.1.13
漏洞复现
搭建环境
代码语言:javascript
复制
https://github.com/YouGina/CVE-2021-35042
运行(这里为了方便可以提前切换到root用户)
代码语言:javascript
复制
git clone https://github.com/YouGina/CVE-2021-35042.git
cd CVE-2021-35042
初始设置
代码语言:javascript
复制
./setup.sh  #./setup.sh执行之后,docker开启的是数据库服务器
在这一步运行过程中会出现下面这个错误,这个意思是不要以root用户执行,以普通用户即可,不用理会这个报错;
此时数据库服务已经开启
接着把web服务也开启
代码语言:javascript
复制
docker-compose up -d #此时web服务器和数据库服务器均开启
进入web服务容器中
代码语言:javascript
复制
docker exec -it {container_id} /bin/bash #进入web服务器
执行下面这两条命令
代码语言:javascript
复制
python manage.py makemigrations cve202135042
红线框中表示在cve202135042应用目录下的migations的文件下多了一个0001_initial.py的文件,查看这个文件内容,表示我们创建了一个User这个模型类,并且指出这个类的成员属性id,name,以及他们的属性,同时我们了解到djnago在models.py创建模型类,其中一个模型类对应的是一张数据表,但是该命令并没有作用到数据库,这个命令中python manage.py makemigrations是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件0001_initial.py。
接着执行下面这条命令, 这条命令的主要作用就是把上一条的改动作用到数据库也就是执行migrations里面新改动的迁移文件来更新数据库,比如创建数据表,或者增加字段属性
代码语言:javascript
复制
python manage.py migrate
打开以下 URL 以加载示例数据:
代码语言:javascript
复制
http://localhost:8000/load_example_data
然后转到易受攻击的页面
代码语言:javascript
复制
http://localhost:8000/users/
漏洞防御
及时更新到最新版本
链接 : https://www.djangoproject.com/weblog/2021/jul/01/security-releases/
这个漏洞复现因为网络环境问题卡了好久,这里感谢zly师兄的指点,这家伙搭环境比我快多了>_<
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亿人安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞描述
    • Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。
    • 组件介绍
      • Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
        • 综合评价
    • 影响版本
    • 安全版本
    • 漏洞复现
      • 搭建环境
        • 运行(这里为了方便可以提前切换到root用户)
          • 初始设置
            • 在这一步运行过程中会出现下面这个错误,这个意思是不要以root用户执行,以普通用户即可,不用理会这个报错;
              • 此时数据库服务已经开启
                • 接着把web服务也开启
                  • 进入web服务容器中
                    • 执行下面这两条命令
                      • 红线框中表示在cve202135042应用目录下的migations的文件下多了一个0001_initial.py的文件,查看这个文件内容,表示我们创建了一个User这个模型类,并且指出这个类的成员属性id,name,以及他们的属性,同时我们了解到djnago在models.py创建模型类,其中一个模型类对应的是一张数据表,但是该命令并没有作用到数据库,这个命令中python manage.py makemigrations是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件0001_initial.py。
                        • 接着执行下面这条命令, 这条命令的主要作用就是把上一条的改动作用到数据库也就是执行migrations里面新改动的迁移文件来更新数据库,比如创建数据表,或者增加字段属性
                          • 打开以下 URL 以加载示例数据:
                            • 然后转到易受攻击的页面
                            • 漏洞防御
                              • 及时更新到最新版本
                                • 链接 : https://www.djangoproject.com/weblog/2021/jul/01/security-releases/
                                  • 这个漏洞复现因为网络环境问题卡了好久,这里感谢zly师兄的指点,这家伙搭环境比我快多了>_<
                                  相关产品与服务
                                  数据库
                                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档