CVE-2021-35042Django SQL注入漏洞复现

简介: CVE-2021-35042Django SQL注入漏洞复现

漏洞描述

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

组件介绍

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


综合评价

  高危,最终造成服务器敏感信息泄露

影响版本

Django 3.2
Django 3.1

安全版本

Django >= 3.2.5
Django >= 3.1.13

漏洞复现

搭建环境
https://github.com/YouGina/CVE-2021-35042
运行(这里为了方便可以提前切换到root用户)
git clone https://github.com/YouGina/CVE-2021-35042.git
cd CVE-2021-35042

fa97f769d794b003ca2553a90e2a3a11_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

初始设置
./setup.sh #./setup.sh执行之后,docker开启的是数据库服务器

9bbd5642692d1ccd20bbd5ed371b4e91_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在这一步运行过程中会出现下面这个错误,这个意思是不要以root用户执行,以普通用户即可,不用理会这个报错;

cc1855858855cd22f24cfd7cfcadfcfd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

此时数据库服务已经开启

1b7a3424af6428bf00bbdc8244d851a9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着把web服务也开启
docker-compose up -d #此时web服务器和数据库服务器均开启

0817802500b18d261d3b51c848e98168_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

进入web服务容器中
docker exec -it {container_id} /bin/bash #进入web服务器

07519e9b58279d31738e9c853a5be1a0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

执行下面这两条命令
python manage.py makemigrations cve202135042

红线框中表示在cve202135042应用目录下的migations的文件下多了一个0001_initial.py的文件,查看这个文件内容,表示我们创建了一个User这个模型类,并且指出这个类的成员属性id,name,以及他们的属性,同时我们了解到djnago在models.py创建模型类,其中一个模型类对应的是一张数据表,但是该命令并没有作用到数据库,这个命令中python manage.py makemigrations是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件0001_initial.py。

c169e033f896b4c1b7a9e9e2914c4625_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着执行下面这条命令, 这条命令的主要作用就是把上一条的改动作用到数据库也就是执行migrations里面新改动的迁移文件来更新数据库,比如创建数据表,或者增加字段属性

python manage.py migrate

d96471f86185f1c56cf708a9938f1188_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

打开以下 URL 以加载示例数据:
http://localhost:8000/load_example_data

c6e4b39194c5d3d97213729cfad53de2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后转到易受攻击的页面
http://localhost:8000/users/

f56bc36525896a78264933b0f1d48e29_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

aabd3de6ef7b5e9a5e213f70c9e3e0c1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞防御

及时更新到最新版本

链接 : https://www.djangoproject.com/weblog/2021/jul/01/security-releases/

这个漏洞复现因为网络环境问题卡了好久,这里感谢zly师兄的指点,这家伙搭环境比我快多了>_<

相关文章
|
2月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
129 5
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
67 5
|
1月前
|
SQL 运维 安全
怎样可以找到SQL漏洞:技巧与方法详解
SQL漏洞,特别是SQL注入漏洞,是Web应用中常见的安全威胁之一
|
1月前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
34 0
|
2月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
117 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
47 1
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
46 3
|
2月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
87 6
|
2月前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
51 5
|
2月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
350 1