[Network] Extra. 웹 공격 기술

KYJ의 Tech Velog·2023년 4월 28일
0

Network

목록 보기
21/21
post-thumbnail

HTTP 자체는 보안 상의 문제가 일어날 정도로 복잡한 프로토콜은 아니기 때문에 프로토콜이 직접 공격 대상이 되는 경우는 거의 없습니다.

공격 대상은 HTTP를 사용하는 서버와 클라이언트, 서버 상에서 동작하는 웹 애플리케이션입니다.

웹 애플리케이션에 대한 공격 패턴은 2가지가 있습니다.


능동적 공격

공격자가 직접 웹 애플리케이션에 접근해서 공격 코드를 보내는 타입의 공격입니다. 이 공격은 서버 상의 리소스에 대해 직접 실행되기 때문에 공격자가 리소스에 액세스할 필요가 있습니다.

대표적으로 SQL 인젝션이 있습니다.

SQL Injection

웹 애플리케이션을 이용하고 있는 데이터베이스에 SQL을 부정하게 실행하는 공격입니다. 개인 정보나 기밀 정보 누설로 직결되기도 합니다.


수동적 공격

함정을 이용해서 유저에게 공격 코드를 실행시키는 공격입니다. 직접 웹 애플리케이션에 접근해서 공격하지 않습니다.

일반적으로 다음과 같은 순서로 진행됩니다.

  1. 공격자가 설치한 함정에 사용자를 유도합니다. 함정에는 공격 코드를 심어둔 HTTP Request를 발생시키기 위한 장치가 있습니다.
  2. 사용자가 브라우저나 메일 클라이언트를 통해 함정에 걸리게 됩니다.
  3. 함정에 걸리면 사용자의 브라우저가 장착된 공격 코드를 포함한 HTTP Request를 공격 대상인 웹 애플리케이션에 송신하고 공격 코드를 실행합니다.
  4. 공격 코드를 실행하면 취약성이 있는 웹 애플리케이션을 경유한 결과로서 사용자가 가지고 있는 쿠키 등의 기밀 정보를 도둑맞거나 로그인중인 사용자의 권한이 악용되는 등의 피해가 발생합니다.

대표적으로 XSS, CSRF가 있습니다.

XSS

XSS(Cross-Site Scripting)는 취약성이 있는 웹사이트를 방문한 사용자의 브라우저에서 부정한 HTML 태그나 JavaScript 등을 동작시키는 공격입니다. 동적으로 HTML을 생성하는 부분에서 취약성이 발생할 수 있습니다.

공격자가 작성한 스크립트가 함정이 되고 사용자의 브라우저 상에서 움직이는 수동적 공격입니다.

  • 가짜 입력 폼 등에 의해 사용자의 개인 정보를 도둑맞습니다.
  • 스크립트에 의해 사용자의 쿠키 값이 도둑맞거나 사용자가 의도하지 않은 요청이 송신됩니다.
  • 가짜 문장이나 이미지 등이 표시됩니다.

공격자는 함정 URL을 작성해 사용자에 교묘한 속임수 이메일이나 게시글같은 함정을 준비해 사용자가 URL을 클릭하도록 유도합니다. URL을 열어도 감쪽같은 웹 페이지일 수 있습니다. 만약 로그인 폼이 있어서 사용자가 ID, PW를 입력한다면 사용자의 정보가 탈취된 사실을 인지하지 못하고 탈취될 것입니다.

XSS의 취약성이 있는 웹 애플리케이션에서 JavaScript가 실행되면 해당 웹 애플리케이션의 도메인의 쿠기 정보에 접근합니다. 이 정보가 도난당할 수 있습니다.

CSRF

CSRF(Cross-Site Request Forgeries)는 인증된 사용자가 의도하지 않은 개인 정보나 설정 정보 등을 공격자사 설치한 함정에 의해 어떤 상태를 갱신하는 처리를 강제로 실행시키는 공격입니다.

다음과 같은 피해가 발생합니다.

  • 인증된 사용자의 권한으로 설정 정보 등이 갱신됩니다.
  • 인증된 사용자의 권한으로 상품을 구입합니다.
  • 인증된 사용자의 권한으로 게시판에 글을 작성합니다.

한 사용자가 웹 사이트에 인증된 상태라고 가정합니다. 사용자 브라우저의 쿠키에는 인증된 상태에 세션 ID를 가지고 있습니다. 공격자는 함정을 준비합니다. 사용자가 이 함정을 실행하면 사용자의 권한으로 위의 행위를 할 수 있습니다.

XSS와 CSRF는 사용자의 브라우저를 대상으로 한다는 공통점이 있습니다. 하지만 CSRF는 사용자의 인증된 세션을 악용하는 공격 방식인 반면, XSS는 인증된 세션 없이도 공격을 진행할 수 있다는 차이점이 있습니다.

XSS는 사용자가 특정 사이트를 신뢰한다는 사실을 이용한 공격 방식이지만, CSRF는 웹 애플리케이션이 인증된 사용자의 요청을 신뢰한다는 사실을 이용한 공격 방식입니다. 또한 XSS는 클라이언트(사용자)에서 스크립트가 실행되지만 CSRF는 서버에서 스크립트가 실행되는 차이점이 있습니다.

마지막으로 두 방식은 목적에도 차이가 있습니다. XSS는 사용자 PC에서 스크립트를 실행해 사용자의 정보를 탈취하는 것을 목적으로 하는 반면, CSRF는 요청을 위조함으로써 사용자 몰래 송금과 제품 구입 등 특정 행위를 수행하는 것을 목적으로 합니다.

0개의 댓글