본문 바로가기
개인 공부/Network (그림으로 배우는 Http&Network Basic)

Http&Network Basic : 웹 공격 기술 (11장)

by 희조당 2023. 7. 11.
728x90

🔪 웹 공격 기술

11.1 웹 공격 기술

  • 웹 애플리케이션 등의 리소스가 주요 타겟이다.
  • HTTP에는 보안 기능이 없어 애플리케이션에서 모두 구현해야 한다.
  • 변조가 가능한 요청에 공격 코드를 실어서 공격한다.

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

  • 공격 패턴은 능동, 수동 두 가지가 존재한다.
  • 능동적 공격은 서버를 노리는 공격이다. 리소스에 대해 직접 실행된다.
  • 대표적인 케이스는 SQL 인젝션OS 커맨드 인젝션 등이 있다.
  • 수동적 공격은 유저를 노리는 공격이다. 함정을 이용해 유저가 공격 코드를 실행하도록 한다.
  • 대표적인 케이스는 XSS, cross-site scripting, CSRF, Cross Site Request Forgery 등이 있다.

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

  • 보안 검사는 클라이언트에서 입력을, 서버 쪽에서는 입/출력에 대해서 체크하면서 이루어진다.
  • 클라이언트 측의 검사와 서버의 입력 검사는 보안 대책으로 적합하지 않다.
  • 출력값에 사용되는 이스케이프에 대한 보안이 중요하다.

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

  • 보안이 취약한 웹을 사용하는 유저의 브라우저에 HTML 태그JS 등을 동작시키는 공격이다.
  • 가짜 입력 폼으로 개인 정보를 도난당하거나, 쿠키 탈취 등으로 피해를 받는다.

11.2.2 SQL 인젝션

  • 웹 애플리케이션에서 사용하는 DB에 의도하지 않은 쿼리를 보내는 공격이다.
  • 데이터 조작, 인증 회피 등으로 피해를 받는다.

11.2.3 OS 커맨드 인젝션

  • 웹 애플리케이션에 접근해서 의도치 않은 OS 명령을 실행하는 공격이다.
  • CLI에서 동작하는 다양한 커맨드로 피해를 입힐 수 있다.

11.2.4 HTTP 헤더 인젝션

  • 응답 헤더 필드에 개행 문자 등을 삽입함으로써 헤더 필드나 바디를 추가하는 공격이다.
  • 바디를 추가하는 공격을 HTTP 리스폰스 분할 공격이라고 한다.
  • 임의의 쿠키 셋을 받거나 다른 URL로 리다이렉트 등으로 피해를 받는다.

11.2.5 메일 헤더 인젝션

  • 웹 애플리케이션의 메일 송신 기능에 의도치 않은 헤더를 추가하는 공격이다.
  • 보안이 취약한 웹 사이트를 통해 스팸 메일이나 바이러스 메일을 임의의 주소로 송신한다.

11.2.6 디렉터리 접근 공격

  • Directory Traversal은 비공개 디렉터리의 파일에 대해 경로를 가로질러 접근하는 공격이다.
  • 파일 처리 중 경로에 대한 보안이 부족하다면 의도치 않은 파일에 접근할 수 있다.

11.2.7 리모트 파일 인클루션

  • 스크립트의 일부를 다른 파일에서 읽어올 때 외부 서버의 URL을 읽게 하는 공격이다.
  • 주로 PHP에서 발생하는 문제이다.

11.3 웹 서버의 설정이나 설계 미비로 인한 취약성

  • 웹 서버를 잘못 설계하거나 설정하면서 발생하는 문제로 생기는 취약성이다.

11.3.1 강제 브라우징

  • 공개 디렉터리 중 공개 의도가 없던 파일이 열람되는 문제이다.
  • 보안을 URL에 의존하고 추측하기 쉬운 파일명이나 디렉토리명일 때 문제가 된다.

11.3.2 부적절한 에러 메시지 처리

  • 공격자에게 유의미한 정보가 에러 메시지에 포함되어 발생하는 문제이다.
  • 사용하는 DBMS 노출, 인증 정보 노출 등이 대표적인 예시이다.

11.3.3 오픈 리다이렉트

  • 오픈 리다이렉트는 지정한 임의의 URL로 리다이렉트 하는 기능이다.
  • 이 기능으로 유저를 악의가 있는 웹 사이트로 연결시킬 수 있다.

11.4 세션 관리 미비로 인한 취약성

  • 세션은 유저 상태를 관리하는 기능이지만, 인증 상태를 빼앗길 수도 있다.

11.4.1 세션 하이잭

  • 유저 세션 ID를 모종의 방법으로 입수해 악용하는 것이다. 유저로 위장해서 공격한다.
  • ID를 추측, 도용 등의 방식으로 입수한다.

11.4.2 세션 픽세이션

  • 유저에게 강제로 고정된 세션 ID를 사용하게 하는 공격이다.
  • 하이잭은 빼앗았다면 픽세이션은 강제로 사용하게 하므로 세션 고정 공격이라고도 부른다.

11.4.3 크로스 사이트 리퀘스트 포저리

  • 인증된 유저가 함정에 의해서 어떤 상태 처리를 강제로 실행시키는 공격이다.
  • 설정 정보 갱신, 의도치 않은 게시글 작성 등의 형태로 피해를 입는다.

11.5 기타

11.5.1 패스워드 크래킹

  • 비밀번호를 논리적으로 풀어 인증을 통과하는 공격이다. 애플리케이션 이외의 시스템에서도 사용된다.
  • SQL 인젝션으로 인증을 회피하거나, XSS로 패스워드로 훔칠 수도 있다.
  • 네트워크 경유로 패스워드 후보를 시험해 보는데 2가지 방법이 존재한다.
    • 무차별 대입 : 모든 키를 테스트한다. 얼마나 시간이 걸릴지 모른다.
    • 사전 대입 : 후보 키를 테스트한다. 대표적으로 생년월일이 존재한다.
  • 암호화된 패스워드를 해독하는 방법도 있다. 다음과 같은 4가지 방법이 존재한다.
    • 무차별/사전 대입을 통한 유추 : 해시 값을 비교하면서 유추한다.
    • 레인보우 테이블 : 미리 준비한 평문과 해시 값을 나열한 표를 사용하는 방법이다. 무차별/사전 대입 공격 시간을 단축한다.
    • 열쇠 입수 : 암호화에 사용된 키를 입수해서 복호화한다.
    • 암호 알고리즘의 취약성 : 취약성을 이용하는 방법이지만 취약성이 발견될 확률이 적다.

11.5.2 클릭 재킹

  • 투명한 버튼이나 링크를 함정으로 만들어 웹 페이지에 심어두는 방법이다.
  • 의도치 않은 콘텐츠에 접근하게 한다. UI Redressing이라고도 불린다.

11.5.3 DoS 공격

  • 서비스 제공을 정지 상태로 만드는 공격이다.
  • 액세스를 집중시켜 부하를 일으키는 방법과 취약성을 노려 정지시키는 방법이 존재한다.

11.5.4 백도어

  • 백도어는 제한된 기능을 절차 없이 이용하려고 설치한 뒷문이다.
  • 다양한 방법으로 설치될 수 있지만 보통 발견하기 어렵다.

😋 지극히 개인적인 블로그지만 댓글과 조언은 제 성장에 도움이 됩니다 😋

댓글