Holo
Holo是一个Active Directory(AD)和Web-App攻击实验室,旨在教授核心Web攻击媒介和更高级的AD攻击技术。此网络模拟公司网络上的外部渗透测试。
Holo 是一个 Active Directory 和 Web 应用程序攻击实验室,教授核心 Web 攻击媒介和高级\晦涩的 Active Directory 攻击以及一般的红队方法和概念。该网络模拟了具有一个预期杀伤链的公司网络“Hololive”上的外部渗透测试。所有概念和漏洞都将以红队方法和思维方式教授,并在整个网络中教授其他方法和技术。
网络拓扑
外部Web服务器信息收集
端口扫描
nmap
Web
进到80是一个wordpress
还有个域名,写进hosts
holo.live
www.holo.live
vhost扫描
ffuf扫一下
[Status: 200, Size: 7515, Words: 639, Lines: 272, Duration: 3767ms]
* FUZZ: dev
[Status: 200, Size: 1845, Words: 453, Lines: 76, Duration: 3776ms]
* FUZZ: admin
[Status: 200, Size: 21405, Words: 1285, Lines: 156, Duration: 517ms]
* FUZZ: www
加进hosts
对admin子域扫目录
robots.txt
直接访问creds.txt是403
LFI
在dev下,talents.php下通过img.php来加载图片,可能存在lfi
下载creds.txt
查看
Foothold
使用这组凭据回到admin子域下登录
查看dashboard.php页面源码发现一条注释
尝试利用这个参数进行RCE
python3可用,直接常规python3反向shell
Docker逃逸
传个nmap扫一下网段
在/var/www/admin下我们可以发现到.1数据库的凭据
进到数据库我们可以找到这个username
当前账户有权限写入文件,并且.1机器还有web,所以直接写shellcode
rce后常规python3反向shell
.33机器本地权限提升
find suid
常规docker suid提权
通过docker images找到ubuntu的image id然后挂载并且进入shell
.33机器本地简单持久化
为了完成房间任务,这里只好跟着任务走
linuxrulez
内网信息收集
内网扫描
传个nmap过去扫一下网段
除开33和250,只发现了30 (DC)、31、35
sshuttle隧道
.31机器WEB枚举
重置密码时,服务端将user_token直接返回到客户端,我们在burp也可以看到这一点
将user_token丢到user_token参数
登录后我们有个图片上传点
简单扫一下目录我们就能够找到它
当我们尝试执行命令时,它就会被杀掉
直接一个php短 payload
.31机器持久化
直接加个账户
关defender上C2
域凭据收集
我们可以通过上传mimikatz来尝试获取凭据票证
我们也可以在c2中运行mimikatz模块,凭据将会自动保存在凭据页中
BloodHound
runas注入watamet凭据
跑SharpHound
把结果回传攻击机
.35机器崩了,所以重置了一下整个环境
.35机器立足点
──(ming👻m1n9k1n9-parrot)-[~/Hololive]
└─$ smbclient //10.200.107.35/Users -U 'holo.live\watamet%Nothingtoworry!'
Try "help" to get a list of possible commands.
smb: \> dir
. DR 0 Sat Dec 12 09:34:19 2020
.. DR 0 Sat Dec 12 09:34:19 2020
Default DHR 0 Mon Nov 16 02:20:08 2020
desktop.ini AHS 174 Sat Sep 15 15:16:48 2018
Public DR 0 Wed Dec 12 15:45:15 2018
watamet D 0 Sat Dec 12 09:37:48 2020
从这我们可以得知watamet可以登录到.35
AppLocker绕过
可执行目录扫描
传SharpEDRChecker
.35本地权限提升
在Seatbelt结果中,我发现了.32
根据房间的指示,我并没有找到与任务攻击路径有关的计划任务,这是环境的问题,同时通过wp得知另一个攻击路径PrintNightmare
NTLM中继 - DC
Inveigh看到.32机器有smb请求到.35
虽然我们目前还不能得知这是哪个账户的smb请求,但是我们可以对任一“未强制启用smb签名”的机器进行ntlm relay
这里我们并不打算按照房间教导的来,因为我在CPTS中也遇到了类似问题,当我们并不打算使用C2时,我们应该如何达到目的
是的,正如问题描述那样,在目标windows机器上,并不会像我们的攻击机那样携带着各种武器工具包。
事实上hololive房间已经给出一种方法即彻底关闭windows原有smb服务,并且通过端口转发将我们监听的445转发到我们的攻击机上最后再进行ntlm relay
Begin by disabling NetLogon. Find the command used below.
Command used: sc stop netlogon
Next, we need to disable and stop the SMB server from starting at boot. We can do this by disabling LanManServer and modifying the configuration. Find the command used below.
Command used: sc stop lanmanserver and sc config lanmanserver start= disabled
To entirely stop SMB, we will also need to disable LanManServer and modify its configuration. Find the command used below.
Command used: sc stop lanmanworkstation and sc config lanmanworkstation start= disabled
然而令我苦恼的一个问题是我如何在不破坏甚至是无法关闭smb服务的情况下进行这一切呢?
如果是C2,那么它会很轻松帮我们解决这一切
但是今天我们要思考另一种方式
首先目标机器上肯定无法允许我们直接运行htlm relay脚本,同时我们也无法进行端口转发,因为445已被占用
所以我们能做的只有端口流量重定向
端口流量重定向
我前不久学习CRTO时,学习了WinDivert的一个用途,但并没有具体教导如何利用
我在github找到了CS(C2)的端口流量重定向插件
由 Praetorian Inc 为 Cobalt Strike C2 创建的原始 PortBender 的 PE 改编版 [1]。它是一种 TCP 端口重定向实用程序,允许红队操作员将发往一个 TCP 端口(例如 445/TCP)的入站流量重定向到另一个 TCP 端口(例如 8445/TCP)。该工具还允许操作员模拟 Duqu 2.0 威胁参与者使用的“PortServ.sys”功能中利用的后门/持久性机制。
我看到了该插件是基于WinDivert开发的,只是可惜它是CS的插件
我随之寻找到了PortBender的exe二进制可执行文件版本,这一发现无疑是至关重要的
https://github.com/exil-security/PortBender
使用它就像使用原版的插件一样轻松,只是我们脱离了C2
现在我们只需要利用chisel来做一个8445端口转发到我们攻击机的445端口即可
ntlmrelayx.py,我们把中继的目标指向DC
hostname
通过输出我们看见是哪个用户
在bloodhound中我们可以快速的发现它究竟拥有哪些权力
socks
这里可能需要smbexec,因为psexec似乎不行
常规创建账户加写用户组
至此,所有机器已向我们妥协
懒得上C2了