0X01 前言
D盾_IIS防火墻,目前只支持Win2003服務(wù)器,前陣子看見官方博客說D盾新版將近期推出,相信功能會(huì)更強(qiáng)大,這邊分享一下之前的SQL注入防御的測(cè)試情況。D盾_IIS防火墻注入防御策略,如下圖,主要防御GET/POST/COOKIE,文件允許白名單設(shè)置。構(gòu)造不同的測(cè)試環(huán)境,IIS+(ASP/ASPX/PHP)+(MSSQL/MYSQL),看到這邊的策略,主要的測(cè)試思路:
a、白名單 b、繞過union select或select from的檢測(cè)

0X02 IIS+PHP+MYSQL
搭建這個(gè)window2003+IIS+php+mysql,可花費(fèi)不少時(shí)間,測(cè)試過程還蠻順利的,先來一張攔截圖:

繞過姿勢(shì)一:白名單
PHP中的PATH_INFO問題,簡單來說呢,就是
http:/x.x.x.x/3.php?id=1 等價(jià)于 http://x.x.x.x/3.php/xxxxxxxxxxxxx?id=1
從白名單中隨便挑個(gè)地址加在后面,可成功bypass,http://10.9.10.206/3.php/admin.php?id=1 union select 1,2,schema_name from information_schema.SCHEMATA
經(jīng)測(cè)試,GET、POST、COOKIE均有效,完全bypass

繞過姿勢(shì)二:空白字符
Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;
測(cè)試了一下,基本上針對(duì)MSSQL的[0x01-0x20]都被處理了,唯獨(dú)在Mysql中還有一個(gè)%a0可以利用,可以看到%a0與select合體,無法識(shí)別,從而繞過。
id=1 union%a0select 1,2,3 from admin

繞過姿勢(shì)三:/N形式
主要思考問題,如何繞過union select以及select from?
如果說上一個(gè)姿勢(shì)是union和select之間的位置的探索,那么是否可以考慮在union前面進(jìn)行檢測(cè)呢?
為此在參數(shù)與union的位置,經(jīng)測(cè)試,發(fā)現(xiàn)/N可以繞過union select檢測(cè),同樣方式繞過select from的檢測(cè)。
id=/Nunion(select 1,schema_name,/Nfrom information_schema.schemata)

0X03 IIS+ASP/ASPX+MSSQL
搭建IIS+ASP/ASPX+MSSQL環(huán)境,思路一致,只是語言與數(shù)據(jù)庫特性有些許差異,繼續(xù)來張D盾攔截圖:

繞過姿勢(shì)一:白名單
ASP: 不支持,找不到路徑,而且D盾禁止執(zhí)行帶非法字符或特殊目錄的腳本(/1.asp/x),撤底沒戲了
/admin.php/../1.asp?id=1 and 1=1 攔截
/1.asp?b=admin.php&id=1 and 1=1 攔截,可見D盾會(huì)識(shí)別到文件的位置,并不是只檢測(cè)URL存在白名單那么簡單了。。。
ASPX:與PHP類似 /1.aspx/admin.php?id=1 union select 1,'2',TABLE_NAME from INFORMATION_SCHEMA.TABLES 可成功bypass
新聞熱點(diǎn)
疑難解答
圖片精選