实战 | 记一次PHP混淆后门的分析利用
2022-7-23 09:39:33 Author: HACK学习呀(查看原文) 阅读量:23 收藏

作者:小老弟你怎么回事@深信服深蓝实验室天慧战队

目标一个站发现版权和标题都是XX源码下载网,那目标源码可能是网上下载的,于是我也搞了一套源码回本地开始测试。

我习惯网上这种能下载到的源码一般很大可能是存在后门,先D盾杀查一把梭,果然源码有混淆,然后一个藏在images目录下的php非常可疑,还调用了phpinfo()。

当然事情远没有这么简单,打开该文件后发现进行了混淆编码,于是尝试哪些php解密工具进行解密。

但是并不能解开,或者说不是一些常见的加密和混淆的方案。尝试手工分析

先把源码格式化一下,虽然看着还是很自闭,但是至少能下手了。

看到这种数字+字母最高只出现个F的,那就是16进制了,特别还用了pack函数。

随便选一段然后用burpsuite的解码器选择 ASCII hex的方式

66696C655F6765745F636F6E74656E7473->file_get_contents

当然如果不放心可以直接把代码抠出来,在打印一下结果都是一样的。

于是我把这些16进制的全部转换了下作为注释,发现全部都是文件操作。

$GLOBALS[pack(chr(72) . chr(42), "415F4141415F5F") ] = pack(chr(72) . chr(42), "6670757473");//A_AAA__  fputs

其实像这种也不难理解,其实就是定义全局变量和对函数做了个别名这个是php的一个特性。就是把函数名赋值给变量,在变量直接传参就等于调用了哪个函数。

比如把base64_decode赋值给b变量,然后b当成函数直接使用,其实就是在用base64_decode()这个函数。

换句话说以上哪些什么AAA_AA的其实就只是把关键函数换了个名字,是一个变量函数。

直接访问马是空白页面,我想先访问到phpinfo看一下,必须要进入这个判断。

$GLOBALS[A_A_AAA][(0 - 1072 + 67 * E_CORE_ERROR) ][pack(chr(72) . chr(42), "70") ]

来分析下这个全局的三维数组

首先$GLOBALS[A_A_AAA]里面存放了$_GET, $_SERVER这两个的地址。既然是数组那么存放的方式是如下的

$GLOBALS[A_A_AAA][0]==$_GET$GLOBALS[A_A_AAA][1]== $_SERVER

0 - 1072 + 67 * E_CORE_ERROR 其实运算后就是等于0

$GLOBALS[A_A_AAA][(0 - 1072 + 67 * E_CORE_ERROR) ] 就等于$_GET

pack(chr(72) . chr(42), "70")  解码后等于p

所以  

$GLOBALS[A_A_AAA][(0 - 1072 + 67 * E_CORE_ERROR) ][pack(chr(72) . chr(42), "70") ]其实就是$_GET[‘p’]

686A这个16进制转文本就是hj

?p=hj 即可

在它的一个条件中发现它在获取远程一些东西。

解码后,而且这种

AA_____AA____A

其实在开头就赋值过了,其实就是个变量函数。

在结合上下文

其实就是file_get_contents去请求加载Base64_self.png这个马,然后在通过file_put_contents写成yjh.php。

把马拉到本地一看,混淆程度相比刚才,有过之而无不及。原以为经过一层了应该不会在有啥混淆了,还是太年轻了。同样扔到在线解密的php网站,同样提示无果不能识别。

看不懂没关系,挑你看的懂的看,毕竟混淆就是让你看不懂,目的就达到了。

这些16进制转成文本看看。

使用burpsuite解码模块一把梭,它会尽可能的把能转的给转了。

这哥几个不就来了嘛,找到eval了,你懂的。

其实这就差不多了,不过我们还是可以在跟一下。从eval中开始回溯。

全局定义了个$A97vPEJ变量放入eval中执行。

$A97vPEJ的值是和$c拼接。

$c的值是从$A97tIEK获取

$A97tIEK从$A97eF0获取

$A97eF0是base64_decode解码后的内容

在看看

call_user_func_array("base64_decode",$A97zA1)中的$A97zA1的值

是个数组。A97tIEJ的值从$_POST['mima123'];中获取

饶了一个大圈子其核心就是

这样就完成利用。


推荐阅读:

实战 | 记一次对iphone手机游戏的渗透测试

实战 | 记一次HOST头中毒导致的密码重置漏洞挖掘

实战 | 记一次1000美金的TikTok盲打XSS的漏洞挖掘

实战 | WAF-Bypass之SQL注入绕过思路总结

干货 | Certutil在渗透中的利用和详解

点赞,转发,在看


文章来源: http://mp.weixin.qq.com/s?__biz=MzI5MDU1NDk2MA==&mid=2247506787&idx=1&sn=548aebd9a8431348d3d14db327ef0c27&chksm=ec1c8e5cdb6b074a78fa18121f9962e5a27c7b158b7fb6b2103ce61fc2a0248a167df355f541#rd
如有侵权请联系:admin#unsafe.sh