피드로 돌아가기
From a Single IP to Exfiltrated Passwords in a PNG: My First Freelance Pentest Engagement
Dev.toDev.to
Security

Puppeteer 기반 Chart API의 SSRF를 통한 서버 내부 파일 탈취

From a Single IP to Exfiltrated Passwords in a PNG: My First Freelance Pentest Engagement

Marco Altomare2026년 5월 4일16intermediate

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 형태로 설계하고 접근 권한 제어 적용

원문 읽기