Django SQL注入漏洞分析(CVE-2022-28346)

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

漏洞简介

Django 在2022年发布的安全更新,修复了在 QuerySet 的 annotate(), aggregate(), extra() 等函数中存在的 SQL 注入漏洞。

影响版本

2.2<= Django Django <2.2.28 3.2<= Django Django <3.2.13 4.0<= Django Django <4.0.4

需要使用了 annotate 或者 aggregate 或 extra 方法

环境搭建

搭建特定版本的 django 项目

利用 pycharm 创建一个 python 项目

创建完成项目后在 Settings 中找到 Project: CVE202228346 对应的 Python Interpreter

添加存在问题的 Django 版本

在 Terminal 中执行命令,创建 django 项目

django-admin startproject CVE202228346

配置启动设置

运行后就启动了最简单的 django 项目

编写配置漏洞代码

折腾来折腾去,出现了很多问题,一度想要放弃说直接采用 docker ,但是在不断的试错下,最终还是编写成功

因为对 python 的 django 不太熟悉,所以其中可能更多的是比较偏向于基础的操作

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

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

进入到项目目录下创建命令 创建第一个应用

在 settings.py 中添加配置

在 urls.py 中添加 对应的 url,urls.py 相当于路由解析器,将路由解析到对应的 views.py 中对应的函数上

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 主要定义了对应路由所响应的函数

from django.db.models import Count
from django.http import HttpResponse
from django.shortcuts import render
from .models import User
​
# Create your views here.
def index(request):
    return HttpResponse('hello world')
​
def users(request):
    field = request.GET.get('field', 'name')
    user_amount = User.objects.annotate(**{field: Count("name")})
    html = ""
    for u in user_amount:
        html += "<h3>Amoount of users: {0}</h3>".format(u)
    return HttpResponse(html)
​
def loadexampledata(request):
    u = User(name="Admin")
    u.save()
    u = User(name="Staff1")
    u.save()
    u = User(name="Staff12")
    u.save()
    return HttpResponse("ok")

三个函数分别是 helloword 函数,往数据库中加参数,以及查询数据库中的字段

编写好代码后,需要对数据库执行初始化操作

python manage.py makemigrations
python manage.py migrate

漏洞复现

先访问 initialize 为数据库中添加信息

构造 payload

http://127.0.0.1:8000/demo/?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --

漏洞分析

发现一个问题,在加上断点调试以后,每次运行输出的结果跟不加断点运行的结果存在很大的差异,结果完全不同。不断尝试之后发现是因为在某些地方加上断点之后,在调试器中查看变量和状态可能会影响程序的执行速度和内存使用情况,为了方便的输出某些位置的变量,采用 print 的方法结合断点调试。

通过 get 传入的参数 field

CVE202228346.demo.views.users

此处的**{field: Count("name")}​ 用来表示拆分字典

跟进 annotate​ 对传入参数的处理

django.db.models.query.QuerySet.annotate

继续将参数传入到 _annotate​ 进行处理

django.db.models.query.QuerySet._annotate

在将 kwargs​ 的值 update​ 到 annotations​ 后,调用 add_annotation​ 进行处理

django.db.models.sql.query.Query.add_annotation​​

add_annotation​ 也是漏洞存在的关键位置,因为修复漏洞的关键位置也在此处

调用 resolve_expression​ 解析表达式

django.db.models.aggregates.Aggregate.resolve_expression

django.db.models.expressions.Func.resolve_expression

django.db.models.expressions.F.resolve_expression​​

django.db.models.sql.query.Query.resolve_ref

最后我们可以看到 clone 对应的值 以及执行的 SQL 语句

整个漏洞分析下来,仍然有很多不太清楚的地方,可能再分析几个关于 Django 的漏洞会好一些

漏洞修复

在 add_annotation​ 添加了 check_alias​ 来对传入的参数进行校验

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

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

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

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

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

