0x01 前言
在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势。
0x02 环境搭建
Windows Server 2003+phpStudy
sql注入点测试代码:
sql.php
运行效果:
0x03 Bypass 过程
对不同waf做了一些尝试,关于SQL注入bypass,可以考虑划分为3种:
1、完全bypass(union select+select from)
2、部分bypass(union select 或select from)
3、获取一些敏感信息(如version()、database()等)
A、Union+select
先考虑如何绕过union+select,可以考虑一下几种形式
1、最常见形式 %20、+、/**/
2、Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0
3、内联注释 /!12345select/
通过组合测试,可以发现 union%0a/*!12345select*/ 1,2 可以绕过防御。
B、select+from
select+from 也可以通过同样的组合形式绕过防御。
至此已完全绕过union+select+from。
0x04 自动化注入
编写tamper bypass脚本,来利用sqlmap来跑数据
先看一下原始sqlmap的效果:
sqlmap.py -u http://192.168.106.130/config/sql.php?id=1 --flush-session --dbs 失败
加载tamper脚本,可成功获取数据。
sqlmap.py -u http://192.168.106.130/config/sql.php?id=1 --flush-session --technique=U --tamper="360safe.py" --dbs
tamper脚本:
这边主要是针对union select查询进行的关键字替换,测试过程中,可以发现利用tamper脚本来bypass的弊端,sqlmap的部分payload是固定的,部分关键字会被waf拦截,需要一步步调试,总结,测试哪些关键字是被拦截的,如何绕过关键字的检测等,还是挺麻烦。
0x05 END
最好的自动化注入工具:可以考虑自己编写一个自动化注入工具,灵活的自定义payload来获取数据库信息。
目前的测试成果,可成功bypass注入防御,如 安全狗、云锁、360主机卫士、D盾_IIS防火墙等主机防护软件及各种云waf,有些姿势都在用。
关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。