본문 바로가기

4-9. 2020-2 심화 스터디/네트워크 포렌식 또는 해킹사고 분석

[2020.11.07] XSS game 문제풀이

오늘은 웹에서 사용되는 XSS 취약점에 대해 살펴보고 응용하는 시간을 가졌다.

 

 

Mission Description

복잡한 웹 애플리케이션은 때때로 URL 파라미터의 값이나 location.hash의 일부를 기반으로 동적으로 JavaScript 라이브러리를 로드할 수 있는 기능을 가지고 있다.

이는 올바르게 하기 매우 까다롭다. XMLHttpRequest와 같은 잠재적으로 위험한 유형의 데이터나 스크립트를 로드할 때 사용자 입력이 URL에 영향을 미치도록 허용하면 종종 심각한 취약성을 초래한다.

 

Mission Object

응용 프로그램이 알림을 실행하는 외부 파일을 응용 프로그램 alert()으로 만드는 방법을 찾아라.

 

 

먼저 코드를 보면, url의 #뒤에 gadget.js파일을 불러오는 것을 확인할 수 있다.

 

또한, #뒤에 입력한 값이 페이지에 출력되는 것도 확인할 수 있다.

따라서 #뒤의 값을 조작해 공격을 해야 한다고 추측 가능하다.

 

이 때, 외부 데이터를 url로 불러올 수 있는 *Data URL Scheme을 이용해 자바스크립트 값을 삽입할 수 있다.

HTML에서 URL Scheme을 이용해 base64로 인코딩 된 이미지의 데이터 값을 src 속성으로 넣어서 src속성 값에 파일 경로를 넣어 사용하는 것 대신 사용 가능하다.

* Data URL Scheme: 이미지 같은 외부 데이터를 URL 형태로 표현하는 방법

 

[표현방식]

data:[자료타입],[데이터]

 

자바스크립트 alert 명령어를 사용하기 위해 data:text/javascript,alert(1)를 넣어주면 문제가 풀린다.