Information Security Study

Chapter 9 저장된 XSS 취약점 실습 본문

Web Hacking

Chapter 9 저장된 XSS 취약점 실습

gayeon_ 2022. 9. 19. 23:48

'저장된 XSS'는 악의적인 스크립트 코드가 웹에 입력되면서 데이터베이스에 저장된다.

불특정 다수의 사용자가 공격자의 게시물에 접근

=> 지속적으로 악의적인 스크립트가 실행

=> 위협 영향도 높다

 

범죄자는 이를 이용해 악성코드를 배포한다

 

1) 악성 행위를 하는 스크립트 코드를 게시물에 등록

1) 사용자가 게시물을 클릭하면 악성 스크립트 코드가 실행 

 

 

<script>alert('Succeed');</script>

 

텍스트 입력 공간에 'Succeed'라는 메시지를 출력하는 스크립트 코드 입력 후 submit

스크립트가 실행되어 경고창으로 'Succeed'라는 메시지를 출력된다.

 

 

 

 

<script>alert(document.cookie)</script>

 

텍스트 입력 공간에 사용자의 쿠키 값을 경고창으로 출력하는 스크립트 코드를 입력하였다.

submit을 누르면 경고창으로 사용자의 쿠키값이 출력된다.

 

 

 

 

 

다음 실습 페이지는 비밀번호 힌트를 새로 설정하는 기능을 제공한다.

<script>alert('Succeed');</script>

 

새로운 힌트 입력란에 'Succeed'라는 메시지를 출력하는 스크립트 코드를 입력했다.

change를 누르면 변경되었다는 메시지가 출력된다.

 

 

 

 

 

 

비밀번호 힌트를 확인할 수 있는 페이지로 이동해 비밀번호 힌트가 출력되도록 유도해보았다.

로그인을 하니 방금 전 입력한 스크립트가 실행되어 'Succeed'가 출력됨을 확인할 수 있었다.

 

 

 

 

<script>alert(document.cookie)</script>

chage secret 페이지로 돌아가 위의 스크립트 코드를 입력해 secret 메시지를 변경해준 뒤

다시 로그인을 하니 사용자의 쿠키값이 경고창으로 출력됨을 확인할 수 있었다.

 

 

 

 

 

 

 

새로운 유저를 생성해준 뒤 똑같이 실습해보았다.

<script>alert('Succeed');</script>

 

 

 

 

secret 메시지는 출력되지 않고 'Succeed' 메시지만 출력됨을 확인하였다.

 

 

 

 

위의 실습 페이지는 접속한 웹 브라우저의 정보가 저장된 User-Agent 헤더 값을 테이블 형태로 출력한다

최근 접속한 순서대로 3개까지만 출력된다.

download 글씨를 클릭하면 페이지에 접속한 모든 User-Agent의 정보를 볼 수 있다.

 

 

 

버프 스위트 실행이 안되어 이 실습은 실제로 진행하지는 못했다.

 

버프스위트로 User-Agent 헤더에 스크립트 코드를 입력해 테이블에 스트립트를 저장하는 XSS 공격을 시행해보았다.

 

<script>alert('Succeed');</script>

버프스위트에서 위 스크립트 코드를 입력한다

그러면 실습 페이지에서 스크립트 코드가 실행되어 

Succeed 메시지가 출력된다.

 

<script>alert(document.cookie)</script>

버프스위트에서 위 스크립트 코드를 입력한다

위와 마찬가지로 실습 페이지에서 스크립트 코드가 실행되어

경고창으로 쿠키값이 출력된다.