欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Win2003服务器防SQL注入神器--D盾_IIS防火墙

程序员文章站 2023-03-25 20:30:26
0x01 前言   d盾_iis防火墙,目前只支持win2003服务器,前阵子看见官方博客说d盾新版将近期推出,相信功能会更强大,这边分享一下之前的sql注入防御的测试情...

0x01 前言

  d盾_iis防火墙,目前只支持win2003服务器,前阵子看见官方博客说d盾新版将近期推出,相信功能会更强大,这边分享一下之前的sql注入防御的测试情况。d盾_iis防火墙注入防御策略,如下图,主要防御get/post/cookie,文件允许白名单设置。构造不同的测试环境,iis+(asp/aspx/php)+(mssql/mysql),看到这边的策略,主要的测试思路:

a、白名单   b、绕过union select或select from的检测

  Win2003服务器防SQL注入神器--D盾_IIS防火墙

0x02 iis+php+mysql

  搭建这个window2003+iis+php+mysql,可花费不少时间,测试过程还蛮顺利的,先来一张拦截图:

Win2003服务器防SQL注入神器--D盾_IIS防火墙

绕过姿势一:白名单

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

Win2003服务器防SQL注入神器--D盾_IIS防火墙

绕过姿势二:空白字符

mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

 测试了一下,基本上针对mssql的[0x01-0x20]都被处理了,唯独在mysql中还有一个%a0可以利用,可以看到%a0与select合体,无法识别,从而绕过。

id=1  union%a0select 1,2,3 from admin

Win2003服务器防SQL注入神器--D盾_IIS防火墙

绕过姿势三:\n形式

主要思考问题,如何绕过union select以及select from?

如果说上一个姿势是union和select之间的位置的探索,那么是否可以考虑在union前面进行检测呢?

为此在参数与union的位置,经测试,发现\n可以绕过union select检测,同样方式绕过select from的检测。

id=\nunion(select 1,schema_name,\nfrom information_schema.schemata)

Win2003服务器防SQL注入神器--D盾_IIS防火墙

0x03 iis+asp/aspx+mssql

  搭建iis+asp/aspx+mssql环境,思路一致,只是语言与数据库特性有些许差异,继续来张d盾拦截图:

Win2003服务器防SQL注入神器--D盾_IIS防火墙

绕过姿势一:白名单

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

Win2003服务器防SQL注入神器--D盾_IIS防火墙

绕过姿势二:空白字符

  mssql可以利用的空白字符有:01,02,03,04,05,06,07,08,09,0a,0b,0c,0d,0e,0f,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1e,1f,20

  [0x01-0x20]全部都被处理了,想到mysql %a0的漏网之鱼是否可以利用一下?

asp+mssql:  不支持%a0,已放弃。。。

aspx+mssql: %a0+%0a配合,可成功绕过union select的检测

 id=1 union%a0%0aselect 1,'2',table_name %a0from information_schema.tables

Win2003服务器防SQL注入神器--D盾_IIS防火墙

 绕过姿势三:1e形式

  mssql属于强类型,这边的绕过是有限制,from前一位显示位为数字类型,这样才能用1efrom绕过select from。

  只与数据库有关,与语言无关,故asp与aspx一样,可bypass,id=1eunion select '1',table_name,1efrom information_schema.tables

Win2003服务器防SQL注入神器--D盾_IIS防火墙

0x04 end

  不同语言,中间件,数据库,所对应的特性有些差异,思路却一致,实践出真知,只要动手去探索,还有更多姿势等待被挖掘。

  目前的测试成果,可成功bypass注入防御,如 安全狗、云锁、360主机卫士、d盾_iis防火墙等主机防护软件及各种云waf,有些姿势都在用。

  有对这方面研究的童鞋,欢迎加好友交流一下姿势。