0X01 前言
D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的SQL注入防御的测试情况。D盾_IIS防火墙注入防御策略,如下图,主要防御GET/POST/COOKIE,文件允许白名单设置。构造不同的测试环境,IIS+(ASP/ASPX/PHP)+(MSSQL/MYSQL),看到这边的策略,主要的测试思路:
a、白名单 b、绕过union select或select from的检测
0X02 IIS+PHP+MYSQL
搭建这个window2003+IIS+php+mysql,可花费不少时间,测试过程还蛮顺利的,先来一张拦截图:
绕过姿势一:白名单
PHP中的PATH_INFO问题,简单来说呢,就是
http:/x.x.x.x/3.php?id=1 等价于 http://x.x.x.x/3.php/xxxxxxxxxxxxx?id=1
从白名单中随便挑个地址加在后面,可成功bypass,http://10.9.10.206/3.php/admin.php?id=1 union select 1,2,schema_name from information_schema.SCHEMATA
经测试,GET、POST、COOKIE均有效,完全bypass
绕过姿势二:空白字符
Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;
测试了一下,基本上针对MSSQL的[0x01-0x20]都被处理了,唯独在Mysql中还有一个%a0可以利用,可以看到%a0与select合体,无法识别,从而绕过。
id=1 union%a0select 1,2,3 from admin
绕过姿势三:/N形式
主要思考问题,如何绕过union select以及select from?
如果说上一个姿势是union和select之间的位置的探索,那么是否可以考虑在union前面进行检测呢?
为此在参数与union的位置,经测试,发现/N可以绕过union select检测,同样方式绕过select from的检测。
id=/Nunion(select 1,schema_name,/Nfrom information_schema.schemata)
0X03 IIS+ASP/ASPX+MSSQL
搭建IIS+ASP/ASPX+MSSQL环境,思路一致,只是语言与数据库特性有些许差异,继续来张D盾拦截图:
绕过姿势一:白名单
ASP: 不支持,找不到路径,而且D盾禁止执行带非法字符或特殊目录的脚本(/1.asp/x),撤底没戏了
/admin.php/../1.asp?id=1 and 1=1 拦截
/1.asp?b=admin.php&id=1 and 1=1 拦截,可见D盾会识别到文件的位置,并不是只检测URL存在白名单那么简单了。。。
ASPX:与PHP类似 /1.aspx/admin.php?id=1 union select 1,'2',TABLE_NAME from INFORMATION_SCHEMA.TABLES 可成功bypass
新闻热点
疑难解答