
CVE-2015-3224 익스플로잇 - Rails Web Console RCE
CVE-2015-3224에 대한 익스플로잇의 JavaScript(Node.js) 구현입니다. 이 도구는 취약한 버전의 web-console 젬을 실행하는 Ruby on Rails 애플리케이션을 대상으로 하며, 인증되지 않은 원격 코드 실행(RCE)을 허용합니다.
CVE-2015-3224는 공격자가 Rails web-console 젬의 IP 허용 목록 보호를 우회할 수 있게 합니다.
web-console는 개발 중에만 사용하도록 의도된 디버깅 도구입니다. 기본적으로 127.0.0.1(localhost) IP 주소로의 접근을 제한합니다. 그러나 취약한 버전에서는 적절한 검증 없이 X-Forwarded-For HTTP 헤더를 기반으로 클라이언트의 IP 주소를 확인합니다.
특정 스푸핑된 IP(예: 0000::1)로 요청을 조작함으로써 공격자는 애플리케이션이 요청이 신뢰할 수 있는 로컬 소스에서 오는 것으로 믿도록 속일 수 있습니다. 콘솔이 Ruby 코드를 평가하기 때문에 이는 즉시 **원격 코드 실행(RCE)**으로 이어집니다.
이 스크립트는 두 가지 주요 단계로 익스플로잇 과정을 자동화합니다:
정보 수집 및 경로 추출:
data-remote-path를 추출합니다. 이는 콘솔과 상호작용하는 데 필요한 고유 세션 ID입니다.페이로드 주입:
X-Forwarded-For: 0000::1 헤더를 주입합니다.input 매개변수 내에 사용자 정의 명령을 전송합니다(form-url-encoded 본문으로 올바르게 포맷).fetch 지원을 위해 v18 이상 권장).저장소를 클론하고 Node.js로 스크립트를 직접 실행하세요:
# Syntax
node exploit.js [TARGET_URL] [COMMAND]
# Example
node exploit.js http://vulnerable-site.com "uname -a"
[*] Target: http://vulnerable-site.com
[*] Command: whoami
[+] Console path found: console/repl_sessions/cd984a0d............
[+] Command Output:
---------------------------------------------------
webrick
---------------------------------------------------
이 취약점을 해결하려면 Gemfile에서 web-console 젬을 버전 2.1.3 이상으로 업데이트하세요:
gem 'web-console', '>= 2.1.3'
또는 프로덕션 환경에서 웹 콘솔이 엄격하게 비활성화되어 있는지 확인하세요.
MIT 라이선스에 따라 배포됩니다.