웹 취약점 실습 (1) - XSS

컴퓨터 보안 웹 취약점 실습 XSS


Section 1. 실습 환경 구축

1. Web Goat

OWASP에서 웹 취약점 공격 실습을 위해서 배포하는 웹 서버 환경 프로그램



2. Web Goat 실행

  • 다운로드 받은 .zip 파일에서 webgoat_8080 실행

  • 브라우저 주소창에 localhost:8080/WebGoat/attack 을 입력하면 접속 가능
  • ID : guest / PW : guest



3. Web Goat 화면

  • 왼쪽 메뉴에서 원하는 웹 취약점 실습 가능



4. Burp Suite

프록시 서버를 사용하여 클라이언트와 서버가 주고받는 패킷을 가로채 분석 및 위변조가 가능하게 해주는 프로그램



5. Burp Suite 실행 및 화면

  • Open Browser를 통해 브라우저 실행
  • Proxy 서버 역할을 수행하여 서버와 클라이언트 사이의 패킷을 추출 및 분석
  • Forward 를 이용하여 원래 서버로 요청 보낼 수 있음




Section 2. XSS (Cross-Site Scripting)

1. XSS

  • 입력 데이터를 검증 X, 출력 시 위험 데이터를 무효화 X 경우 발생하는 웹 취약점 및 공격
  • 웹 사이트에 악성 스크립트를 삽입하여 사용자 측 브라우저에서 스크립트가 실행되도록 함
  • 쿠키 또는 세션 등의 민감한 정보 탈취
  • 크게 Stored 방식과 Reflect 방식으로 나뉨




2. Stored XSS

  • 웹 취약점이 존재하는 웹 사이트에 악성 스크립트를 영구적으로 저장
  • 해당 웹 사이트에 접근하는 모든 임의의 방문자들이 공격 대상이 됨
  • 지속적(Persistent) 기법




3. Reflected XSS

  • 사용자의 입력 요청에 대한 결과가 서버에 없는 경우 서버는 입력값을 그대로 HTML 문서에 포함하여 응답 (refelct)
  • 비지속적(Non-Persistent) 기법




4. Stored XSS 실습

    ① 왼쪽 메뉴에서 Stored XSS Attacks 클릭

    ② 아래와 같이 제목과 내용 입력 (정상적인 text가 아닌 악성 스크립트 삽입)

<script>alert(document.cookie);</script>   # 현재 웹사이트의(document) cookie를 alert 창으로 표시




    ③ 해당 게시글을 클릭하면 삽입해 놓은 스크립트 실행됨



     ④ 하지만 document.cookie 정보 출력되지 않음

  • 대부분의 브라우저는 document.cookie 명령어를 통해서 쿠키 정보에 접근하는 것을 방지하는 HttpOnly 옵션을 지정해 놓음. 이를 해제하기 위해서 개발자 도구로 들어간 뒤에 해당 옵션 해제


     ⑤ 다시 게시글 클릭하면 스크립트가 실행되어 해당 웹 사이트의 SessionID 쿠키 파일 추출




5. Reflected XSS 실습

    ① 왼쪽 메뉴에서 Reflected XSS Attacks 클릭

    ② 아래와 같이 부정확한 access code 입력하면 서버는 입력값 그대로 브라우저에 응답


    ③ 이번에는 쿠키 정보를 추출하는 악성 스크립트를 입력하여 요청



     ④ 서버는 해당 입력값을 그대로 응답하여 사용자 브라우저에서 스크립트가 실행됨

좋은 웹페이지 즐겨찾기