热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么进行CVE-2020-7471漏洞复现及浅析

怎么进行CVE-2020-7471漏洞复现及浅析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这

怎么进行CVE-2020-7471漏洞复现及浅析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、CVE-2020-7471介绍

2020年2月3日,Django 官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞(CVE-2020-7471)。攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义符号(\)并注入恶意SQL语句。

受影响版本:

·Django 1.11.x <1.11.28

·Django 2.2.x <2.2.10

·Django 3.0.x <3.0.3

不受影响产品版本:

·Django 1.11.28

·Django 2.2.10

·Django 3.0.3

二、漏洞复现

1、kali下安装受影响的django版本 pip3 install Django==3.0.2

怎么进行CVE-2020-7471漏洞复现及浅析

2、安装postgres 数据库

apt-get install postgresql-11

怎么进行CVE-2020-7471漏洞复现及浅析

3、 创建测试数据库

/etc/init.d/postgresql start 开启数据库

怎么进行CVE-2020-7471漏洞复现及浅析

Postgresql 已启动

怎么进行CVE-2020-7471漏洞复现及浅析

连接数据库,修改密码为123456,并建立数据库test

怎么进行CVE-2020-7471漏洞复现及浅析

4、下载poc:

git clone :https://github.com/Saferman/CVE-2020-7471.git

怎么进行CVE-2020-7471漏洞复现及浅析

5、修改/root/CVE-2020-7471/sqlvul_project/settings.py

怎么进行CVE-2020-7471漏洞复现及浅析

6、初始化测试数据库test中的表

怎么进行CVE-2020-7471漏洞复现及浅析

7、查看数据库是没数据的

怎么进行CVE-2020-7471漏洞复现及浅析

8、运行poc

python3 CVE-2020-7471.py

怎么进行CVE-2020-7471漏洞复现及浅析

9、再次查看数据库,数据插入成功

怎么进行CVE-2020-7471漏洞复现及浅析

三、POC浅析

怎么进行CVE-2020-7471漏洞复现及浅析

initdb函数:给管理器添加初始测试数据

query函数:进行模糊测试,找出当delimiter 的值为哪些字符时,会让程序运行出现错误(即使用哪些字符可能会干扰SQL语句的执行(将delimiter 输入的字符带入了SQL语句,破坏原有语句))

query_with_evil()函数:进行注入点证明测试时,payload前后两个不同的赋值,是为了得到两个不同的结果,前一个使用正确的分隔符-,后一个是使用同样的分隔符-,但是后面带有SQL语句:

&#39;)AS"mydefinedname"FROM"vul_app_info"GROUPBY"vul_app_info"."gender" LIMIT 1 OFFSET 1 –

数据库进行查询时,使得整个查询语句变为了:

SELECT"vul_app_info"."gender",STRING_AGG("vul_app_info"."name",&#39;-&#39;) AS"mydefinedname"FROM"vul_app_info"GROUPBY"vul_app_info"."gender"LIMIT 1 OFFSET 1 –

这里的payload =‘-\’) AS … LIMIT 1 OFFSET 1 –‘中的\’,反斜杠的作用只是在payload字符串赋值时转义单引号,payload中的-’,使得STRING_AGG(“vul_app_info”.“name”, ‘-’)右括号闭合了,导致了后面的SQL语句的执行。

看完上述内容,你们掌握怎么进行CVE-2020-7471漏洞复现及浅析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程笔记行业资讯频道,感谢各位的阅读!


推荐阅读
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • Django学习笔记之djangodebugtoolbar使用指南
    介绍django-debug-toolbar是一组可配置的面板,可显示有关当前请求响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息。github地址文档地址安装配置1. ... [详细]
  • 【云计算】Dockerfile、镜像、容器快速入门 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
author-avatar
往事随风5201314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有