技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

admin 2022年4月2日08:33:23评论39 views字数 2014阅读6分42秒阅读模式

免责声明

本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作!


欢迎各位添加微信号:qinchang_198231

加入安世加 交流群 和大佬们一起交流安全技术

//前言

某次渗透中遇到的注入存在双层waf的情况,第一层是云waf第二层似乎是本地的安全狗或者是代码层面的防护,后端数据库是mysql,jsp环境,最终通过多次fuzz的方式成功找到突破口,并且利用sqlmap的tamper脚本来获取数据.

//正文

首先来看一下这个双层waf的大概情况,首先是云waf,利用一个简单的 'and '1'='1 触发waf

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

渲染后的样子

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

有兄弟看出这个是啥牌子的waf嘛 有的话希望告知一下 小弟没看出来
因为后端是mysql 所以直接用&&替换了 and 并且url编码一下 因为是特殊字符 直接就过了 我是没想到的 0_0

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

其他更多的payload我还没测试我在回包里发现还有检测,应该是本地的安全狗或者是代码层面的检测

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

换一个 or 对应的 || 试试

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

偶哟 还不错哦 检测了=号 我们用 like 来替换一下

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

成功过去了 我低头沉思 虽然过去了 但是好像没有什么卵用 单纯or 用 || 替换 =用 like 替换 那么其他的payload 会不会被检测到了 我觉得多半是会被检测到的 我们来试一试 因为这个返回是把错误打印出来的 多半是支持报错注入的
找个报错注入的payload试一试 稍微加点注释和换行

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

理所当然的被拦截了 这都拦截不鸟的话 这云waf也太垃圾了 0_0


如果想要真正把这个注入利用起来,也就是最终想要获取到数据库数据,那么多半要找一个一劳永逸,比较通用的绕过方法,类似于 假定可以双写绕过 那么利用 sqlmap 的tamper 把所有关键字双写 假如只是不允许有空格 那么用其他能绕过检测的东西批量替换空格 获取数据 所以我想寻找到类似上述两种情景的这么一个突破口
于是我开始fuzz 还有一个比较好的地方是 因为如果语法出错 返回包会把具体位置 语句 给你爆出来 所以我们可以对着 返回包来fuzz


首先 如果语法有问题那么 返回包会显示具体情况

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

我特地构造了一个 payload 来fuzz
fuzz payload 如下

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

我想找到一个会被替换为空的字符 如果存在这样一个字符那么肯定可以绕过waf 利用sqlmap 获取数据 如果存在这么一个字符 返回结果里肯定有123321 那么我只需要在结果里寻找这个123321就好


加载 16进制数据 00 01 一直到 100(256的16进制) 测试所有字符 看有没有机会


在intruder 爆破结束后的 option 选项里 可以设置要寻找的数据 下图就是设置要寻找的123321

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

结果没有发现这样一个字符

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

不慌 我们继续来fuzz 我们来用两次urlencode试试 看后端怎么处理


这次构造的payload如下 就是urlencode了两次 对要测试的字符 我只要在结果里寻找123321就好

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

let's go

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

bingo 有结果了 0_0 运气不错 第二次fuzz 就中奖了 奥里给

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

可以看到 %2527被替换为空了只剩下123321 因为post的时候 会自动urldecode一次 所以后端程序其实是把%27替换为空了


这么多组合都可以用来绕waf 嘿嘿 简单测试一下 报错注入

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

哦哟 舒服了 接下来就是修改sqlmap tamper 来获取数据


什么是sqlmap的tamper
sqlmap是一款人见人爱的自动化SQL渗透工具,能够以良好的引擎发现给定URL中的可注入处,并自动化的完成注入。但是由于SQL注入的影响过于广泛,致使现代程序的防护越来越严密。sqlmap/tamper是官方给出的一些绕过脚本,可以配合渗透测试人员完成更高效更高质量的测试


至于sqlmap有哪些tamper 作用是啥 可以参考 https://www.freebuf.com/sectool/179035.html


修改sqlmap-tamper-获取数据


不得不感叹一句 sqlmap真乃神器 已经写好的tamper 功能基本就满足大多数场景了 在这里我的目标是在每一个字符前加上%2527在sqlmap自带的tamper中已经有一个叫 percentage.py的,这个的功能是在每个字符前加% 我只需要改成加%2527就行 非常简单 我们先看一下这个tamper大概长啥样

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

框起来的部分是关键 sqlmap把原来的payload 每一个字符前加%后给retVal 并且重新拼接起来 那么我只需要改一句

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

就好


还有 =号之前说过是会被检测的 只需要 把=号 换成 like 在最后加上

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

最终的tamper 如下

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

sqlmap 真乃神奇也 简直奥里给


好了 现在就来一把梭


sqlmap 命令如下 ;python2 sqlmap.py -r "d:sqlmap.txt" --dbms=mysql --technique=E --tamper mypercentage


我开始了 嘿嘿

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据
技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

本文始发于微信公众号(安世加):技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月2日08:33:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技术干货 | 实战绕过双重waf结合sqlmap tamper获取数据http://cn-sec.com/archives/522679.html

发表评论

匿名网友 填写信息