XXS 와 CSRF

홍한솔·2021년 12월 13일
0

네트워크 보안

목록 보기
2/2

XXS 란 ?

XXS는 Cross-Site Scripting 의 약자이며 웹에서 가장 기초적인 취약점 공격 방법중 하나이다.

공격자가 공격하려는 사이트에 스크립트를 넣는 기법이며 주로 다른 웹 사이트와 정보를 교환하는 식으로 작동하므로 Cross-Site Scripting 이라고 명칭한다.

이 공격은 웹이 사용자로부터 입력받은 값을 제대로 검사하지 않는 취약점을 사용하며 공격에 성공하면 사이트에 접속한 사용자는 공격자가 삽입한 코드를 실행하게 된다.

공격자는 보통 게시판, 메일, 닉네임등에 악성 코드를 심어놓는다.

악성 코드의 실행 결과로 쿠키나 토큰등의 민감한 정보를 탈취하거나 의도치 않은 행동을 수행하도록 하는 공격이다.

이 공격은 사용자가 특정 웹사이트를 신용하는 점을 노린 공격이다.

XXS는 공격 방법에 따라 크게 Stored XXS, Reflected XXS로 나뉘어진다.

Stored XXS


이 공격 방법은 웹 사이트 게시판이나 댓글, 닉네임 등에 공격자가 심어놓은 스크립트가 서버에 저장되는 방식이다.

이후, 일반 사용자가 해당 게시판이나 댓글 등에 대해 request 를 보낼 때 악성 스크립트가 삽입된 response가 사용자에게 전달되어 악성 코드가 일반 사용자의 클라이언트에서 실행되는 방식이다.

이 방법은 가장 일반적인 XXS 공격유형이며, 서버의 데이터 베이스에 악성코드가 저장된다.
따라서 서버 시스템 자체를 공격할 수도 있고 웹을 사용하는 사용자 대부분에게 악성코드를 전송할 수도 있다.

Reflected XXS


이 공격은 피싱 공격에서 많이 사용되는 방법이다.

사용자의 요청에 포함된 스크립트가 서버로 부터 그대로 반사되어 응답에 포함되어 브라우저에서 스크립트를 실행하게 된다.
보통 URL의 변수 부분에 스크립트 코드를 입력하여 스크립트를 요청에 포함시키는데 만약 URL을 필터링 하지 않는다면 공격이 성공하게 된다.

대부분의 브라우저에서는 이 취약점에 대해 방어 정책이 적용되어 있기 때문에 상대적으로 공격이 어렵다.

대책

쿠키 탈취가 공격의 주된 목적이므로 쿠키를 보호하는 방지 대책이 많다.

  • 쿠키에 중요한 정보를 담지 않는다
  • Cookie의 HTTP ONLY 옵션 (코드에서 쿠키에 접근하는 것을 막는 옵션)
  • 정보를 암호화 한다

    CSRF 란?

    CSRF 는 Cross-Site Request Fogery 의 약자로 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격이다.

CSRF는 웹 사이트가 사용자를 신용하는 것을 노린 공격이다.

사용자가 공격 대상 웹 사이트(네이버)에 로그인한 상태에서 악성 코드가 삽입된 페이지를 열면 웹 사이트(네이버)는 신용하는 사용자로부터 발송된 것으로 판단하여 공격을 당하게 된다.

공격자는 사용자의 권한을 이용해 서버에게 악성 요청을 할 수 있다.

이 공격은 반드시 사용자가 공격 대상 웹사이트에 접속한 상태에서 피싱 사이트에 접속해야하는 조건이 있다.

앞선 XXS의 공격대상은 클라이언트지만 CSRF의 공격 대상은 권한 도용을 통한 서버이다.

대책

  • Referrer 검증 (request의 referrer를 확인하여 피싱 사이트에서 보낸 요청인지 확인)
  • Security Token 사용 (세션에 임의의 토큰 값을 할당하여 request에 전달되는 토큰값이 일치하는지 확인하는 방법)
profile
낭만있는 개발자

0개의 댓글