Pentest Playbook

Client-Side 측 코드 분석 자동화 도구

github: https://github.com/piroim/site-scanner

⚙️ [site_scanner] 최신 개발 정보

Version Date Status Link
v1.4.0 2026.04.07 ✅ 배포완료 https://github.com/piroim/site-scanner/releases/tag/v1.4.0

1. 개요

자동화 도구를 개발하게된 계기는, 모의해킹 수행 과정에서 클라이언트 측 소스코드 분석이 필요한 경우가 많았으며 많은 코드를 전부 수동 점검하기에는 리소스가 많이 들었습니다.
효율적으로 점검하는 방식이 필요하여 도구의 필요성을 느끼게 되었습니다.

JS/HTML 등 클라이언트 측 코드에 노출된 정보를 이용하거나 취약점으로 발생는 경우도 많이 있고, 코드에서 발견될 수 있는 부분들은 다음과 같습니다.

  1. 접근할 수 있는 API/PATH
  2. 하드코딩된 데이터(아이디, 비밀번호, 토큰 등)
  3. 주석으로 처리한 데이터에 작성된 중요 정보

1.1. 수동 분석의 한계

실제 웹 서비스들을 대상으로 점검하게 되면 시간 제약이 있고, 대상 서비스의 규모에 따라 분석해야 할 페이지와 리소스가 늘어나게 됩니다.
서비스 대상들마다 개발자 도구를 열어서 elements탭과 source탭을 오가는 작업과 전체 코드를 검색하고 찾아가는 방식이 조금은 효율적이지 않다고 느끼게 되었고, 불필요한 파일 및 코드까지 확인해야 하기 때문에 리소스의 낭비가 발생한다고 생각했습니다.

특히 다음과 같은 상황에서 수동 분석의 한계가 드러나는 것 같습니다.

이러한 반복 작업을 자동화하면 분석 시간을 단축하고 놓치기 쉬운 정보를 체계적으로 수집할 수 있습니다.

2. 사용 가능한 기능

site-scanner는 대상 URL의 HTML을 파싱하여 태그와 패턴 기반으로 유의미한 정보를 추출하고, 발견된 경로에 대한 접근 가능 여부를 확인해준다.

현재 수집 가능한 정보

카테고리 수집 대상
링크 및 경로 a, form, script 태그에 작성된 srcajax
폼 데이터 input/select/textarea의 name, id 속성 (매개변수 식별)
메타 정보 meta 태그, HTML 주석, data-* 커스텀 속성
외부 리소스 JS 파일 목록(CSS, wolf 등 불필요한 파일 제외)

접근성 검증

수집된 경로에 대해 실제 HTTP 요청을 보내 응답 상태 코드를 확인한다. 이를 통해 숨겨진 관리자 페이지, 인증 없이 접근 가능한 API 엔드포인트, 디렉토리 리스팅이 활성화된 경로 등을 빠르게 파악할 수 있다.

3. 자동화 도구의 동작 방식

동작 흐름

1. 대상 URL 입력
2. HTML 응답 수신 및 파싱
3. 태그/속성 기반 정보 추출
4. 수집된 경로에 대한 HTTP 요청 및 상태 확인
5. 결과 출력

사용 예시

# Flask 기반 GUI 실행
python app.py

# CLI 기반 실행
python scanner.py -u https://example.com
python scanner.py -u https://example.com -o result.json

도구 실행 결과

이미지

4. 제한사항

현재는 베타 버전으로 생각했기 때문에, 아직 지원하지 않는 기능들과 제한점이 많다.

Roadmap

향후 추가할 기능들은 다음과 같다.

1. JS 파일 분석

2. 취약점 스캐닝 자동화

3. 결과 시각화 및 검증 지원

4. 스캐닝 기능 고도화

ESC

💡 검색 팁

  • #T1572 - 태그로 검색
  • persistence - 키워드로 검색