정보 수집 (Enumeration)
rustscan으로 열린 포트를 스캔한다.
rustscan -a 10.129.229.41 -- -sC -sV -oN nmap
주요 포트는 22(SSH), 80(HTTP)이며, 80번 포트에서 HTTP 서비스가 운영 중임을 확인할 수 있다.
응답 헤더 또는 리다이렉션에서 tickets.keeper.htb 도메인을 확인하고 해당 ip를 /etc/hosts 에 등록한다.


로그인 페이지에서 기본 자격 증명을 시도해본다. Request Tracker의 기본 관리자 계정 root:password로 로그인이 성공한다.

관리자 권한으로 로그인에 성공한다.

초기 침투 — 계정 탈취
Admin → Users 탭에 들어가면 시스템에 등록된 계정 정보를 조회할 수 있다.

그중에서 Inorgaard 라는 계정명이 눈에 띄는데 해당 계정 정보로 들어가면 비밀번호가 Comments 필드에 평문으로 노출된 것을 확인 가능하다.


확보한 자격 증명으로 SSH 로그인을 시도한다. 해당 계정 정보 (lnorgaard: Welcome2023!)로 ssh 로그인 성공한다.
권한 상승 (LPE)
lnorgaard 셸에서 홈 디렉터리를 확인하면 RT30000.zip파일이 존재한다. 해당 파일의 압축을 풀면 KeePass 프로세스의 메모리 덤프 파일(KeePassDumpFull.dmp)을 확인 가능하다.


KeePass 에는 메모리 덤프로부터 마스터키를 부분적으로 복구할 수 있는 취약점(CVE-2023-32784)이 존재하는 버전이 있다. KeePass 2.x는 마스터 패스워드 입력창에 SecureTextBoxEx 라는 커스텀 텍스트박스를 사용하는데, 문자를 하나씩 입력할 때마다 "이전 문자는 placeholder로 가리고 새 문자만 노출"되는 관리 문자열이 생성되며, 이 문자열이 지워지지 않고 메모리에 그대로 남아 있다. 다만 가장 처음 입력한 문자는 가릴 "이전 문자"가 없어 이 패턴 자체가 생성되지 않기 때문에, 프로세스 덤프에서 마스터키를 첫 번째 문자를 제외하고 거의 그대로 복구할 수 있다.
- https://nvd.nist.gov/vuln/detail/cve-2023-32784
- https://meetcyber.net/extracted-keepass-memory-forensics-via-cve-2023-32784-master-key-recovery-tryhackme-359e9bdc85ca
keepass-dumper를 사용해 덤프 파일에서 마스터키 문자를 추출한다.
python keepass_dump.py -f KeePassDumpFull.dmp --skip --debug --recover

도구 실행 결과 마스터 패스워드의 문자 조합 후보가 출력된다.
패스워드 치고는 이상해서, 해당 문구를 구글링 해보면 덴마크어 단어인 것으로 보이는 Rødgrød Med Fløde(베리로 만든 덴마크 전통 디저트 이름)가 나온다.

추측한 문구를 마스터 패스워드로 입력해 KeePassXC로 해당 KDBX 데이터베이스 파일을 열어본다.
KeePassXC 사용해 본 계정 항목 목록 중 root 계정의 비밀번호로 보이는 값이 확인된다.

해당 계정 정보를 사용해 root로 ssh 로그인을 시도하면 비밀번호 인증은 거부된다. SSH 설정에서 root 계정은 키 기반 인증만 허용하기 때문으로, 볼트(vault) 안에서 다른 항목을 더 탐색해야 한다.

볼트의 다른 항목을 확인하면 root의 SSH 접속에 사용되는 것으로 보이는 PuTTY 개인키 파일(id_rsa.ppk)이 첨부되어 있다.

