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.livewatamet%Nothingtoworry!'
Try"help" to get a list of possible commands.
smb: > dir
. DR 0SatDec1209:34:192020
.. DR 0SatDec1209:34:192020
Default DHR 0MonNov1602:20:082020
desktop.ini AHS 174SatSep1515:16:482018
Public DR 0WedDec1215:45:152018
watamet D 0SatDec1209:37:482020
从这我们可以得知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
Beginby 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 dothisby disabling LanManServerand 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 LanManServerand 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了
原文始发于微信公众号(实战安全研究):TryHackMe-Holo【Windows域渗透】
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论