
CVE-2025-56015에 대한 개념 증명 익스플로잇, GenieACS의 샌드박스 이스케이프 및 원격 코드 실행(RCE)입니다. 악성 프로비전 생성, 사전 설정 매핑, CWMP 시뮬레이션을 통한 리버스 셸 전달을 자동화합니다.
CVE-2025-56015에 대한 개념 증명 익스플로잇입니다. 이는 GenieACS에서 프로비저닝 컨텍스트 내에서 임의의 JavaScript 실행을 가능하게 하는 중요한 샌드박스 탈출 및 코드 삽입 취약점입니다. declare.constructor.constructor 프로토타입 체인을 이용하여 공격자는 제한된 JavaScript 환경을 탈출하고, 기본 Node.js child_process 및 net 모듈에 접근하여 완전한 **원격 코드 실행(RCE)**을 달성할 수 있습니다.
익스플로잇 유형: 원격
인증: GenieACS NBI(포트 7557) 및 ACS(포트 7547)에 대한 네트워크 접근 필요
영향: 전체 서버 장악, 리버스 셸 실행, 네트워크 피벗
포트 7557의 NBI 엔드포인트는 인증 없이 민감한 데이터를 검색할 수 있도록 허용합니다. 예시 API 엔드포인트는 다음과 같습니다:
사용자 데이터 가져오기:
$ curl 'http://myhost:7557/users/'
응답에는 비밀번호 해시와 솔트와 같은 민감한 정보가 포함됩니다.
파일 목록 가져오기:
$ curl 'http://myhost:7557/files/'
프로비전 세부 정보 가져오기:
$ curl 'http://myhost:7557/provisions/'
또한 파일 서버(포트 7567)에서 인증 없이 직접 파일을 다운로드할 수 있습니다:
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
샌드박스 내부의 테스트 디버그 엔드포인트는 Node.js process 객체에 대한 직접 접근을 제한합니다. 그러나 객체 순회, 특히 생성자 체인(예: constructor.constructor)을 사용하여 이 제한을 우회할 수 있습니다.
사용 가능한 객체(예: declare)에서 이를 호출함으로써 공격자는 샌드박스 컨텍스트를 탈출하고 전역 process 객체에 접근할 수 있습니다. 이를 통해 환경 변수를 읽고 임의의 명령을 실행할 수 있습니다.
인증 후 RCE:
프로비전 스크립트는 /api/devices/{device_id}/tasks API 엔드포인트를 통해 직접 실행되어 셸을 획득할 수 있습니다. NBI만을 통해 전송된 요청은 대기열에 추가되지만 즉시 실행되지는 않습니다.
인증 전 RCE (Unauthenticated RCE): NBI API를 사용하여 공격자는 인증 없이 프로비전과 프리셋을 생성할 수 있습니다. 프리셋은 장치가 CWMP 인터페이스를 통해 이벤트를 보낼 때 자동으로 프로비전 스크립트를 실행하는 역할을 합니다.
익스플로잇 단계:
PUT /provisions/{provision_name}를 통해 악성 프로비전을 생성합니다.PUT /presets/{preset_name}를 통해 프리셋을 프로비전에 매핑합니다(예: "Periodic" 이벤트에 연결).declare.constructor.constructor를 사용한 안정적인 Node.js 샌드박스 탈출익스플로잇을 실행하기 전에 exploit.py 내에서 ACS_URL, NBI_URL, LHOST, LPORT 구성을 환경 및 공격자 시스템 설정에 맞게 업데이트하십시오.
# 공격자 시스템에서 리스너 시작
nc -lvnp 4444
# 익스플로잇 실행
python3 exploit.py

requests 라이브러리 (pip install requests)이 코드는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.
소유하지 않거나 명시적 허가 없이 시스템에 대해 무단으로 사용하는 것은 불법이며 비윤리적입니다.
취약점 발견 및 익스플로잇 개발:
(주) 데이터팜(Datafarm Co., Ltd.) 소속
DF Pentest 팀 • 태국(Thailand) 개발