TeamH4C

[빡공팟 5기] W6 : DVWA 실습 - DOM based Cross-Site-Scripting (medium)

이유갬 2022. 10. 30. 23:24

[ 실습 목표 ]

Run your own JavaScript in another user's browser, use this to steal the cookie of a logged in user.

자바스크립트를 실행하여 로그인 한 유저의 브라우저를 통해서 해당 유저의 쿠키를 탈취하는 것이 실습의 목표이다!


[ 실습 화면 ]

- 언어를 선택하는 초기화면이다.

- 언어를 선택하고 Select 버튼을 눌러보았다.

- 페이지의 URL 의 파라미터가 변경되는 것을 볼 수 있다.

- 해당 URL 에 스크립트 태그를 삽입해보았다.

- 아무 일도 일어나지 않았다. 당연하다 이게 발생하면 Low 레벨과 다를 것이 없다.

- 소스 코드를 한번 살펴보자!

- 문자열 비교를 통해서 스크립트 태그를 필터링하는 것을 볼 수 있다.

- 하지만 스크립트 태그로만 XSS 공격이 가능한 것이 아니다.

- img 태그의 onerror 을 이용할 수 있다. -> 이미지 로딩이 실패하면 onerror 의 이벤트를 실행한다.

- 한번 예제 코드를 작성해보고 URL 대입 해 보았다.

- 아무런 일도 발생하지 않았지만 location: ?default=English 가 실행되지 않았다.

- 개발자 도구로 소스 코드를 살펴보니 Select 태그 안에 삽입된 것을 볼 수 있다.

- 앞에 Select 닫는 태그를 삽입하며 다시 시도해보았다.

- 정상적으로 실행된 것을 볼 수 있다.

- 이렇게 정상적으로 태그가 삽입된 것을 볼 수 있다.

- 브라우저에 저장된 쿠키를 팝업으로 출력하는 것이 성공했다.

- 이를 이용하여 피싱 메일을 보내고 쿠키를 탈취하는 것도 가능하다.

- 위와 같은 태그를 gmail 을 통해 Link 라는 텍스트에 삽입하고 전송했다 -> 저 문자들은 인코딩 문자이다.

- 해당 링크를 누르면 정상적으로 스크립트가 동작되는 것을 확인할 수 있다.