Share
## https://sploitus.com/exploit?id=F9BCBF97-222B-5277-983B-EE47DF079EB7
# Research: TeamCity Authentication Bypass (CVE-2024-27198) Simulation
  
## ํ๋ก์ ํธ ์๊ฐ (Project Overview)
๋ณธ ํ๋ก์ ํธ๋ **JetBrains TeamCity**์์ ๋ฐ๊ฒฌ๋ ์ฌ๊ฐํ ์ธ์ฆ ์ฐํ ์ทจ์ฝ์ ์ธ **CVE-2024-27198**์ ์ฐ๊ตฌํ๊ณ ์์ฐํ๊ธฐ ์ํด ๊ตฌ์ถ๋ **์ฐ๊ตฌ์ฉ PoC(Proof of Concept) ํ๊ฒฝ**์
๋๋ค.
์ด ์ทจ์ฝ์ ์ TeamCity ์๋ฒ์ ์น ๊ตฌ์ฑ ์์์์ ๋ฐ์ํ๋ ๋ก์ง ์ค๋ฅ๋ฅผ ์ด์ฉํ์ฌ, ๊ณต๊ฒฉ์๊ฐ ์ธ์ฆ ์์ด ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๋ REST API ์๋ํฌ์ธํธ์ ์ ๊ทผํ ์ ์๊ฒ ํฉ๋๋ค. ๋ณธ ํ๊ฒฝ์์๋ ์ค์ ์ทจ์ฝํ ๋ฒ์ ์ TeamCity ์๋ฒ๋ฅผ Docker ์์คํ
์ผ๋ก ๊ตฌ์ถํ์ฌ, **์ธ์ฆ ์ฐํ**๋ถํฐ **๊ด๋ฆฌ์ ๊ณ์ ํ์ทจ**, ๊ทธ๋ฆฌ๊ณ **์
์ฑ ํ๋ฌ๊ทธ์ธ์ ํตํ RCE(์๊ฒฉ ์ฝ๋ ์คํ)**๊น์ง์ ์ ์ฒด ๊ณต๊ฒฉ ์ฒด์ธ์ ์๋ฎฌ๋ ์ด์
ํฉ๋๋ค.
### ์ฐ๊ตฌ ๋ชฉํ
1. **Authentication Bypass** ์ทจ์ฝ์ ์ ๊ทผ๋ณธ ์์ธ(Path Traversal/Logic Error) ๋ถ์
2. REST API๋ฅผ ํตํ ๊ถํ ์์น(Privilege Escalation) ๊ณผ์ ์ดํด
3. CI/CD ์๋ฒ ์ฅ์
์ด ๊ณต๊ธ๋ง ๊ณต๊ฒฉ(Supply Chain Attack)์ ๋ฏธ์น๋ ์ํฅ ๋ถ์
---
## ๊ธฐ์ ์คํ (Tech Stack)
| ๊ตฌ๋ถ | ์คํ | ๋ฒ์ | ๋น๊ณ |
| :--- | :--- | :--- | :--- |
| **Application** | TeamCity Server | `2023.11.3` | **Vulnerable Version** |
| **Database** | HSQLDB | (Internal) | Data Storage |
| **Infrastructure** | Docker / Compose | - | Container Environment |
| **Exploit** | REST API / JSP | - | **Attack Vector** |
---
## ์ทจ์ฝ์ ๋ถ์ ๋ณด๊ณ ์ (Vulnerability Report)
๋ณธ ํ๋ก์ ํธ์์ ๋ถ์ํ ํต์ฌ ์ทจ์ฝ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
### 1. Authentication Bypass via URL Manipulation
* **CVE-2024-27198**
* **์ค๋ช
**: ํน์ URL ํจํด(์: `/hax?jsp=/app/rest/users;.jsp`)์ ์ฌ์ฉํ์ฌ ์ธ์ฆ ํํฐ๋ฅผ ์ฐํํ ์ ์์ต๋๋ค. ์ด๋ ์๋ฒ๊ฐ ์์ฒญ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ TeamCity ๋ด๋ถ ๋ก์ง ์ฌ์ด์ ๋ถ์ผ์น๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
* **์ํ๋**: **Critical (Full System Access)**
### 2. RCE via Malicious Plugin Upload
* **Methodology**
* **์ค๋ช
**: ํ๋ํ ๊ด๋ฆฌ์ ๊ถํ์ ์ด์ฉํ์ฌ ์
์ฑ JSP ์ฝ๋๊ฐ ํฌํจ๋ ํ๋ฌ๊ทธ์ธ์ ์
๋ก๋ํฉ๋๋ค. TeamCity๋ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํ ๋ ํฌํจ๋ ๋ฆฌ์์ค๋ฅผ ์น ๊ฒฝ๋ก์ ๋
ธ์ถ์ํค๋ฏ๋ก, ์ด๋ฅผ ํตํด ์น์(WebShell) ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
* **Payload ์์**: `curl -X POST -u "attacker:pass" -F "file=@malicious-plugin.zip" ...`
---
## ์คํ ๋ฐ ๊ฒ์ฆ (How to Reproduce)
์ฐ๊ตฌ ๋ฐ ๊ฒ์ฆ์ ์ํด ๊ฒฉ๋ฆฌ๋ ๋ก์ปฌ ํ๊ฒฝ์์ ์คํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
```bash
# 1. TeamCity ์๋ฒ ์คํ
docker-compose up -d
```
1. **Exploit Steps**:
* **Step 1**: `/hax?jsp=/app/rest/users;.jsp` ๊ฒฝ๋ก๋ฅผ ํตํด ๊ด๋ฆฌ์ ๊ณ์ ์์ฑ (Auth Bypass).
* **Step 2**: ์์ฑ๋ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ ์
์ฑ ํ๋ฌ๊ทธ์ธ ์
๋ก๋.
* **Step 3**: `/plugins/MaliciousWebShell/shell.jsp?cmd=id` ์ ์ (RCE ์ฑ๊ณต).
์์ธํ ์์์ ์คํฌ๋ฆฐ์ท์ [TESTING.md](TESTING.md) ํ์ผ์ ์ฐธ์กฐํ์ญ์์ค.
---
## ๋์ ๋ฐฉ์ (Mitigation)
* **์ฆ์ ์
๋ฐ์ดํธ**: JetBrains์์ ์ ๊ณตํ๋ ๋ณด์ ํจ์น๊ฐ ์ ์ฉ๋ ๋ฒ์ (`2023.11.4` ์ด์)์ผ๋ก ์ฆ์ ์
๋ฐ์ดํธํฉ๋๋ค.
* **๋คํธ์ํฌ ๊ฒฉ๋ฆฌ**: ๊ด๋ฆฌ์ ์ธํฐํ์ด์ค๋ฅผ ๊ณต์ฉ ์ธํฐ๋ท์ ๋
ธ์ถํ์ง ์๊ณ , VPN์ด๋ ์ ๋ขฐํ ์ ์๋ IP ๋์ญ์ผ๋ก ์ ํํฉ๋๋ค.
* **์ ๊ธฐ์ ๊ฐ์ฌ**: ์ธ๊ฐ๋์ง ์์ ๊ด๋ฆฌ์ ๊ณ์ ์์ฑ์ด๋ ํ๋ฌ๊ทธ์ธ ์ค์น ์ฌ๋ถ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค.
---