피드로 돌아가기
Dev.toSecurity
원문 읽기
Puppeteer 기반 Chart API의 SSRF를 통한 서버 내부 파일 탈취
From a Single IP to Exfiltrated Passwords in a PNG: My First Freelance Pentest Engagement
AI 요약
Context
단일 Linux 서버 상에 PHP API, Node.js 차트 생성 서비스, XHProf 프로파일러가 공존하는 구조. 외부로 노출된 XHProf를 통해 내부 클래스 및 파일 시스템 구조가 유출되는 보안 취약점 보유.
Technical Solution
- ECharts 설정을 JSON으로 받아 Puppeteer 기반 Headless Chromium으로 렌더링하는 서버 사이드 이미지 생성 로직 이용
- 사용자 입력값이 Puppeteer의 페이지 렌더링 과정에 직접 반영되는 구조적 허점 파악
- 특정 ECharts 옵션을 조작하여 로컬 파일 시스템의 경로를 요청하는 SSRF 공격 벡터 설계
- 렌더링된 결과물이 PNG 파일로 저장되고
/images/:filename엔드포인트를 통해 외부로 노출되는 메커니즘 활용 - XHProf에서 획득한 내부 디렉토리 경로 정보를 기반으로 민감 파일에 접근하는 정밀 타격 수행
실천 포인트
1. Headless Browser 기반 렌더링 서비스 도입 시 Sandbox 설정 및 네트워크 접근 제한 검토
2. XHProf, PhpMyAdmin 등 내부 분석 도구의 외부 노출 여부 및 접근 제어 설정 확인
3. 사용자 입력값이 HTML/JS/CSS 렌더링 엔진에 전달될 때의 입력값 검증(Input Validation) 프로세스 수립
4. 생성된 정적 파일의 저장 경로를 예측 불가능한 UUID 형태로 설계하고 접근 권한 제어 적용