피드로 돌아가기
Intigriti Challenge 0526 Writeup
Dev.toDev.to
Security

SCA Shield 필터링 우회를 통한 DOM 기반 XSS 취약점 증명

Intigriti Challenge 0526 Writeup

Arnav Kumar2026년 5월 23일2intermediate

Context

사용자 이름을 처리하는 과정에서 DOMPurify를 적용하지 않은 innerHTML 사용으로 인해 XSS 취약점 발생. 서버 사이드에서 특수문자와 특정 태그를 차단하는 SCA Shield v1.0 보안 계층이 존재하여 단순 페이로드 주입이 제한된 구조임.

Technical Solution

  • DOMPurify가 누락된 user_name 렌더링 지점을 Injection Point로 식별
  • script 태그 및 특정 특수문자(Quotes, Parenthesis, Dots, Commas, Semicolons)를 차단하는 서버 사이드 필터링 로직 분석
  • 필터링 대상이 아닌 style 및 svg 태그를 활용하여 보안 계층 우회 시도
  • CSS Keyframes와 onanimationstart 이벤트를 결합하여 JavaScript 실행 환경 구축
  • Base64 인코딩(atob)과 Tagged Template Literals를 통해 금지된 문자열과 따옴표 사용을 회피
  • Hex Code(a, (, ))를 이용한 문자열 마스킹으로 서버의 Exact Match 기반 탐지 로직 무력화

1. 사용자 입력값이 반영되는 모든 DOM 요소에 DOMPurify 등 검증된 라이브러리를 일관되게 적용했는지 확인

2. innerHTML 대신 textContent 또는 setAttribute를 사용하여 스크립트 실행 가능성을 원천 차단

3. 블랙리스트 기반 필터링 대신 허용된 문자만 통과시키는 화이트리스트 기반 검증 체계 구축

원문 읽기