본문으로 건너뛰기

유니코드 정규화로 Path Traversal 우회

웹 서버나 API가 ../만 필터링할 때, 유니코드 정규화(NFC/NFKC) 차이를 이용하면 우회가 됩니다. 예: ..%ef%bc%8f(FULLWIDTH SOLIDUS)나 ..%e2%88%95(DIVISION SLASH) 같은 문자가 정규화 후 /로 변환되면 필터를 통과하고 실제 파일 경로가 깨집니다.

공격 흐름 요약

  • 입력 필터: ASCII /만 차단
  • 애플리케이션/라이브러리: 내부에서 정규화 수행
  • 결과: ../../로 변환되어 경로 탈출

체크리스트

  • URL 디코딩 전/후 정규화 여부 확인
  • 프록시와 앱의 정규화 순서 불일치 테스트
  • WAF 뒤 서비스의 실제 경로 처리 로직 확인

방어 포인트

  • 정규화 후 allowlist 검증
  • 경로 결합은 realpath 기반으로 비교
  • .. 제거가 아니라 루트 디렉터리 탈출 차단

CTF에서 “필터는 통과하는데 파일이 읽힌다”면 정규화 타이밍을 의심해 보세요.