오늘은.. 버그바운티 하다가 이런 형태의 XSS 코드도 가능하길래 공유드려봅니다.
<script src="data://www.trustdomain.hahwul.com, alert(45)"></script>
선행조건(Prerequisites)
- 구문이 script src에 들어가는 경우(If the user input is in the script src)
- 앞단 프로토컬 제어가 가능해야함(Must be able to control the src protocol)
- Not CSP…
원리(How to?)
별다른건 아니고 script src의 데이터는 plain text의 javascript 코드가 들어가게 되는데, data 구문을 이용해서 코드를 넣어 실행할 수 있습니다.
여기서 요점은 ://domain
포맷의 검증 로직을 data://
domain 형태로 넣어서 우회하고 ,(comma) 로 앞의 도메인 부분을 인코딩인 것 처럼 속인 후 ,(comma)뒤에 payload를 두어 실행됩니다.
그러나 아쉽게도 CSP 때문에 유효타는 안나온 상태입니다. 잠도 안오는데 다시 하러 가야지
결국 CSP까지 풀고 성공했었네요 나이스 :D