ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 📣 1주차 웹해킹 스터디 정리
    Study/WebHacking 2022. 3. 6. 15:19


     

    1. 웹 기초 지식

    사용자(웹 브라우저)와 웹 서버가 데이터를 주고받는 과정의 원리 및 기술들을 단계별로 알아본다.


    👉Web Browser

    웹에 접속하기 위해 사용하는 소프트웨어
    HTTP를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹리소스들을 가공해 사용자가 웹을 사용할 수 있도록 도와준다.

    ex) Chrome, Edge, Safari, Firefox

     

    👉Web Resourse

    웹 상에 존재하는 모든 콘텐츠

    • HTML (Hyper Text Markup Language) : 웹 문서의 뼈대를 구축하기 위한 '마크업' 언어로, 정해진 태그와 속성을 지정하여 문서를 구성한다.
    • CSS (Cascading Style Sheets) : HTML이 표시되는 방법을 정의하는 스타일 시트 언어로 이미지, 태그, 글자 등 다양한 웹 리소스들의 출력 시 스타일을 설정한다.
    • JS (JavaScript) : Client Side Script. 페이지 내에서의 행위들을 설정할 수 있다.
    • +) 사진(PNG), 폰트, 문서(PDF), 동영상 등

     

    👉URI (URL)

    Uniform Resource Identifier : 리소스를 식별하기 위한 식별자
    Uniform Resource Locater : 리소스의 위치를 식별하기 위한 URI의 하위개념

    • URI의 구성요소
      • Scheme : 웹 서버에 접속할 때 어떤 체계(프로토콜)을 이용할지에 대한 정보 담음
        (http://)
      • Host : Authority의 요소로, 접속할 웹 서버의 호스트(서버 주소)에 대한 정보를 가지고 있음
        (example.com)
      • Port : Authority의 요소로, 접속할 웹 서버의 포트에 대한 정보를 가지고 있음
      • Path : 접속할 웹 서버의 경로에 대한 정보를 가지고 있으며 /로 구분됨
        (/path)
      • Query : 웹 서버에 전달하는 파라미터(추가적인 정보)이며, URI에서 ?뒤에 붙음
        (?search=1)
      • Fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있으며 URI에서 #뒤에 붙음 (#fragment)

     

    👉Encoding(인코딩)

    -문자 또는 기호 등의 정보, 형태를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식

    알고리즘이 모두 공개되어있고 키와 같은 요소가 포함되어 있지 않아서 모두가 원래의 정보로 복원이 가능


    ex) URL Encoding(percent encoding), HTML Entity

     

    👉Decoding(디코딩)

    인코딩과 반대로, 다시 원래 형태로 변경하는 것

     

    👉HTTP (HyperText Transfer Protocol)

    웹을 이용하기 위한 통신규약

    앞의 URI에서 Scheme(Protocol)에 해당한다.
    인터넷 서비스에서는 서비스 대상 간 통신 규약(Protocol)을 지정하여 통신한다.
    모든 데이터가 평문으로 암호화 없이 전송되기에, 네트워크 공격에 의해 정보가 유출되는 문제가 될 수 있다.

    기본 포트로 80 포트를 사용한다.

    • Protocol : 컴퓨터 내부 혹은 컴퓨터 사이에서 어떻게 데이터가 교환되는지 정의하는 규칙 체계

    HTTP는 사용자가 서버에 요청을 하는 Request와 사용자의 요청에 대한 서버의 응답인 Response로 이루어진다.

    Request의 구성요소

    • 가장 첫 줄) Method, Path, Version
      • Method : 사용자가 서버에 요청 시 수행하고자 하는 동작
        ex) OPTIONS, GET, HEAD, POST, PATCH, DELETE, TRACE
      • Path : 사용자가 서버에 요청하는 웹 리소스의 경로
      • Version : HTTP의 버전을 나타냄
    • 두 번째 줄) Header부분 (이름:값) : 서버의 추가 정보를 전달하는 데이터 부분
      • Host : 데이터를 보내는 서버의 주소
      • Cookie : 사용자를 식별하기 위해 사용하는 정보
      • User-Agent : 사용자가 사용하는 프로그램의 정보
      • Referer : 페이지 이동 시 이전 URI의 정보를 나타냄
      • Content-Type : 사용자가 전달하는 데이터의 처리방식과 형식
    • 끝 줄) Body부분 : 사용자의 데이터를 받는다.

     

    • 가장 첫 줄) Version, Status code
      • Version : HTTP의 버전
      • Status code : 사용자의 요청에 대한 서버의 처리 결과를 나타낸다.
      • 200번 영역 : 사용자의 요청에 대한 서버의 처리가 성공하였을 경우 300번 영역 : 사용자가 요청한 리소스가 다른 경로로 변경된 경우 400번 영역 : 사용자가 서버에 요청하는 구조 또는 데이터가 잘못되었음을 나타내는 영역 500번 영역 : 서버의 에러와 관련된 영역
    • 두 번째 줄) Header 부분 : (이름:값) 사용자와 상호작용하기 위한 데이터를 담는 부분으로 사용된다.
      • Content-Type : 서버의 응답 데이터를 웹 브라우저에서 처리할 방식과 형식을 나타냄
      • Content-Lengh : 서버가 사용자에게 응답해주는 데이터의 길이를 나타냄
      • Server : 서버가 사용하는 소프트웨어의 정보를 나타낸다.
      • Allow : 허용되는 Method 목록을 사용자에게 알려줄 때 사용
      • Location : 300번 영역의 응답 코드 사용 시 변경된 웹 리소스의 주소를 나타낸다.
      • Set-Cookie : 사용자에게 쿠키를 발급할 때 사용한다. 해당 쿠키를 저장한다.
    • 끝 줄) Body 부분 : 서버의 응답 데이터

    👉HTTPS (HyperText Transfer Protocol Secure)

    기존 HTTP 데이터를 암호화하여 통신한다.

    HTTP의 문제점인 평문 전송을 보완하기 위해 등장하였다. 동작원리와 핵심구조는 동일하다.
    TLS, SSL을사용해서 암호화한다. 네트워크 상에서 데이터들이 암호화되어 전달되며 비교적 HTTP에 비해 안전하다.

    기본포트로 443 포트를 사용한다.


    사용자의 웹 브라우저에 저장하는 데이터
    데이터 자체를 사용자가 저장한다.

    사용자 인증 상태를 유지하기위해 Cookie(쿠키)라는 개념이 나오게되었다.

    웹 브라우저는 다음을 통해 데이터를 쿠키에 저장한다.
    HTTP Response의 Set-Cookie Header' 또는 'Javascript의 document.cookie'


    👉Session

    서버에 저장하는 데이터
    데이터 자체를 서버가 저장한다.

    데이터를 서버에 저장하고 해당 데이터를 접근할 수 있는 '유추할 수 없는 랜덤 문자열 키'를 만들어 응답하며, 이를 Session ID라고 부른다.

    👉Domain Name

    인터넷(웹) 네트워크 상에서 컴퓨터를 식별하는 이름

    URI 구성 요소 중 Host에 사용된다.

    • Internet Protocol(IP) Address : Host에 사용되며, 네트워크 상에서 통신이 이루어질 때 장치들을 식별하기 위해 사용되는 주소이다. 이것을 사람이 외우기 쉽고, 의미를 부여해 사용하기 위해 Domain Name을 사용한다.
    • DNS (Domain Name Server) 에서 Host를 조회해 등록된 IP Address를 가져와 사용한다.

    ex) www.naver.com 네이버의 서버 컴퓨터를 식별하는 이름

     

    👉Server

    인터넷 상에서 사용자에게 서비스를 제공하는 컴퓨터.

    • Web Server : 사용자(웹 브라우저)와 HTTP를 이용하여 통신하는 서버로 사용자의 HTTP요청을 해석하여 처리한 후 응답하여 주는 역할을 한다.
    • ex) nginx, Apache, Tomcat, IIS

    👉Application

    서버에서 설정한 특정 기능들을 수행하는 소프트웨어

    • Web Application : 사용자의 요청을 동적으로 처리할 수 있도록 만들어진 어플리케이션. 서버에서 동작하기 때문에 서버와 직접적으로 연결되어 있다.
    • Web Application Language : ex) PHP, NodeJs, Python, Java

     

    👉DataBase(DB)

    데이터를 저장하기 위해 사용하는 데이터 저장소

    • DataBase Management System (DBMS) : 데이터베이스 내의 데이터 조회/수정/삽입을 용이하게 사용할 수 있도록 도와주는 서버 어플리케이션. 어플리케이션들이 관리하는 데이터를 데이터베이스라고한다. 데이터베이스에는 사용자인증, 상품, 문서 등 중요한 개인정보가 포함되어 있어 보안에 신경써야한다.
    • ex) MySQL, MS-SQL

    2. 웹 해킹 개요


    👉웹 해킹

    본래의 의도와는 다른 동작을 일으키도록 하거나, 주어진 권한 이상으로 정보를 열람, 복제, 변경 가능한 행위가 웹에서 발생하는 것


    👉웹 해킹 공격 벡터

    웹 사이트 접속 시 발생하는 과정 2가지 (웹 해킹 공격 대상으로도 밑의 두 가지로 나누어짐)

    • Client-side : 사용자의 입력을 받고 웹사이트와 통신을 함
    • Server-side : 사용자의 요청을 처리한다.
    • Client-side Attack : 서비스 사용자에 대한 공격
      공격자는 다른 사용자의 웹 브라우저에 원하는 행위를 수행할 수 있다.
    • ex ) 웹 서버가 제공해주는 데이터가 공격자에 의해 변조되었을 경우 웹 브라우저에서 렌더 되는 과정에서 취약점이 발생하는 경우
    • Server-side Attack ; 서비스를 운용하는 서버에 대한 공격
      공격 성공 시 서버의 어플리케이션 코드 또는 다른 사용자의 정보 유출, 서버 탈취 등의 공격으로 발전 가능. 운영되는 서비스의 구조와 특징에 따라 위협의 형태가 달라진다.


    2020.10.11 일요일 작성

    모든 내용은 dreamhack.io의 Introduction of Webhacking을 참고함

     

     

    'Study > WebHacking' 카테고리의 다른 글

    📣 3주차 웹해킹 스터디 정리  (0) 2022.03.06
    📣 2주차 웹해킹 스터디 정리  (0) 2022.03.06