
POC for CVE-2025-29384
이 저장소는 Tenda AC9 라우터(펌웨어 버전 V15.03.05.14_multi)에서 발견된 심각한 스택 기반 버퍼 오버플로우 취약점인 CVE-2025-29384에 대한 고급 개념 증명(PoC) 익스플로잇을 포함합니다. 이 취약점은 인증되지 않은 원격 공격자가 라우터의 웹 서버를 다운시키고(서비스 거부, DoS) 잠재적으로 임의 코드를 실행할 수 있게 합니다(원격 코드 실행, RCE).
이 프로젝트의 목적은 익스플로잇 개발 기술을 시연하고, 사이버보안 커뮤니티에 기여하며, 사이버보안 장학금과 같은 학술 평가를 위한 교육적 전시를 제공하는 것입니다. 이 저장소는 Tenda AC9 라우터(펌웨어 버전 V15.03.05.14_multi)에서 발견된 심각한 스택 기반 버퍼 오버플로우 취약점인 CVE-2025-29384에 대한 고급 개념 증명(PoC) 익스플로잇을 포함합니다. 이 취약점은 인증되지 않은 원격 공격자가 라우터의 웹 서버를 다운시키고(서비스 거부, DoS) 잠재적으로 임의 코드를 실행할 수 있게 합니다(원격 코드 실행, RCE).
이 프로젝트의 목적은 익스플로잇 개발 기술을 시연하고, 사이버보안 커뮤니티에 기여하며, 사이버보안 장학금과 같은 학술 평가를 위한 교육적 전시를 제공하는 것입니다.
CVE-2025-29384는 Tenda AC9 라우터의 웹 관리 인터페이스, 특히 다음 엔드포인트에 영향을 미칩니다:
/goform/AdvSetMacMtuWan
이 취약점은 HTTP POST 요청을 통해 처리되는 wanMTU 매개변수에 대한 부적절한 경계 검사로 인해 존재합니다. 입력이 검증 없이 고정 크기 스택 버퍼에 복사되어 전형적인 스택 기반 버퍼 오버플로우가 발생합니다.
취약 함수(가상 재구성)는 다음과 같은 구조를 가집니다:
void process_mtu(char *input) {
char buffer[256]; // Fixed-size stack buffer
strcpy(buffer, input); // No length check, causes overflow
// Process MTU value...
}
공격자가 대형 페이로드(예: 1024+ 바이트)를 보내면 함수의 반환 주소를 포함한 인접 메모리를 덮어써 잠재적으로 코드 실행으로 이어집니다.
Tenda AC9는 듀얼 밴드 무선 라우터로 다음과 같은 사양을 갖습니다:
이 저장소는 CVE-2025-29384에 대한 Ruby 기반 Metasploit 모듈도 포함합니다. 이 모듈은 Metasploit 프레임워크와 원활하게 통합되어 msfconsole을 사용하여 취약점을 익스플로잇할 수 있습니다.
git clone https://github.com/Otsmane-Ahmed/cve-2025-29384-poc
cd cve-2025-29384-poc
Ruby 모듈 파일을 찾아 Metasploit의 익스플로잇 디렉토리로 복사하세요:
cp tenda_ac9_stack_overflow.rb ~/.msf4/modules/exploits/linux/http/
참고: 디렉토리가 없으면 만드세요:
mkdir -p ~/.msf4/modules/exploits/linux/http/
Metasploit 프레임워크를 시작하세요:
msfconsole
모듈을 로드하세요:
use exploit/linux/http/tenda_ac9_stack_overflow
대상 IP 주소를 설정하세요:
set RHOSTS <target_ip>
페이로드 크기를 설정하세요 (선택사항, 기본값은 1024):
set PAYLOAD_SIZE 2048
익스플로잇을 실행하세요:
run
[*] Targeting Tenda AC9 at 192.168.0.1:80...
[*] Sending payload of size 2048...
[+] Payload sent successfully!
[*] Response: HTTP/1.1 200 OK...
성공: 라우터의 웹 서버가 충돌하여 서비스 거부(DoS) 상태가 발생합니다.
실패: 라우터가 계속 작동하며, 이는 취약하지 않거나 패치된 펌웨어 버전이 실행 중임을 나타냅니다.
이 PoC는 Python 기반 익스플로잇으로, /goform/AdvSetMacMtuWan에 대형 입력을 보내 버퍼 오버플로우를 트리거하여 웹 서버를 충돌시키고 RCE 가능성을 보여줍니다.
멀티스레딩 – 안정성을 위해 여러 동시 익스플로잇 시도를 실행합니다. 동적 페이로드 – 무작위 base64 인코딩 공격 문자열을 생성합니다. 로깅 – 구조화된 디버깅을 위해 Python의 로깅 모듈을 사용합니다. 사용자 정의 가능한 매개변수 – 대상 IP, 페이로드 크기, 스레드 수를 조정합니다.
이 PoC는 Python 기반 익스플로잇으로, /goform/AdvSetMacMtuWan에 대형 입력을 보내 버퍼 오버플로우를 트리거하여 웹 서버를 충돌시킵니다.
python poc.py --target <router_ip> --size 2048 --threads 10
| 인수 | 설명 |
|---|---|
--target | 라우터 IP (기본값: 192.168.0.1) |
[+] CVE-2025-29384 Exploit Engine
[INFO] Target: 192.168.0.1
[INFO] Sending payload (2048 bytes)...
[WARNING] Target timeout - possible crash!
[INFO] Exploit sequence completed.
성공: 라우터의 웹 인터페이스가 응답하지 않게 됩니다(DoS 상태). 실패: 라우터가 여전히 응답합니다(취약하지 않거나 잘못된 펌웨어).
익스플로잇이 라우터를 성공적으로 충돌시켰는지 확인하려면 웹 인터페이스를 다시 로드해 보세요. 응답하지 않으면 공격이 성공한 것입니다. 추가 분석을 위해 네트워크 로그에서 연결 끊김을 확인하거나 ping을 사용하여 장치 응답성을 확인하세요.
이 프로젝트는 교육 및 윤리적 해킹 목적으로만 사용됩니다. 이 익스플로잇을 무단으로 사용하는 것은 불법입니다. 작성자는 이 코드로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.
Otsmane Ahmed가 ❤️로 개발함 이 프로젝트는 교육 및 윤리적 해킹 목적으로만 사용됩니다. 이 익스플로잇을 무단으로 사용하는 것은 불법입니다. 작성자는 이 코드로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
| 지표 | 값 |
|---|
| 공격 벡터 | 네트워크 |
| 공격 복잡도 | 낮음 |
| 필요 권한 | 없음 |
| 사용자 상호작용 | 없음 |
| 기밀성 영향 | 높음 |
| 무결성 영향 | 높음 |
| 가용성 영향 | 높음 |
--size페이로드 크기(바이트) (기본값: 1024) |
--threads | 동시 스레드 수 (기본값: 5) |