相关文章

  • [JAVA安全]CVE-2022-33980命令执行漏洞分析

    在 i春秋的漏洞靶标上看见了此漏洞,所以前来分析一下漏洞原理,比较也是去年 7月的漏洞。 漏洞描述:Apache官方发布安全公告,修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞,漏洞编号:CVE-2022-33980,漏洞威胁等级:高危。恶意攻击者通过该漏洞,可在

    2024年02月15日
    浏览(29)
  • CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用

    漏洞软件:Apache Airflow 影响版本:= 1.10.10 Vulhub 漏洞测试靶场 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录 运行以下命令启动环境 在客户端访问 server-ip:8080 找到 example_trigger_target_dag 开启 (有向无环图) 后变为 “On” 状态 在这一列的右侧点击如下按钮 输入以下字符后点击 Trigger 按钮

    2024年02月07日
    浏览(27)
  • CVE-2022-42889 Apache Commons Text RCE漏洞分析

    最近一直在对刚研发出来的自动化Web/API漏洞Fuzz的命令行扫描工具进行维护更新(工具地址:https://github.com/StarCrossPortal/scalpel),目前扫描工具已更新至第三个版本,新增了5条2022年CVE漏洞POC,修复了例如Content- Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞

    2024年02月13日
    浏览(41)
  • Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸

    同脏牛,通过写只读内存,对映射的内存做篡改 GitHub - greenhandatsjtu/CVE-2022-0847-Container-Escape: CVE-2022-0847 used to achieve container escape 利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸 云原生之容器安全实践-安全客 - 安全资讯平台 (anquanke.com) 从脏管道(CVE-2022-0847)到docker逃逸 - 先知社区 (aliy

    2024年02月13日
    浏览(34)
  • 漏洞深度分析 | CVE-2023-36053-Django 表达式拒绝服务

    项目介绍 Django 是一个高级 Python Web 框架,鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建,解决了 Web 开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费且开源的。 项目地址 https://github.com/django/django https://github.com/djang

    2024年02月16日
    浏览(25)
  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(48)
  • [春秋云镜wp]CVE-2022-28060 CVE-2022-26201 Victor CMS v1.0存在sql注入漏洞复现拿flag

     访问题目提示的login.php,登录框登录抓包,保存为2.txt,sqlmap跑起来 时间3分钟左右,自己手动输入Y后回车,跑完根据提示打开文件夹,拿到flag  动下小手来个赞吧~~~  和上面同类型,点击首页上面banner的admin,未授权直接进入,找到如图的注入点   抓包,保存为3.txt,s

    2024年02月11日
    浏览(32)
  • CVE-2021–26855与CVE-2021–27065漏洞分析及复现

    文章首发先知社区:https://xz.aliyun.com/t/10098 微软在上半年三月披露了关于Exchange邮件服务器 CVE-2021–26855 (SSRF)与 CVE-2021–27065 (任意文件写入)的漏洞,这两个漏洞配合可以造成未授权的webshell写入,是非常严重的高危漏洞。漏洞刚出来那会儿并未注意,正好前两天4哥在群里发了个关

    2024年02月07日
    浏览(26)
  • CVE-2012-0158漏洞分析报告

    软件名称 :Office 2003 软件版本 :11.5604.5606 漏洞模块 :MSCOMCTL.OCX 模块版本 :---- 编译日期 :2022-07-10 操作系统 :Windows XP/2003/7/8.1/10 漏洞编号 :CVE-2013-4730 危害等级 :超危 漏洞类型 :缓冲区溢出 威胁类型 :本地 软件简介 Microsoft Office 2003 是微软公司针对 Windows操作系统所

    2024年02月06日
    浏览(39)
  • 【网络安全】CVE漏洞分析以及复现

    漏洞详情 Shiro 在路径控制的时候,未能对传入的 url 编码进行 decode 解码,导致攻击者可以绕过过滤器,访问被过滤的路径。 漏洞影响版本 Shiro 1.0.0-incubating 对应 Maven Repo 里面也有 【一一帮助安全学习,所有资源获取一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全

    2024年02月06日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包