XSS란?
크로스 사이트 스크립팅은 공격자가 희생자의 브라우저에 스크립트가 실행되도록 하여 사용자의 쿠키나 세션 등을 탈취하는 공격이다. 공격 방식에 따라 Stored XSS, Reflected XSS가 있다.
Stored XSS는 공격자가 게시판의 게시글에 스크립트를 저장하여 희생자가 게시글을 요청하면 서버는 스크립트가 포함된 게시글을 돌려주고 희생자의 브라우저에서 스크립트가 실행된다.
Reflected XSS는 스크립트가 포함된 링크를 클릭하면 스크립트가 포함된 요청이 전송되고, 서버로부터 스크립트가 포함된 HTML 문서를 수신함으로써 브라우저에서 스크립트가 실행된다.
XSS-1과의 차이는 vuln 페이지에서 <script>문이 실행되지 않는 것이다.
XSS-1과 동작 방식은 동일하다. flag 페이지에서 입력하면 FLAG 값이 check_xss 함수에 전달되고 admin(127.0.0.1)이 vuln 페이지에 param 인자 값을 설정하여 요청하면서 cookie에 저장된 FLAG 값을 memo 페이지에 출력하는 것이다.
우회를 위해 svg 태그를 이용한다. svg 그래픽을 이용하는데 필요한 태그라고 한다.
onload는 웹 페이지가 모든 콘텐츠(이미지, 스크립트 파일, CSS 파일 등)를 완전히 로드한 후 스크립트를 실행하기 위해 <body> 요소 내에서 자주 사용한다.
<svg onload=location.href="http://127.0.0.1:8000/memo?memo="+document.cookie>
flag 페이지에서 입력값을 전달했다.
memo 페이지에 접속하면 flag가 보인다.
참고로 img 태그를 이용하는 방식도 가능하다.
<img src="abc" onerror="location.href='/memo?memo='+document.cookie">
이미지를 로드할때 사용한다. src는 포함할 이미지 경로이며 onerror는 에러 발생시 실행된다.
abc라는 이미지는 없기에 onerror가 실행된다.
'dreamhack > Web Hacking' 카테고리의 다른 글
command-injection-1 (0) | 2023.02.12 |
---|---|
CSRF-1 (0) | 2023.02.12 |
devtools-sources (0) | 2023.02.11 |
pathtraversal (0) | 2023.02.11 |
session-basic (0) | 2023.02.09 |