hhkb.dev

BLOG

2025-11-24 / 호스트기반모의해킹 · 12

웹 애플리케이션 진단 기초

1. 웹 진단 개요

웹은 인터넷 트래픽 대부분이 오가는 영역이라 진단 비중도 높다. 그래서 첫 단계는 대상 애플리케이션의 구조와 기술 스택을 파악하는 데 맞춰진다.

1.1 Source & Sink 개념

웹 취약점 분석에서는 입력이 들어오는 위치와, 그 입력이 실제로 소비되는 위치를 같이 봐야 한다.

  • Source(입력원): 데이터가 유입되는 지점이다. 예를 들면 GET/POST 파라미터, 쿠키, 헤더가 여기에 해당한다.
  • Sink(소모지): 유입된 데이터가 실행되거나 반영되는 지점이다. 예를 들면 eval(), SQL 쿼리, echo가 있다.
  • 진단 전략: Source에 입력을 넣고, Sink에서 의도하지 않은 동작이 생기는지 확인하는 식으로 본다.

2. 필수 도구: Burp Suite

Burp Suite는 HTTP 요청과 응답을 가로채고 조작할 수 있는 대표 프록시 도구다.

  • Proxy: 브라우저와 서버 사이의 트래픽을 중계하고, 필요한 경우 변조한다.
  • Repeater: 특정 요청을 반복해서 수정하고 다시 보내는 데 쓴다.
  • Intruder: 페이로드를 자동으로 대입해 퍼징(Fuzzing)이나 브루트 포스를 수행할 때 쓴다.

3. 정보 수집(Information Gathering)

3.1 기술 스택 및 버전 식별(Fingerprinting)

서버 헤더나 HTML 소스를 보면 백엔드 기술 스택을 어느 정도 짐작할 수 있다.

  • Response Header: Server: Apache/2.4.41, X-Powered-By: PHP/7.4 같은 값이 단서가 된다.
  • HTML Meta Tag: <meta name="generator" content="WordPress 5.8">처럼 생성기 정보가 노출되기도 한다.
  • 도구: Wappalyzer 같은 브라우저 확장을 같이 쓰면 정리가 쉽다.

3.2 robots.txt 분석

robots.txt는 검색 엔진 크롤러에게 특정 경로를 수집하지 말라고 알려 주는 파일이다.

공격자 관점에서는 개발자가 숨기고 싶어 한 경로가 그대로 드러나는 경우가 있어 유용한 단서가 된다. 예를 들어 Disallow: /admin-secret/ 같은 값은 우선 확인 대상이 된다.

3.3 디렉토리 브루트 포싱(Directory Brute Forcing)

공개되지 않은 디렉토리나 파일을 사전 기반 대입으로 찾는 방식이다.

대표적으로 GoBuster를 많이 쓴다.

  • 기본 명령
    gobuster dir -u [Target_URL] -w [Wordlist_Path]
    
  • 확장자 탐색(-x)
    특정 기술 스택(PHP, JSP 등)의 파일까지 보려면 확장자 옵션을 같이 쓴다.
    gobuster dir -u http://10.10.10.10 -w common.txt -x php,txt,bak
    
  • 상태 코드 필터링(-s)
    404 같은 불필요한 응답을 제외하고 유효한 응답만 추려 볼 때 쓴다.
    gobuster dir -u ... -s 200,301,302
    

4. 실무에서는?

실무에서는 아래 정도를 먼저 챙긴다.

  • 재귀적 스캔(Recursive Scan) 주의
    GoBuster는 기본적으로 재귀 스캔을 하지 않는다. 재귀 스캔은 트래픽을 급격히 늘려 DoS를 유발할 수 있으므로, 의심 경로만 골라 수동으로 다시 보는 편이 안전하다.
  • 스레드(Thread) 조절
    속도를 높이겠다고 스레드를 과하게 올리면, 특히 구형 WAS 쪽에서 장애가 날 수 있다. 보통 10~50 정도로 안정성을 먼저 본다.
  • 기술 스택 맞춤형 사전
    PHP 서버에서 JSP 확장자를 찾는 식의 무의미한 대입은 리소스 낭비다. 앞 단계에서 식별한 스택에 맞춰 -x 옵션을 맞추는 게 좋다.