솜이의 데브로그

11장 ) 웹 공격 기술, 취약성 (1) 본문

CS/Network

11장 ) 웹 공격 기술, 취약성 (1)

somsoming 2021. 12. 19. 02:03

Reference : 그림으로 배우는 Http&Network Basic

 

11.1 웹 공격 기술

 

HTTP 자체는 보안 상의 문제가 일어날 정도로 복잡하지는 않으므로, 공격대상은 서버와 클라이언트 그리고 서버상에서 동작하는 웹 애플리케이션 등의 리소스이다.

 

HTTP에는 보안 기능이 없다

  • 현재의 웹사이트 대부분은 인증, 세션 관리, 암호화 등의 보안기능이 필요하다.
  • 따라서 웹 애플리케이션에서 인증이나 세션 관리 기능을 개발자가 설계하고 구현해야한다.

 

웹 애플리케이션에 대한 공격은 HTTP 리퀘스트 메시지에 공격코드를 실어서 실행된다.

 

웹 애플리케이션에 대한 공격 패턴

  • 서버를 노리는 능동적 공격
    • 공격자가 직접 웹 애플리케이션에 액세스해서 공격 코드를 보내는 타입의 공격.
    • 서버 상의 리소스에 대해 직접 실행되기 때문에 공격자가 리소스에 액세스할 필요가 있다.
    • ex) SQL 인젝션, OS 커맨드 인젝션
  • 유저를 노리는 수동적 공격
    • 함정을 이용해서 유저에게 공격 코드를 실행시키는 공격. 
    • 사용자가 함정에 걸려 공격 코드를 실행하면 취약성이 있는 웹 애플리케이션을 경유한 결과로써 유저가 가지고 있는 쿠키 등의 기밀정보를 도둑맞거나 로그인 중인 유저의 권한이 악용되는 등의 피해가 발생한다.
    • ex) 크로스 사이트 스크립팅(XSS), 크로스 사이트 리퀘스트 포저리(CSRF)
  • 유저가 처한 환경을 이용한 인트라넷 등에 대한 공격
    • 공격자가 설치한 함정에 유저가 액세스할 수 있는 네트워크라면 인트라넷도 공격할 수 있다.

 

 

11.2 출력 값의 이스케이프 미비로 인한 취약성

 

보안 대책을 실시하는 장소

  • 클라이언트에서 체크
    • 대부분 JavaScript 사용
  • 웹 애플리케이션(서버 측)에서 체크
    • 입력값 체크
    • 출력값 체크

 

크로스 사이트 스크립팅 (XSS)

  • 취약성이 있는 웹사이트를 방문한 사용자의 브라우저에서 부정한 HTML 태그나 JavaScript 등을 동작시키는 공격.
  • 동적으로 HTML을 생성하는 부분에서 취약성 발생
  • 공격 사례
    • 가짜 입력 폼 등에 의해 유저의 개인정보를 도둑맞음
    • 스크립트에 의해 유저의 쿠키 값이 도둑맞거나 피해자가 의도하지 않는 리퀘스트가 송신
    • 가짜 문장이나 이미지 등이 표시
  • XSS는 공격자가 함정을 준비하는 수동적 공격이다.

 

 

SQL Injection

  • 웹 애플리케이션을 이용하고 있는 데이터베이스에 SQL을 부정하게 실행하는 공격.
  • 공격 영향
    • 데이터베이스 내의 데이터 부정 열람이나 변조
    • 인증 회피
    • 데이터베이스 서버를 경유한 프로그램 실행

 

 

OS 커맨드 인젝션

  • 웹 애플리케이션을 경유하여 OS 명령을 부정하게 실행하는 공격
  • 쉘을 호출하는 함수가 있는 곳에서 발생할 가능성이 있다.
  • Windows와 Linux 등의 커맨드라인에서 프로그램을 기동하는 쉘에 대해 커맨드를 보낼 수 있다.

 

 

HTTP 헤더 인젝션

  • 공격자가 리스폰스 헤더 필드에 개행 문자 등을 삽입함으로써 임의의 리스폰스 헤더 필드나 바디를 추가하는 수동적 공격이다.
  • 바디를 추가하는 공격을 HTTP 리스폰스 분할 공격이라한다.
  • 리스폰스 헤더 필드에 값을 출력하는 처리가 있던 곳에 개행문자를 삽입함으로써 발생할 수 있다.
  • 공격 영향
    • 임의의 쿠키 세트
    • 임의의 URL에 리다이렉트
    • 임의의 바디 표시(HTTP 리스폰스 분할 공격)
  • 함정에 빠진 유저의 브라우저에 가짜 웹 페이지를 표시해서 개인정보를 입력하게 하거나 크로스사이트 스크립팅과 같은 효과를 얻을 수 있다.

 

 

메일 헤더 인젝션

  • 웹 애플리케이션의 메일 송신 기능에 공격자가 임의의 To 및 Subject 등의 메일 헤더를 부정하게 추가하는 공격이다.
  • 취약성이 있는 웹 사이트를 이용해 스팸 메일이나 바이러스 메일 등을 임의의 주소에 송신할 수 있다.

 

 

디렉토리 접근 공격

  • 비공개 디렉토리의 파일에 대해서 부정하게 디렉토리 패스를 가로질러 액세스하는 공격이다.
  • [../] 등의 상대 경로를 지정하거나 [/etc/passwd] 등의 절대경로를 지정함으로써 임의의 파일이나 디렉토리에 액세스 할 수 있다.
  • 이로 인해 웹 서버 상의 파일이 잘못 열람되어 버리거나 변조 또는 삭제되어 버릴 수 있다.

 

 

리모트 파일 인클루션

  • 스크립트의 일부를 다른 파일에서 읽어올 때 공격자가 지정한 외부 서버의 URL을 파일에서 읽게 함으로써 임의의 스크립트를 동작시키는 공격이다.
  • 주로 PHP에서 발생하는 취약성으로 PHP의 include와 require 설정에 따라서 외부 서버의 URL을 파일명으로 지정할 수 있는 기능이다.