如何在几分钟内找到多个 SQL 注入漏洞

VSole2022-04-06 07:14:43

今天来分享一下我是如何用几分钟发现某个漏洞赏金的目标多个 SQL 注入漏洞的,接下来以目标域名 redacted.org 为例。

枚举阶段

首先我使用 waybackurls 工具查看目标网站上有哪些 URL,然后看到了很多 PHP 的文件,也许可以在其中找到 SQL 注入漏洞,使用命令过滤一些结果之后输出到文件:

waybackurls https://redacted.org/ | uro | grep “.php” > php-files.txt

查看输出的文件,发现了如图中的内容:

看文件名感觉似乎有戏,接下来需要找一些可用的参数,需要制作一个参数名字典然后暴力破解这些页面,搞起。

获取参数

我们基于之前输出的内容,将文件名和参数分离出来,然后去重:

cat php-files.txt| grep -i get | sed 's/.*.get//' | sort -u

接下来删除 php 后缀,得到一个以文件名为关键词的列表,只需在上一条命令后加上 cut -f1 -d 即可:

结果中有的有两个单词或者多个单词的组合,但是我不知道其中那个单词是参数,所以就想办法将其拆分,经过一顿搜索,发现可以用命令:

sed 's/[AZ]+/&/g'

我认为参数一般都是小写,所以需要将所有大写字符转换为小写,且保留之前的内容:

接下来我们有了两个参数字典可用,然后使用工具 FFUF 来进行测试,先尝试用全是小写字符的字典:

ffuf -w lowercase-parameters.txt -u "https://redacted.org/searchProgressCommitment.php?FUZZ=5"

但是没有任何结果

老实说,我很郁闷,但是突然想到一个方案,把请求的方法改成 POST 怎么样?命令如下:

ffuf -w lowercase-parameters.txt -X POST -d "FUZZ=5" -u "https://redacted.org/searchProgressCommitment.php"

结果得到了 commitment & id 参数 


接下来我可以对这些参数进行测试了,复制请求的数据包内容到文件中,丢给 sqlmap 去测

漏洞利用

sqlmap 的命令如下:

sqlmap -r req3.txt -p commitment --force-ssl --level 5 --risk 3 --dbms=”MYSQL” --hostname --current-user --current-db --dbs --tamper=between --no-cast

漏洞测试成功,确实存在 SQL 注入漏洞


接下来使用同样的方法,测试其他 URL ,结果我找到了三个同样存在 SQL 注入漏洞的地方

第二个 SQLI:带有 id 参数的 ws_delComment.php

第三个 SQLI:带有 target 参数的 getTargets.php

第四个:mailing_lists.php 带 list 参数

一共发现四个 SQL 注入,太棒了

我向安全团队报告了所有 SQL 注入漏洞并审核通过,他们在积极解决问题,感谢大家的阅读。

sql注入注入漏洞
本作品采用《CC 协议》,转载必须注明作者和本文链接
id=3';对应的sql:select * from table where id=3' 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常; 加and 1=1 ,URL:xxx.xxx.xxx/xxx.php?id=1' order by 3# 没有报错,说明存在3列爆出数据库:?id=-1' union select 1,group_concat,3 from information_schema.schemata#爆出数据表:?id=1' and extractvalue--+(爆字段)?
id=1' order by 3# 没有报错,说明存在3列。id=-1' union select 1,group_concat,3 from 数据库名.数据表名--+拓展一些其他函数:system_user() 系统用户名。updatexml函数:细节问题:extractvalue()基本一样,改个关键字updatexml即可,与extractvalue有个很大的区别实在末尾注入加上,如:,而extractvalue函数末尾不加1(数值)?
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,ex
网上安全渗透测试工具整理全集,部分链接可能失效,但可以搜索到
Web Hacking 101 中文版:https://wizardforcel.gitbooks.io/web-hacking-101/content/ 浅入浅出Android安全 中文版:https://wizardforcel.gitbooks.io/asani/content/ Android 渗透测试学习手册 中文
未正确验证用户输入的应用程序使它们容易受到 SQL 注入的攻击。SQL 注入攻击 发生在攻击者能够通过操纵用户输入数据将一系列恶意 SQL 语句插入“查询”以供后端数据库执行时。使用这种类型的威胁,应用程序可以很容易地被黑客入侵并被攻击者窃取机密数据。
概述在学习SQL注入之前,我们应先了解什么是SQL?原理SQL注入就是当开发人员对用户输入数据的合法性没有判断或过滤不严时,攻击者通过拼接恶意SQL语句诱使解释器在未经适当授权的情况下执行意外命令或访问数据。
在程序执行出错时,不要显示与内部实现相关的细节。直接对象引用使用的唯一标识可以通过随机数生成以难以猜测。在进行页面显示或做处理之前对用户权限进行检查。
SSJI - Node.js漏洞介绍
2021-11-09 16:16:27
ssji,为服务器端的javascript注入,可分为sql注入和代码注入 运行于服务端的javascript常用的有node.js node.js 是运行于服务端的javascript 把javascript变为服务器端的脚本语言
当我们输入正确的手机号和正确的短信验证码,然后进入重置密码的最后一步,也就是输入新的密码输入密码后提交到服务端的post数据包需要包含当前用户的身份信息。修改响应包重置任意账号密码:通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确。
VSole
网络安全专家