React Server Components 원격 RCE 익스플로잇 도구
📖 도구 소개
React Server Components 원격 RCE 익스플로잇 도구는 React Server Components 및 Next.js 프레임워크의 원격 코드 실행 취약점을 대상으로 하는 보안 테스트 도구로, 그래픽 사용자 인터페이스를 제공하며 다양한 공격 모드와 일괄 탐지 기능을 지원합니다.
⚠️ 면책 조항: 본 도구는 승인된 보안 테스트 및 CTF 대회에서만 사용해야 하며, 불법 공격에 사용하는 것을 엄격히 금지합니다. 본 도구 사용으로 발생하는 모든 결과는 사용자 본인이 책임집니다.
🎯 취약점 영향 범위
React Server 영향을 받는 버전
- React Server 19.0.0
- React Server 19.0.1 (참고: 일부 초기 패치가 완전히 적용되지 않음)
- React Server 19.1.* (모든 19.1.x 버전)
- React Server 19.2.0
Next.js 영향을 받는 버전
- Next.js v15.0.0 - v15.0.4
- Next.js v15.1.0 - v15.1.8
- Next.js v15.2.x - v15.5.6
- Next.js v16.0.0 - v16.0.6
- Next.js v14.3.0-canary.77 이상의 Canary 버전
기타 영향을 받는 구성 요소
- Dify - AI 애플리케이션 개발 플랫폼
- NextChat - 채팅 애플리케이션 프레임워크
- 영향을 받는 버전의 React Server Components 또는 Next.js를 기반으로 구축된 기타 애플리케이션
주의: 애플리케이션에서 위의 버전 중 하나를 사용 중이라면 즉시 안전한 버전으로 업그레이드하거나 적절한 보호 조치를 취하는 것이 좋습니다.
✨ 기능 특징
🎯 핵심 기능
- 취약점 탐지: 대상에 React Server Components / Next.js RCE 취약점이 존재하는지 빠르게 탐지
- 명령 실행 결과 확인: 시스템 명령을 직접 실행하고 실행 결과를 확인
- 메모리 웹셸 주입: 대상 서버에 지속형 Webshell 주입
- 리버스 셸: 대상 시스템의 대화형 셸 획득
- 일괄 스캔: 여러 대상 URL을 일괄 탐지하여 취약한 시스템을 빠르게 식별
🔧 보조 기능
- 프록시 지원: HTTP 프록시 구성(예: Burp Suite)을 지원하여 트래픽 분석에 용이
- 사용자 정의 요청 헤더: 사용자 정의 HTTP 요청 헤더를 추가하여 간단한 보호를 우회
- 실시간 로그: 작업 로그를 실시간으로 표시하여 테스트 과정 추적에 용이
- 타임아웃 설정: 요청 타임아웃 시간을 사용자 정의하여 다양한 네트워크 환경에 대응
🚀 빠른 시작
환경 요구 사항
- Java 8 이상
- Windows / Linux / macOS 운영 체제
도구 실행
-
React Server Components 远程RCE.jar 파일을 더블클릭하여 실행하세요
-
또는 명령줄로 실행하세요:
java -jar React Server Components 远程RCE.jar
-
최초 실행 시 면책 조항이 표시되며, 내용을 주의 깊게 읽고 동의한 후 계속 사용하세요
📋 사용 가이드
1️⃣ 기본 구성
기능을 사용하기 전에 먼저 기본 정보를 구성해야 합니다:
- 대상 URL: 테스트할 대상 웹사이트 주소 입력 (예:
http://192.168.1.100:3000)
- 공격 경로: 애플리케이션의 경로 (기본값:
/apps, 대상에 따라 조정 가능)
- 타임아웃 시간: 요청 타임아웃 시간(초) (기본값: 30초)
- 사용자 정의 요청 헤더: 선택 사항, 한 줄에 하나씩, 형식:
Header-Name: value
2️⃣ 취약점 탐지
- 대상 URL과 기본 구성을 입력하세요
- "취약점 테스트" 버튼을 클릭하세요
- 탐지 결과를 기다리면 도구가 대상에 취약점이 존재하는지 자동으로 판단합니다
팁: 먼저 취약점 탐지를 수행하여 대상에 취약점이 존재하는지 확인한 후 후속 작업을 진행하는 것이 좋습니다.
🎮 공격 모드 상세 설명
모드 1: 명령 실행 결과 확인
적용 시나리오: 시스템 명령을 실행하고 실행 결과를 확인해야 하는 경우
사용 단계:
- "명령 실행 결과 확인" 탭으로 전환하세요
- 명령 입력란에 실행할 명령을 입력하세요 (예:
whoami, ipconfig, ls -la)
- "명령 실행" 버튼을 클릭하세요
- 아래 텍스트 영역에서 명령 실행 결과를 확인하세요
일반적인 명령 예시:
- Windows:
whoami, ipconfig, dir, net user
- Linux:
whoami, ifconfig, ls -la, uname -a
모드 2: 메모리 웹셸 주입
적용 시나리오: 대상 서버에 지속형 백도어를 남겨야 하는 경우
사용 단계:
-
"메모리 웹셸 주입" 탭으로 전환하세요
-
메모리 웹셸 접근 경로를 설정하세요 (예: /exec)
-
"메모리 웹셸 주입" 버튼을 클릭하세요
-
주입에 성공하면 다음과 같은 방식으로 명령을 실행할 수 있습니다:
访问:http://目标地址/exec?cmd=whoami
사용 설명:
- 메모리 웹셸은 대상 애플리케이션의 메모리에 등록되며 디스크에 파일을 남기지 않습니다
- 서버가 재시작되면 메모리 웹셸이 무효화됩니다
- URL 매개변수
cmd를 통해 실행할 명령을 전달합니다
모드 3: 리버스 셸
적용 시나리오: 대상 시스템의 대화형 셸을 획득해야 하는 경우
사용 단계:
-
로컬 머신에서 리스너를 시작하세요 (예: netcat 사용):
nc -lvnp 4444
-
"리버스 셸" 탭으로 전환하세요
-
리스너 IP(사용자 머신의 IP 주소)를 입력하세요
-
리스너 포트를 입력하세요 (예: 4444)
-
"리버스 셸 전송" 버튼을 클릭하세요
-
netcat 창으로 돌아가 셸 연결을 기다리세요
주의 사항:
- 대상 서버가 사용자의 리스너 IP와 포트에 접근할 수 있는지 확인하세요
- 방화벽에서 해당 포트의 인바운드 연결을 허용해야 합니다
- 실제 환경에서는 네트워크 정책에 의해 제한될 수 있습니다
모드 4: 일괄 탐지
적용 시나리오: 여러 대상을 대상으로 취약점 일괄 스캔이 필요한 경우
사용 단계:
- "일괄 탐지" 탭으로 전환하세요
- 텍스트 상자에 대상 URL 목록을 입력하세요 (한 줄에 하나씩)
- "스캔 시작" 버튼을 클릭하세요
- 스캔 결과를 확인하면 도구가 취약점이 존재하는 대상을 표시합니다
⚙️ 고급 구성
HTTP 프록시 구성
트래픽을 Burp Suite와 같은 패킷 캡처 도구로 전달하여 요청과 응답을 쉽게 분석할 수 있게 합니다.
구성 단계:
- 상단 메뉴 "설정" → "프록시 설정"을 클릭하세요
- "활성화"를 선택하세요
- 프록시 호스트를 입력하세요 (예:
127.0.0.1)
- 프록시 포트를 입력하세요 (예:
8080)
- "저장"을 클릭하세요
Burp Suite 구성:
- Burp Suite의 프록시 리스너가 시작되었는지 확인하세요
- 기본 리스너 주소:
127.0.0.1:8080
- Burp에서 도구가 전송하는 모든 요청을 가로채고 수정할 수 있습니다
프록시 상태 확인:
- 구성 완료 후 인터페이스 오른쪽 상단에 프록시 상태가 표시됩니다
- 녹색은 활성화됨, 회색은 미구성을 의미합니다
🛡️ 보안 권장 사항
- 승인된 환경에서만 사용: 대상 테스트에 대한 명확한 승인이 있는지 확인하세요
- 프로덕션 환경에 사용 금지: 프로덕션 시스템에 손상을 주지 않도록 하세요
- 테스트 데이터 보호: 테스트 과정에서 획득한 민감 정보를 안전하게 보관하세요
- 법규 준수: 승인되지 않은 침투 테스트는 법률 위반이 될 수 있습니다
- CTF 대회 사용: 본 도구는 CTF, 모의 훈련장 등 합법적인 환경에서 사용하기 적합합니다
❓ 자주 묻는 질문
Q1: "취약점이 탐지되지 않음" 메시지가 표시되면 어떻게 하나요?
가능한 원인:
- 대상 URL이 올바르지 않거나 서비스가 시작되지 않음
- 대상에 해당 취약점이 존재하지 않음
- 공격 경로 구성이 잘못됨
- 네트워크가 연결되지 않거나 방화벽에 차단됨
해결 방법:
- 대상 URL에 정상적으로 접근할 수 있는지 확인하세요
- 공격 경로 매개변수 조정을 시도해 보세요
- 네트워크 연결 및 프록시 설정을 확인하세요
Q2: 명령 실행 결과가 표시되지 않나요?
가능한 원인:
- 명령 실행은 성공했지만 출력이 없는 경우 (예: 일부 파일 쓰기 명령)
- 대상 시스템의 권한 제한
- 명령 구문 오류
해결 방법:
- 명확한 출력이 있는 명령을 실행해 보세요 (예:
id)
- 명령 구문이 올바른지 확인하세요
- 하단 로그 영역의 상세 정보를 확인하세요
Q3: 리버스 셸 연결이 실패하나요?
가능한 원인:
- 대상이 사용자의 리스너 IP에 접근할 수 없음
- 방화벽이 연결을 차단
- 포트가 사용 중
해결 방법:
- 리스너 서비스가 시작되었는지 확인하세요 (
nc -lvnp 端口)
- 방화벽 설정을 확인하고 해당 포트를 허용하세요
- IP 주소가 올바르게 입력되었는지 확인하세요 (대상과 같은 내부 네트워크에 있다면 내부 IP 사용)
Q4: 상세한 요청과 응답을 어떻게 확인하나요?
해결 방법:
- HTTP 프록시를 구성하세요 (예: Burp Suite)
- 프록시 도구에서 전체 HTTP 트래픽을 확인하세요
- 하단 로그 영역에도 주요 정보가 표시됩니다
📞 기술 지원
📜 저작권 고지
본 도구는 학습 및 승인된 보안 테스트 목적으로만 제공됩니다. 본 도구 사용으로 발생하는 모든 결과는 사용자가 부담하며, 개발자는 어떠한 책임도 지지 않습니다.
사이버 보안법 및 관련 법규를 준수하고 윤리적인 보안 연구자가 되시기 바랍니다!
테스트가 순조롭기를 바랍니다! 🎉