관리 메뉴

너와 나의 스토리

Web Hacking 본문

Computer Security

Web Hacking

노는게제일좋아! 2020. 9. 25. 23:54
반응형

웹의 기본 개념

웹 사이트/애플리케이션의 주요 컴포넌트

  • 사용자
    • 마우스 클릭이나 키보드 입력 등을 이용해서 웹 프레임워크와 상호작용
  • 브라우저 
    • 웹 서버에 정보를 제공 및 제공 받음 - 통신 단말의 역할
    • 서버의 데이터(html, css, js, media file 등)를 해석하고, 이를 사용자가 실제로 볼 수 있도록 처리
    • 키보드, 마우스, 터치스크린 등의 입력 장치를 거쳐 전달된 사용자 인터렉션을 처리
  • 웹 서버
  • 백엔드

 

브라우저와 웹 서버 간의 통신

  • HTTP 또는 HTTPS 프로토콜을 이용하여 통신
  • HTTP 프로토콜로 전송되는 데이터는 쉽게 감청 및 도청될 수 있다.
  • HTTPS는 HTTP보다 보안성 있는 통신을 제공
    • 보안 계층인 SSL/TLS 추가되어 있음
    • 암호화된 통신을 수행하여 데이터를 감청당하더라고 공격자가 내용을 알기 쉽지 않다.

 

웹 서버

  • 브라우저의 요청 사항을 처리하는 일에 중점을 둔다
  • 어떤 동작을 수행할지 결정하기 위해 HTTP 헤더 뿐만 아니라 URL을 사용한다
  • 서버 측 스크립트와 함께 동작한다

 

백엔드 서비스

  • 웹 서버의 백그라운드에서 실행되는 서비스
  • 브라우저에 대한 응답을 생성하기 위해 사용되는 데이터를 제공
  • 흔히 사용되는 백엔드 서비스로는 데이터베이스가 있다
  • DB나 다른 백엔드 서비스의 정보를 필요로 하는 요청이 오면 서버 측 스크립트는 DB에 접속해서 정보를 가져온 다음, 이 정보를 적당한 형식으로 바꿔 브라우저로 보낸다

 

Web Hacking

Web Hacking 종류

  • Injecting Malicious Data
    • 웹 어플리케이션에 조작된 데이터를 강제로 입력시켜 공격하는 것
  • Exploiting Unchecked Input
    • 웹 서버가 정상 입력으로 간주하게 되어서, 백엔드 서비스 등에 2차 피해를 일으키는 공격

 

Injecting Malicious Data

  • Parameter Tampering
    • 웹 어플리케이션에서 사용하는 Parameter를 강제로 입력하여, 애플리케이션의 의도대로 동작하지 않게 하는 공격
    • 브라우저가 웹 서버로 데이터를 요청하는 과정에서 데이터를 변조하기 위해서는 대표적으로 Web proxy 프로그램을 사용할 수 있다
      • 예: HTML 코드에서 변수를 통해 값을 가져오고, Java 코드에서 이 변수를 이용하는 경우, proxy를 이용해서 해당 파라미터에 임의의 값을 넣어 서버가 작동하게끔 할 수 있다.
  • URL Tampering
    • URL로 중요한 데이터를 보내는 경우, 이를 조작하여 공격자의 의도대로 동작을 바꾸는 공격 방식
    • 예: URL이 "http://~~/ amount=1000"일 때, 빨간 부분을 임의로 변경할 수 있음 
  • Hidden Field Manipulating
    • 공격자가 Hidden Tag를 이용하여 값을 웹 어플리케이션으로 전달하는 방법을 이용하는 공격
    • HTML 코드는 클라이언트 측에서 실행되고, 브라우저에서 view를 그려낸 후, form에 작성된 데이터가 서버로 전송되기까지 input tag가 hidden일지라도 쉽게 바꿀 수 있다
      • 간단하게 브라우저 내의 개발자 도구에서 hidden input tag를 찾고 값을 바꾸어 변경할 수도 있음
      • 예: HTML 코드에서 "<input type="hidden" name="price" value="10">"일 때, 빨간 부분을 임의로 변경할 수 있음
  • HTTP Header Manipulation
    • 웹 어플리케이션이애플리케이션이 HTTP 헤더의 정보를 이용할 때, 이를 조작하여 웹 애플리케이션이 오작동하도록 유인하는 공격 방식
    • 예를 들어, A 사이트에서 온 요청이면 처리하고, 아니면 거부하는 코드가 있을 경우, HTTP Request 헤더의 Referer 필드를 변경하여 보내 우회가 가능
  • Cookie Poisoning
    • 공격자가 Cookie를 조작하여 결과를 원하는 대로 변경하는 공격
    • Session ID가 단순하면 당하기 쉬움
  • Excutable File Upload
    • 웹 어플리케이션 서버에서 실행될 수 있는 파일(php, jsp, asp)을 업로드하여 실행시키는 공격 방식
    • 대처 방법: 
      1. 사용자가 올린 파일에는 실행 권한 주지 않기
      2. 사용자가 올린 파일을 통해 passthru()와 같은 시스템 함수가 실행되지 않도록 필터링하기

 

Exploiting Unchecked Input

  • Cross-site Scripting(XSS)
    • 사이트를 넘어 스크립트를 실행하는 공격을 지칭
    • 웹 서버를 공격하는 방식이 아닌 사이트를 통해 다른 사용자를 공격하는 것
    • 예: 게시판과 같이 동적으로 생성되는 페이지에 조작된 코드를 넣어, Cross-site Scripting이 취약한 사이트(게시판)에 업로드함. 다른 사용자들이 이 게시물을 통해 스크립트를 실행하게 되고, 자신의 쿠키 정보가 특정 사이트로 전송될 수 있다.
  • SQL Injection
    • 대표적인 웹 해킹 방법 중 하나
    • 사용자의 입력이 백엔드 DB에 바로 전달될 때, 입력에 쿼리문을 넣어 DB를 조작할 수 있는 치명적인 공격 방식
    • 예: 서버에서 로그인 요청에 대한 인증을 할 때, where 절에 id와 pw를 넣어 DB를 조회하는 쿼리문을 사용 한다고 하자. 공격자는 이 쿼리문에서 where 절에 id만 선택하는 것으로 수정하면, 특정 사용자의 id만 알아도 로그인할 수 있다.
  • Path Traversal
    • 웹 페이지에서 전달 받은 인자를 그대로 Path로 사용할 때, 해당 값을 조작하여 원하는 파일에 접근하는 공격 방식
    • URL 조작
  • Command Injection
    • 웹 어플리케이션에서 사용자의 입력을 직접적인 Shell 명령으로 이용할 때, 이를 조작하여 원하는 명령을 실행하는 공격 방식
    • 위에 실행 파일 업로드하는 방식이랑 비슷한 거 아님?
      • Command Injection 공격은 ls라는 명령을 통해 etc 디렉터리를 정상적으로 조회해주고, 그 후 세미콜론(;)을 이용해서 공격자의 의도가 포함된 명령어를 덧붙이는 방식
      • 즉, 우선은 정상적으로 작동 시킨 후에, 원하는 대로 수행되도록 하게 함. 
        • Excutable File Upload는 파일 실행되는 순간, 바로 원하는 대로 수행하도록 함.
      • 예: http://~~/ListFile.php?path="/etc/;rm -rf /*"

 

WebGoat

 

 

 

출처:

- [Cryptography and Network Security: Principles and Practices]

- ISLAB 강의 자료

반응형
Comments