Share
## https://sploitus.com/exploit?id=4B37E2F7-AF8A-5A57-83D4-86CF8A47C6B9
# OpenSMTPD 원격 λͺ…λ Ή μ‹€ν–‰ 취약점 CVE-2020-7247

## κ°œμš”

OpenSMTPDλŠ” Unix 계열 μš΄μ˜μ²΄μ œμ—μ„œ μ‚¬μš©λ˜λŠ” SMTP μ„œλ²„ ν”„λ‘œκ·Έλž¨μ΄λ‹€. BSD, macOS, GNU/Linux λ“±μ—μ„œ μ‚¬μš©ν•  수 있으며, RFC 5321 SMTP ν”„λ‘œν† μ½œμ„ 기반으둜 λ™μž‘ν•œλ‹€.

CVE-2020-7247은 OpenSMTPDμ—μ„œ λ°œμ‹ μž λ˜λŠ” μˆ˜μ‹ μž μ£Όμ†Œλ₯Ό κ²€μ¦ν•˜λŠ” 과정이 μΆ©λΆ„ν•˜μ§€ μ•Šμ•„ λ°œμƒν•œ 원격 λͺ…λ Ή μ‹€ν–‰ 취약점이닀. κ³΅κ²©μžλŠ” μ‘°μž‘λœ SMTP μš”μ²­μ„ μ „μ†‘ν•˜μ—¬ μ„œλ²„μ—μ„œ μž„μ˜μ˜ λͺ…령을 μ‹€ν–‰ν•  수 μžˆλ‹€.

ν•΄λ‹Ή 취약점은 OpenSMTPD 6.6.2p1 λ²„μ „μ—μ„œ νŒ¨μΉ˜λ˜μ—ˆλ‹€.

## μ·¨μ•½ ν™˜κ²½
| ν•­λͺ© | λ‚΄μš© |
|---|---|
| 취약점 번호 | CVE-2020-7247 |
| μ·¨μ•½ μ†Œν”„νŠΈμ›¨μ–΄ | OpenSMTPD |
| μ·¨μ•½ 버전 | OpenSMTPD 6.6.1p1 |
| 취약점 μœ ν˜• | Remote Code Execution |
| μ‹€μŠ΅ ν™˜κ²½ | Docker / Vulhub |
| μ‚¬μš© 포트 | 8825:25 |

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

λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ μ·¨μ•½ν•œ OpenSMTPD ν™˜κ²½μ„ μ‹€ν–‰ν•œλ‹€.

```bash
docker compose up -d
```

μ»¨ν…Œμ΄λ„ˆκ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ—ˆλŠ”μ§€ ν™•μΈν•œλ‹€.

```bash
docker compose ps
```

SMTP μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 8825번 ν¬νŠΈμ— μ ‘μ†ν•œλ‹€.

```bash
nc 127.0.0.1 8825 -v
```

μ •μƒμ μœΌλ‘œ μ—°κ²°λ˜λ©΄ λ‹€μŒκ³Ό 같이 OpenSMTPD λ°°λ„ˆκ°€ 좜λ ₯λœλ‹€.

```text
220  ESMTP OpenSMTPD
```

## 취약점 μž¬ν˜„

PoC μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λŒ€μƒ μ„œλ²„μ— λͺ…령을 μ „λ‹¬ν•œλ‹€. μ‹€μŠ΅μ—μ„œλŠ” μœ„ν—˜ν•œ λͺ…령이 μ•„λ‹Œ `/tmp/proof.txt` νŒŒμΌμ„ μƒμ„±ν•˜λŠ” λͺ…령을 μ‚¬μš©ν•˜μ˜€λ‹€.

```bash
python3 poc.py 127.0.0.1 8825 'touch /tmp/proof.txt'
```

이후 μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ 파일이 μƒμ„±λ˜μ—ˆλŠ”μ§€ ν™•μΈν•œλ‹€.

```bash
docker compose exec smtpd ls -l /tmp/proof.txt
```

`/tmp/proof.txt` 파일이 ν™•μΈλ˜λ©΄, μ™ΈλΆ€μ—μ„œ μ „λ‹¬ν•œ λͺ…령이 μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜μ—ˆμŒμ„ μ˜λ―Έν•œλ‹€.

## κ²°κ³Ό

OpenSMTPD의 SMTP μš”μ²­ 처리 κ³Όμ •μ—μ„œ μž…λ ₯κ°’ 검증이 λΆ€μ‘±ν•  경우, κ³΅κ²©μžκ°€ μ‘°μž‘λœ μš”μ²­μ„ 톡해 μ„œλ²„μ—μ„œ μž„μ˜ λͺ…령을 μ‹€ν–‰ν•  수 μžˆμŒμ„ ν™•μΈν•˜μ˜€λ‹€.

λ³Έ μ‹€μŠ΅μ€ 둜컬 Docker ν™˜κ²½μ—μ„œλ§Œ μ§„ν–‰ν•˜μ˜€μœΌλ©°, μ‹€μ œ μ„œλ²„ λ˜λŠ” ν—ˆκ°€λ°›μ§€ μ•Šμ€ μ‹œμŠ€ν…œμ„ λŒ€μƒμœΌλ‘œ μˆ˜ν–‰ν•΄μ„œλŠ” μ•ˆ λœλ‹€.

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

* OpenSMTPDλ₯Ό 6.6.2p1 이상 λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν•œλ‹€.
* 외뢀에 λ…ΈμΆœλ˜λŠ” SMTP μ„œλΉ„μŠ€μ˜ μ ‘κ·Ό λ²”μœ„λ₯Ό μ œν•œν•œλ‹€.
* 방화벽을 톡해 λΆˆν•„μš”ν•œ 포트 접근을 μ°¨λ‹¨ν•œλ‹€.
* 메일 μ„œλ²„ 둜그λ₯Ό 주기적으둜 μ κ²€ν•œλ‹€.
* μ•Œλ €μ§„ μ·¨μ•½ λ²„μ „μ˜ μ„œλΉ„μŠ€λ₯Ό μš΄μ˜ν•˜μ§€ μ•Šλ„λ‘ 패치 관리λ₯Ό μˆ˜ν–‰ν•œλ‹€.

## 참고 자료

* Vulhub OpenSMTPD CVE-2020-7247
* OpenSMTPD λ³΄μ•ˆ ꢌ고문
* Exploit-DB CVE-2020-7247 PoC
* MITRE CVE-2020-7247