유니코드 정규화로 Path Traversal 우회
웹 서버나 API가 ../만 필터링할 때, 유니코드 정규화(NFC/NFKC) 차이를 이용하면 우회가 됩니다. 예: ..%ef%bc%8f(FULLWIDTH SOLIDUS)나 ..%e2%88%95(DIVISION SLASH) 같은 문자가 정규화 후 /로 변환되면 필터를 통과하고 실제 파일 경로가 깨집니다.
공격 흐름 요약
- 입력 필터: ASCII
/만 차단 - 애플리케이션/라이브러리: 내부에서 정규화 수행
- 결과:
../→../로 변환되어 경로 탈출
체크리스트
- URL 디코딩 전/후 정규화 여부 확인
- 프록시와 앱의 정규화 순서 불일치 테스트
- WAF 뒤 서비스의 실제 경로 처리 로직 확인
방어 포인트
- 정규화 후 allowlist 검증
- 경로 결합은
realpath기반으로 비교 ..제거가 아니라 루트 디렉터리 탈출 차단
CTF에서 “필터는 통과하는데 파일이 읽힌다”면 정규화 타이밍을 의심해 보세요.