PuTTY-User-Key-File-3: ssh-rsa
Encryption: none
Comment: rsa-key-20230519
Public-Lines: 6
AAAAB3NzaC1yc2EAAAADAQABAAABAQCnVqse/hMswGBRQsPsC/EwyxJvc8Wpul/D
8riCZV30ZbfEF09z0PNUn4DisesKB4x1KtqH0l8vPtRRiEzsBbn+mCpBLHBQ+81T
EHTc3ChyRYxk899PKSSqKDxUTZeFJ4FBAXqIxoJdpLHIMvh7ZyJNAy34lfcFC+LM
Cj/c6tQa2IaFfqcVJ+2bnR6UrUVRB4thmJca29JAq2p9BkdDGsiH8F8eanIBA1Tu
FVbUt2CenSUPDUAw7wIL56qC28w6q/qhm2LGOxXup6+LOjxGNNtA2zJ38P1FTfZQ
LxFVTWUKT8u8junnLk0kfnM4+bJ8g7MXLqbrtsgr5ywF6Ccxs0Et
Private-Lines: 14
AAABAQCB0dgBvETt8/UFNdG/X2hnXTPZKSzQxxkicDw6VR+1ye/t/dOS2yjbnr6j
oDni1wZdo7hTpJ5ZjdmzwxVCChNIc45cb3hXK3IYHe07psTuGgyYCSZWSGn8ZCih
kmyZTZOV9eq1D6P1uB6AXSKuwc03h97zOoyf6p+xgcYXwkp44/otK4ScF2hEputY
f7n24kvL0WlBQThsiLkKcz3/Cz7BdCkn+Lvf8iyA6VF0p14cFTM9Lsd7t/plLJzT
VkCew1DZuYnYOGQxHYW6WQ4V6rCwpsMSMLD450XJ4zfGLN8aw5KO1/TccbTgWivz
UXjcCAviPpmSXB19UG8JlTpgORyhAAAAgQD2kfhSA+/ASrc04ZIVagCge1Qq8iWs
OxG8eoCMW8DhhbvL6YKAfEvj3xeahXexlVwUOcDXO7Ti0QSV2sUw7E71cvl/ExGz
in6qyp3R4yAaV7PiMtLTgBkqs4AA3rcJZpJb01AZB8TBK91QIZGOswi3/uYrIZ1r
SsGN1FbK/meH9QAAAIEArbz8aWansqPtE+6Ye8Nq3G2R1PYhp5yXpxiE89L87NIV
09ygQ7Aec+C24TOykiwyPaOBlmMe+Nyaxss/gc7o9TnHNPFJ5iRyiXagT4E2WEEa
xHhv1PDdSrE8tB9V8ox1kxBrxAvYIZgceHRFrwPrF823PeNWLC2BNwEId0G76VkA
AACAVWJoksugJOovtA27Bamd7NRPvIa4dsMaQeXckVh19/TF8oZMDuJoiGyq6faD
AF9Z7Oehlo1Qt7oqGr8cVLbOT8aLqqbcax9nSKE67n7I5zrfoGynLzYkd3cETnGy
NNkjMjrocfmxfkvuJ7smEFMg7ZywW7CBWKGozgz67tKz9Is=
Private-MAC: b0a0fd2edf4f0e557200121aa673732c9e76750739db05adc3ab65ec34c55cb0
해당 내용을 id_rsa.ppk 파일로 저장한다.
puttygen 도구를 사용해 ppk 포맷을 OpenSSH 기반 포맷으로 변경가능하다. puttygen 을 사용하기 위해서는 putty-tools 설치가 필요하다.
apt-get install putty-tools
puttygen을 이용해 ppk 파일을 OpenSSH 포맷으로 변환한다.
puttygen id_rsa.ppk -O private-openssh -o id_rsa

변환한 키를 사용해 root로 SSH 접속을 시도한다. 접속에 성공해 root 셸을 획득하고 root.txt 플래그를 확인한다.
ssh -i id_rsa root@10.129.229.41

'HTB' 카테고리의 다른 글
| HTB - Soccer (0) | 2026.08.16 |
|---|---|
| HTB - Broker (0) | 2026.07.30 |
| HTB - Servmon (0) | 2026.07.22 |
| HTB - Help (0) | 2026.07.18 |
| HTB - Sau (0) | 2026.07.18 |

































