帕鲁杯 2025 - 应急响应

帕鲁杯 2025 - 应急响应
Aristore畸形的爱
解压密码
1 | Parloo&zgsfsys&onefox&solar**juyt |
主机名 | 操作系统登录 | 服务登录 |
---|---|---|
WebServer | root/root | https://192.168.20.102:9443/ admin/VF6NXMs7 |
SQL 服务器 | sql/sql | |
Windows7 PC 1 | administrator/wmx666 | |
Windows10 PC2 | administrator/zjl@123 |
1. 提交攻击者使用的攻击 ip 地址 1
在 webserver 查看 nginx 日志
1 | cat /var/log/nginx/access.log.1 | grep 'GET' |
1 | palu{192.168.31.240} |
2. 提交攻击者使用的攻击 ip 地址 2
在 PC2 的回收站发现简历.zip
,压缩包里面有一个简历.exe
放到安恒云沙箱检测
1 | palu{192.168.31.11} |
3. 提交攻击者暴力破解开始时间
查看 docker 启动的服务
1 | root@ubuntu:/home/webserver# docker ps -a |
查看 phpmyadmin 的日志
1 | docker logs 6801404902b1 |
发现大量访问记录
1 | palu{2025:03:05:58} |
4. 提交攻击者留下的 flag1
查看 PC2 的任务计划程序
1 | taskschd.msc |
1 | palu{pc3_zgsfqwerlkssaw} |
5. 提交攻击者留下的 flag2
在 PC2 的 C 盘下搜索字符串
1 | findstr /s /i "palu{" *.* 2>nul |
发现 flag 在 a.bat 里
1 | palu{nizhidaowoyouduoainima} |
6. 提交攻击者留下的 flag3
在 webserver 的 /var/www/html/index.php 中发现数据库密码 TOOR@123
在 mysql 登录
1 | sql@ubuntu:~$ mysql -u root -p |
分别拿到下面几条 order_content
1 | W3siaXRlbV9pZCI6MSwiaXRlbV9uYW1lIjoi5bCP5pe25aSN5Y2wIiwicXVhbnRpdHkiOjIsInByaWNlIjoxOTkuOTl9LHsiaXRlbV9pZCI6MywiaXRlbV9uYW1lIjoi6Iux5Zu95aSN5Y2wIiwicXVhbnRpdHkiOjEsInByaWNlIjo1OS45OX1d |
flag 在最后一条里
1 | palu{sqlaabbccsbwindows} |
7. 提交钓鱼文件的哈希 32 位大写
第 2 题的检测结果里面有:安恒云沙箱
1 | palu{2977CDAB8F3EE5EFDDAE61AD9F6CF203} |
8. 提交攻击者留下的 webshell-1 密码
从第 1 题可以知道两个 webshell 分别是 shell.php
和 a.php
,分别搜索后查看
1 | find / -name "shell.php" |
1 | palu{hack} |
9. 提交攻击者开放端口
webserver 下的 /var/lib/docker/overlay2/4bc4b1046f364a2489bc8a2636f6be58ae1620139c2198b10610563e4860313f/diff/var/www/html/clean.sh
找到端口 1133
webserver 下的 /tmp/r.sh
找到端口 1144
PC2 下的简历.exe
请求的端口 8084
1 | palu{1133,1144,8084} |
10. 提交攻击者留下的 webshell 密码 2
同第 8 题
1 | palu{00232} |
11. 提交攻击者留下的隐藏账户的密码
1 | palu{wmx_love} |
12.[溯源] 攻击者的邮箱
逆向病毒简历.exe
找到用户名 n0k4u
搜索发现仓库 n0k4u/whatthis: 这是嘛呀?
然后先找到了第 13 题的 QQ 号 Add files via upload · n0k4u/whatthis@9fde50f
这条 commit 的链接后面加.patch
1 | From 9fde50f0bc13cc2bf916ecc95ca912bc7f0cd114 Mon Sep 17 00:00:00 2001 |
1 | palu{n0k4u@outlook.com} |
13. 提交溯源后得到的 flag
从第 12 题得到 QQ 号 3834239649
搜索添加好友
1 | palu{loveyouibiejv} |
应急响应主线
解压密码
1 | Skills@@@Skills@@@Skills |
主机名 | IP 地址 | 操作系统登录 | 服务登录 |
---|---|---|---|
JumpServer | 192.168.20.100 | ubuntu/ubuntu | http://192.168.20.100/ admin/Skills@2020 |
sshServer | 192.168.20.108 | ubuntu/Skills@sshserver | |
Server01 | 192.168.20.103 | ubuntu/Skills@server | http://192.168.20.103:16303/9bbe149955 c394c5de46/e36c392092 http://192.168.20.102:3000/ admin@qq.com/ 未知 |
Mysql | 192.168.20.101 | ubuntu/Skills@mysql | http://192.168.20.101:20221/4a883f0c56 64a44f8137/f8941f8eb7 root/mysql_QPiS8y |
Waf | 192.168.20.102 | ubuntu/Skills@waf | https://192.168.20.102:9443/ admin/VF6NXMs7 |
palu01 | 192.168.20.200 | Parloo/Skills@01 | |
palu02 | 192.168.20.201 | Parloo/Skills@02 | |
palu03 | 192.168.20.202 | Parloo/Skills@03 | 此靶机为 "近源" 对应靶机 |
solar_Linux 后门排查
跳板机疑似被遗留后门,请排查
1、找到可疑进程完整路径
2、找到被横向的服务器 IP
3、连接被横向服务器
flag 格式为 flag {base64 {完整路径}| 服务器 IP | 服务器中 flag 文本}
root:Solar@2025_05_palu!
查看当前建立的网络连接
1 | sudo ss -antup |
得到 pid 是 11,被横向的服务器 IP 是 49.232.112.164
查找 pid 是 11 的进程
1 | ps aux | grep 11 |
得到可疑进程完整路径是 /usr/lib/systemd/systemd-login
1 | ssh 49.232.112.164 |
ssh 连接得到 flag 文件内容为 ZX0001S
1 | flag{L3Vzci9saWIvc3lzdGVtZC9zeXN0ZW1kLWxvZ2lu|49.232.112.164|ZX0001S} |
1. 提交堡垒机中留下的 flag
标签列表
1 | palu{2025_qiandao_flag} |
2. 提交 WAF 中隐藏的 flag
身份验证 -> 配置
1 | palu{2025_waf} |
3. 提交 Mysql 中留下的 flag
从说明手册拿到 MySQL 的登录信息 root/mysql_QPiS8y
,然后用 Navicat 连
1 | palu{Mysql_@2025} |
4. 提交攻击者的攻击 IP
1 | palu{192.168.20.107} |
5. 提交攻攻击者最早攻击时间
第 4 题的图里有
1 | palu{2025-05-05-00:04:40} |
6. 提交 web 服务泄露的关键文件名
在防护应用下四个服务的应用路由里找
1 | palu{key.txt} |
7. 提交泄露的邮箱地址
访问第 7 题找到的关键文件 http://192.168.20.102/bak/key.txt
1 | palu{parloo@parloo.com} |
8. 提交立足点服务器 ip 地址
第 4 题图里的日志
1 | palu{192.168.20.108} |
9. 提交攻击者使用的提权的用户和密码
1 | cat /etc/shadow |
查找 sshserver 下的用户
1 | parloo:$y$j9T$bLw/vAsrL.71gbi6NQPhI/$lpN9vHI0MYs/YL19ERrpaRpdrC37f5ya520xeG9BGiC:20212:0:99999:7::: |
把 parloo:$y$j9T$bLw/vAsrL.71gbi6NQPhI/$lpN9vHI0MYs/YL19ERrpaRpdrC37f5ya520xeG9BGiC
保存到 hash.txt
用 john 爆破
1 | john --format=crypt hash.txt |
1 | palu{parloo/parloo} |
10. 提交攻击者留下的的文件内容作为 flag 提交
1 | find / -iname "flag" 2>/dev/null |
在 /home/parloo
找到 parloo_flag01
1 | cat /home/parloo/parloo_flag01 |
1 | palu{hi_2025_parloo_is_hack} |
11. 提交权限维持方法服务的名称
1 | systemctl list-units --type=service --state=running |
先查看正在运行的服务
其中的 rootset-test.service
十分可疑
1 | systemctl cat rootset-test.service |
查看它的配置文件:
1 | [Unit] |
/usr/bin/b4b40c44ws
非常可疑,文件名看起来像是随机生成的,很可能是恶意程序。
Restart=always
无论服务退出的原因是什么,都会自动重启,可能是攻击者用来维持后门的。
基本可以确定 rootset-test
就是用于维持权限的了,但是把这个提交了发现不对。
注意到有一个名字很像的 rootset.service
,查看它的配置文件:
1 | [Unit] |
和 rootset-test
的几乎一模一样,提交上去这回正确了。
1 | palu{rootset} |
12. 提交攻击者攻击恶意服务器连接地址作为 flag 提交
把 b4b40c44ws
提取出来丢奇安信情报沙箱分析
1 | palu{47.101.213.153} |
13. 找到系统中被劫持的程序程序名作为 flag 提交
按时间排序,发现 id
近期被修改过
提取出来丢到奇安信情报沙箱发现也是恶意程序
1 | palu{id} |
14. 找到系统中存在信息泄露的服务运行端口作为 flag 提交
1 | palu{8081} |
15. 提交 Parloo 公司项目经理的身份证号作为 flag 提交
上题找到的 http://192.168.20.103:8081/
1 | palu{310105198512123456} |
16. 提交存在危险功能的操作系统路径作为 flag 提交
1 | / # cat /etc/passwd |
直接修改会由于是 root
用户而修改失败,因此使用别的用户进行操作
1 | / # su git |
接下来就可以用 admin/12345678
登录 gitea 了
在 parloo-code/main.go 位于 main - parloo-code - Gitea: Git with a cup of tea 找到后门入口
1 | palu{/admin/parloo} |
17. 提交近源机器中恶意程序的 MD5 作为 flag 进行提交
检测结果:奇安信情报沙箱
1 | palu{0f80a82621b8c4c3303d198d13776b34} |
18. 提交攻击者留下的恶意账户名称 md5 后作为 flag 进行提交
1 | palu{d78b6f30225cdc811adfe8d4e7c9fd34} |
19. 提交内部群中留下的 flag 并提交
看聊天记录
1 | palu{nbq_nbq_parloo} |
20. 请提交攻击者使用维护页面获取到的敏感内容作为 flag 进行提交
进入维护页面 http://192.168.20.102:8081/admin/parloo
在面板直接搜 command.log
就行
1 | palu{Server_Parloo_2025} |
21. 提交获取敏感内容 IP 的第一次执行命令时间作为 flag 进行提交
从上一题就知道攻击者的 IP 是 192.168.20.1
搜索这个 IP 然后从上往下一条条看
1 | palu{2025-05-04:15:30:38} |
22. 提交攻击者使用的恶意 ip 和端口 flag 格式为
1 | palu{10.12.12.13:9999} |
23. 提交重要数据的明文内容作为 flag 提交
在 PC3 桌面找到重要的数据.txt
,密文如下:
1 | c3a1c3c13e326020c3919093e1260525045e |
在 encode/encode.py 位于 main - encode - Gitea: Git with a cup of tea 找到加密代码
1 | def custom_encrypt(text, key): |
写个脚本爆破一下
1 | import string |
密钥太长了爆破不现实。根据 palu{
解出密钥的前半段是 MySec
,可以进一步猜到密钥以 MySecret
开头,然后再以 MySecret
开头进行爆破
爆出来一堆 palu{Pas***rd-000}
格式的符合条件的结果,不难猜到明文是 palu{Password-000}
用 palu{Password-000}
推出来的密钥是 MySecretKey
1 | palu{Password-000} |
24. 提交恶意维权软件的名称作为 flag 进行提交
启动项里的未知程序
经过奇安信情报沙箱检测发现是恶意程序
1 | palu{svhost} |
25. 提交恶意程序的外联地址
一眼 Python 打包的,解包后在线分析
1 | palu{88.173.90.103} |
26. 提交攻击者使用的恶意 dnslog 域名作为 flag 进行提交
同第 20 题在面板直接搜 command.log
1 | palu{np85qqde.requestrepo.com} |
27. 提交寻找反序列化漏洞的端口作为 flag 进行提交
各试一遍就知道了
1 | palu{9999} |
28. 提交 web 服务泄露的密钥作为 flag 进行提交
http://192.168.20.102:9999/actuator/heapdump
发现存在 heapdump 泄露,用 whwlsfb/JDumpSpider 分析
1 | palu{QZYysgMYhG6/CzIJlVpR2g==} |
29. 提交攻击者开始攻击的时间作为 flag 进行提交
访问日志的第一条
1 | palu{2025/05/13:16:45:19} |
30. 提交攻击者在 server 中留下的账户密码作为 flag 进行提交
1 | cat /etc/shadow |
把密码信息提取出来
1 | parloohack:$y$j9T$RlIs4rqy6D2PI46ntcuwZ0$WFD6WgX3XC4zp/5Y.Jq9yLcfhHK5Rdg6IeDq2Rrl791:20221:0:99999:7::: |
hashcat 还不支持 yescrypt,用 john 爆破,把上面的哈希保存到 hash.txt
后运行 john hash.txt --wordlist=./wordlists/rockyou.txt --format=crypt
1 | Using default input encoding: UTF-8 |
1 | palu{parloohack/123456} |
31. 提交攻击者维权方法的名称作为 flag 进行提交
查看 server 的所有服务单元
1 | systemctl list-units --type=service --all |
1 | palu{parloohack_script.service} |
32. 提交攻击者留下的木马 md5 后作为 flag 进行提交
1 | palu{4123940b3911556d4bf79196cc008bf4} |
33. 提交攻击者留下的溯源信息作为 flag 进行提交
PC2 的谷歌浏览器里面查看密码
1 | palu{X5E1yklz1oAdyHBZ} |
34. 提交攻击者的 githubID 作为 flag 进行提交
上一题的用户名是 QQ 号,查看他的 QQ 空间
1 | palu{ParlooSEc} |
35. 提交攻击者在 github 下留下的的内容作为 flag 进行提交
ParlooSEc/fffflllgggg: fffflllgggg
1 | palu{s5o3WkX33hptyJjk} |
36. 提交恶意用户的数量作为 flag 进行提交
PC1
从 parloo01
开始的,所以是 99 个
1 | palu{99} |
37. 提交恶意用户的默认密码作为 flag 进行提交
不知道为啥用 mimikatz 提取失败了,所以这里用 R-Studio 把它们提出来分析
在 C:\Windows\System32\config
提取出 SAM
和 SYSTEM
1 | lsadump::sam /sam:sam /system:system |
全都是 32ed87bdb5fdc5e9cba88547376818d4
1 | palu{123456} |
38. 提交业务数据中攻击者留下的信息作为 flag 进行提交
gitea 的数据库
1 | palu{crP1ZIVfqrkfdhGy} |
39. 提交私人 git 仓库中留下的内容作为 flag 进行提交
base64 解码
1 | palu{FO65SruuTukdpBS5} |
40. 提交存在在 mysql 服务器中的恶意程序的 MD5 作为 flag 进行提交
1 | more .bash_history |
查看执行过的命令
发现攻击者计算过 ~
下的.a
的 md5 值,并将其复制到 /home/ubuntu
后将 /home/ubuntu/.a
删除
1 | palu{ba7c9fc1ff58b48d0df5c88d2fcc5cd1} |
41. 提交恶意程序中模拟 c2 通信的函数名称作为 flag 进行提交
提出来逆向分析
1 | palu{simulate_network_communication} |
42. 提交恶意程序创建隐藏文件的名称作为 flag 提交
1 | palu{.malware_log.txt} |
43. 提交恶意程序中模拟权限提升的函数作为 flag 进行提交
1 | palu{simulate_privilege_escalation} |
44. 提交被钓鱼上线的用户名作为 flag 进行提交
1 | palu{Parloo-子怡} |
45. 提交恶意程序的所在路径作为 flag 进行提交
上一题的图有
1 | palu{C:\Users\Public\Nwt\cache\recv\Parloo-沉沉} |
46. 分析恶意程序的反连地址作为 flag 进行提交
1 | palu{47.101.213.153} |
47. 提交恶意 c2 的服务器登录的账号密码作为 flag 进行提交
PC2 的谷歌浏览器里面查看密码
1 | palu{admin/admin@qwer} |