1
DetSql 是基于 BurpSuite Java 插件 API 开发的 SQL 注入探测插件,主要作用为快速从 http 流量中筛选出可能存在 SQL 注入的请求,在尽可能减少拦截的情况下提高 SQL 注入测试效率。
https://github.com/saoshao/DetSql
2
为方便叙述使用 value 表示请求的一个参数值,respbody 表示该请求的响应体,value->respbody,表示参数值为 value 时发送请求得到响应体 respbody,以下判断依赖 MySQL,sqlserver,oracle,postgresql 四种数据库某版本测试结果。
1.报错类型判断
请求中任一参数值+报错 poc 作为新参数值,即 value+poc,其中 poc 包括:',%DF',",%DF",`,其中%DF 考虑到宽字节,同时增加了 URL 编码的单双引号,在遇到 json 数据时增加了 Unicode 编码的单双引号。
生成新请求后发送,响应匹配报错规则,添加了近 100 条正则匹配规则,匹配成功任一规则,即认为存在报错类型注入,标记该参数为 errsql,同时在括号中添加对应的报错正则规则作为备注一起显示,否则认为不存在报错类型注入。
2.数字类型判断
当 value 为数字时,且该 value 不为 json 的键值,将发起以下请求判断,否则该 value 将不再判断,
原始请求表示为:value->respbody,
poc1 请求:value-0-0-0->respbody1,请求完成后使用 Levenshtein 方法判断 respbody 和 respbody1 相似度是否超过 90%,如果不满足认为不存在数字类型的注入,否则将发送下一个请求判断,
poc2 请求:value-abc->respbody2,请求完成后使用 Levenshtein 方法判断 respbody2 和 respbody 相似度是否低于 90%并且 respbody2 和 respbody1 相似度也低于 90%,如果都满足即认为存在数字类型注入,标记该参数为 numsql。
3.order 类型注入
当 value 不为空时,发起以下请求判断,否则该 value 将不再判断,
原始请求表示为:value->respbody,
poc1 请求:value,0->respbody1,
poc2 请求:value,xxxxxx->respbody2,
首先使用 Jaccard 方法判断 respbody 和 respbody1 的相似度低于 90%,若满足继续发送 poc2 请求,判断 respbody 和 respbody2 的相似度低于 90%,若满足继续后续判断,若不满足则直接停止判断,
poc3 请求:value,1->respbody3,
poc4 请求:value,2->respbody4,
先发送 poc3 请求,使用 Jaccard 方法判断 respbody 和 respbody3 的相似度高于 90%,若满足则认为存在 order 类型的注入,若不满足继续发送 poc4 请求判断 respbody 和 respbody4 的相似度是否高于 90%,若满足则认为存在 order 类型的注入,标记该参数为 ordersql,否则认为不存在 order 类型的注入。
4.字符类型注入
如果为 json 格式的数据,该键值 value 需被双引号包裹才会发起后续请求判断,否则该 value 将不再判断,
原始请求表示为:value->respbody,
poc1 请求:value'->respbody1,此处为一个单引号,
poc2 请求:value''->respbody2,此处为两个单引号,
首先使用 Levenshtein 方法判断 respbody 和 respbody1 的相似度低于 90%,若满足继续发送 poc2 请求,判断 respbody1 和 respbody2 的相似度低于 90%,注意如果原始请求不存在数据 respbody 和 respbody2 的相似度往往较高,如果原始请求存在数据 respbody 和 respbody2 的相似度往往较低,所有此处判断 respbody1 和 respbody2 的相似度。若满足低于 90%继续后续判断,若不满足则直接停止判断,
poc3 请求:value'+'->respbody3,此处为两个单引号,
poc4 请求:value'||'->respbody4,此处为两个单引号,
先发送 poc3 请求,使用 Levenshtein 方法判断 respbody 和 respbody3 的相似度高于 90%,若满足则认为存在字符类型的注入,若不满足继续发送 poc4 请求判断 respbody 和 respbody4 的相似度是否高于 90%,若满足则认为存在字符类型的注入,标记该参数为 stringsql,否则认为不存在字符类型的注入。
5.附加判断
除了前述通过计算相似度作为判断规则外还添加了响应长度的变化阈值作为判断辅助,从而丰富判断依据,例如两个响应长度相同时可直接判断相似度为百分之百,两个响应长度差超过某个值此处设为 100,就将辅助判断的相似度定位百分之九十,在判断时如果希望此时的相似度较大(小)时为好,则会选择用算法计算出的相似度和辅助判断的相似度两者中较大(小)者去比较;如果两个响应的长度差很小,则会使用算法计算出的相似度去做比较。
3
帮会领域:专注于 APT 框架、渗透测试、红蓝对抗等领
帮会内容覆盖
挖洞技巧和小 tips
挖洞实战项目案例内部分享
应急响应案例内部分享
不定时分享高质量小工具
可加入内部群进行攻防技术交流
团队内部师傅开发的小工具,优先体验新版本,还可和师傅提出 bug 获得奖励哦
有机会进入团队,成为正式成员,获得更多好处
私域信息安全图书馆
活动价格:15/月卡、39.9/季卡
9.9/月 20/季 79/永久
活动结束后将恢复原价
帮会私域信安图书馆
建立信息安全图书馆也有一段时间了,为大家准备了大量的资料,想学的时候,翻开那些你感兴趣的领域的资料看一看只要你需要,我们会尽可能的帮你寻找你感兴趣或者需要的资料。