김승현

Bugbounty Boot Camp Chap.3 HOW THE INTERNET WORK 본문

book_summary

Bugbounty Boot Camp Chap.3 HOW THE INTERNET WORK

kshind 2024. 7. 21. 18:13

The Client-Server Model

인터넷은 클라이언트와 서버라는 두 종류의 디바이스로 이루어져 있다

 

웹페이지는 단순한 리소스들, 파일들의 집합일 뿐이다. 

-> 예를 들어 간단한 텍스트 파일을 업로드한다면, 이 텍스트 파일은 HTML로 작성되어 있을 것이고

    이를 보기 좋게 만들기 위해 CSS가 포함됐을 것이고 이들이 동작하기 위해 JS가 포함되어 있을 것이다.

 

서버는 클라이언트들에게 웹페이지만 보여주는 게 아니다.

-> 만약 API를 사용한다면 다른 시스템의 데이터들을 요청할 수 있다. 이는 통제된 상황 속 다른 시스템 간 상호작용을 

    할 수 있게 하는 것을 의미함

 

The Domain Name System

브라우저들과 웹 클라이언트들은 어디에 리소스들이 있는지 찾을 수 있을까?

-> 장치마다 인터넷 프로토콜이라는 IP가 있는데 이는 서로의 위치를 알 수 있도록 도움을 줌

 

DNS란, Domain Name System으로 www.naver.com과 같은 도메인을 장치가 이해할 수 있는 IP로 변환하는 것이며

DNS 서버는 전화번호부와 같은 역할을 함

 

Internet Ports

서비스를 이용하기 위해서 IP에 연결하여 사용할 수 있다고 하자.

만약 한 장치에서 여러 개의 서비스를 제공하고 싶다면 어떻게 해야 할까? => port

 

포트는 장치의 논리적 구분이라고 할 수 있으며 특정 네트워크 서비스를 식별함

ex) 21번 port는 FTP, 25번 포트는 email service... etc

 

HTTP Requests and Responses

연결이 수립되면 브라우저와 서버는 HTTP로 통신을 함

HTTP는 인터넷 메시지를 구성하고 하고 해석하는 방법, 그리고 어떻게 둘이 정보를 교환할지에 대한 것을 정의한

일련의 규칙 집합

 

Internet Security Controls

웹사이트에선 내용이 손상되는 것을 방지하기 위해 특별한 방법을 적용하곤 함 -> 인코딩

 

 

Base64는 데이터를 인코딩에 흔한 방법 중 하나이다.

A~Z, a~z, 0~9의 형태를 갖추고 있으며 끝에선 패딩을 위해 ==이 포함되어 있다.

bas64 인코딩 예시

 

또 다른 방법은 16진수 인코딩이다. 0~F까지의 문자를 사용해서 문자열을 인코딩하는방식

 

URL encoding

문자나 특수문자를 웹 서버와 브라우저에서 보편적으로 허용되는 형식으로 바꾸는 방식

 

Session Management and HTTP Cookies

 웹사이트는 로그인한 사용자와의 세션을 유지하고 사용자가 로그인할 때 새로운 세션을 수립함

이때 서버가 사용자를 식별하기 위해 길고 예측할 수 없을 만한 세션 아이디 생성하고 이는 로그아웃 할 때 사라진다.

이러한 세션ID를 쿠키라 함 

 

 

 

 

JSON Web Tokens

JWT는 가장 흔히 사용되는 인증 토근 방식 중 하나

 

JWT의 구성

  1. header
    1. 서명을 생성하는 데 사용된 알고리즘이 정의되어 있는 영역
  2. payload
    1. 사용자 신원에 대한 정보가 포함된 영역
  3. signature
    1. 해당 내용이 변조되어 있는지에 대한 검증을 위한 영역

 

이러한 JWT를 크랙하는 방법이 있음 

그 중 하나는 헤더에서 인코딩하는 데 사용할 알고리즘을 정의하는 alg필드를 변조하는 방법

->

alg에 들어갈 수 있는 알고리즘을 제한하지 않으면 alg를 NONE으로 정의할시 시그니처를 비워놓아도 토큰을 임의로 수정하여 공격자가 임의로 내용을 수정할 수 있음