선릉역 1번 출구

Introduction of Webhacking(1) 본문

Hacking & Security/Hacking

Introduction of Webhacking(1)

choideu 2021. 8. 2. 11:39

Web의 어원 -> World Wide Web의 약자로 웹의 사전적 의미인 거미줄과 같이 인터넷상에서 각각의 사용자(컴퓨터)가 연결되어 서로 정보를 공유한다는 의미에서 유래됐다.

 

인터넷상의 서비스 중 HTTP를 이용해 정보를 공유하는 통신 서비스를

서비스를 제공하는 대상을 웹 서버

서비스를 받는 사용자를 웹 클라이언트라고 부른다.

->웹은 웹 브라우저라는 소프트웨어의 등장과 발전으로 대중적인 접근성이 높아졌다.

 

클라이언트가 컴퓨터 내에 존재하는 웹 브라우저를 실행하면 발생하는 과정에 대해서 알아보자.

▼키워드 설명

더보기

web browser: 웹에 접속하기 위해 사용하는 소프트웨어

web resource: 웹 상에 존재하는 모든 콘텐츠 (html, css, js, png, pdf etc)

URI: uniform resource identifier의 약자로 리소스를 식별하기 위한 식별자

http(hypertext transfer protocol): 인터넷 서비스에서는 서비스 대상 간 통신 규약(프로토콜)을 지정해 통신함

->http는 웹을 이용하기 위한 통신 규약임

https: 기존 http 데이터를 암호화해 통신

cookie: 웹 브라우저에 저장하는 데이터

session: 서버에 저장하는 데이터

domain name: 인터넷(웹) 네트워크상에서 컴퓨터를 식별하는 이름으로 www.naver.com은  네이버의 서버 컴퓨터를 식별하는 이름이라고 생각하면 됨

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

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

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

우리는 웹을 사용하기 위해 웹 브라우저라는 소프트웨어를 사용한다. 이는 HTTP를 통해 인터넷 상에서 통신을 해 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹과 http의 동작 원리를 몰라도 웹을 사용할 수 있게 한다. 

->HTTP의 원리와 동작 방식을 몰라도 웹을 불편함 없이 사용할 수 있지만 모든 취약점은 사용자의 입력값으로부터 발생하기 때문에 브라우저가 하는 행위를 필수적으로 이해하고 있어야한다.

 

웹 리소스는 웹에서 사용하는 콘텐츠를 의미한다. 웹 브라우저 주소창에 http://naver.com/index.html은 은 naver.com에 존재하는 /index.html 리소스에 대해 요청을 수행하는 것이다.

*웹 리소스를 가리키는 주소는 URL이다. 

->URI는 리소스를 식별하기 위한 식별자인데 URL은 URI의 하위개념이라고 볼 수 있다.

URI의 구성 요소를 알아보자

dreamhack.io에서 가져옴

Scheme, authority(userinfo, host, port), path, query, fragment로 나눌 수 있다.

▼키워드 설명

더보기

scheme: 웹 서버에 접속할 때 어떤 체계(프로토콜)를 이용할지에 대한 정보를 담고 있음

host: authority의 일부로 접속할 웹 서버의 호스트(서버 주소)에 대한 정보를 가지고 있음

port: authority의 일부로 접속할 웹 서버의 포트에 대한 정보

path: 접속할 웹 서버의 경로에 대한 정보를 가지고 있고 / 문자로 구분됨

query: 웹 서버에 전달하는 파라미터이며 URI에서 ? 문자 뒤에 붙음

fragment: 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있고 URI에서 # 문자 뒤에 붙음

 

encoding(인코딩)은 문자 또는 기호 등의 정보, 형태를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하는 처리 or 처리 방식을 말한다. 그 반대는 decoding(디코딩)이다.

encoding vs encryption

encoding: 알고리즘이 공개되어 있어 누구나 원래의 정보로 복원이 가능함

encryption: 양방향 암호 알고리즘으로 유효한 키가 있어야 원래의 정보로 복원이 가능함

->웹에서 사용하는 대표적인 인코딩은 URL과 HTML Entity가 있다.

 

HTTP

http or https는 URI의 구성 요소 중 scheme(protocol)에 해당되고 웹에서 이루어지는 통신을 정의한 프로토콜이다. 프로토콜은 컴퓨터 내부 or 컴퓨터 사이에서 어떻게 데이터를 교환할지를 정의하는 규칙 체계이다.

http의 보안을 강화해서 나온 것이 https이고 TLS를 사용해 통신하고 기본 포트로는 80(http), 443(https)를 사용한다.

HTTP는 request(사용자가 서버에 요청하는), response(사용자의 요청에 대한 서버의 응답)으로 나뉘어진다.

▶HTTP request

첫번째 줄에는 사용자가 서버에 요청 시 수행하고자 하는 동작인 Method, 요청하는 웹 리소스의 경로인 Path, 사용하는 HTTP의 버전을 나타내는 Version으로 구성된다.

두번째 줄에는 Header부분으로 이름:값 형태로 이루어진다. (많은 데이터를 포함할 수 있기 때문에 Header 부분의 끝을 표시하기 위한 CRLF(줄바꿈)을 한 번 더 출력한다.

마지막은 사용자의 데이터를 담은 Body가 있다.

▶HTTP response

첫번째 줄에는 Version과 사용자 요청에 대한 서버의 상태 응답 코드인 Status code로 구성된다.

두번째 줄에는 Header의 부분으로 http request와 마찬가지로 이름:값의 형태로 이뤄진다. Header의 끝을 표시하기 위해서 CRLF를 한 번 더 출력하고 서버의 응답 데이터 부분인 Body로 구성된다.

*웹 해킹에서는 사용자의 입력에 의한 서버의 응답에 주목해야 한다. 

ex) 악의적인 입력을 보냈을 때 500 status code를 응답하면 해당 입력이 서버에 어떤 영향을 끼쳤다고 결론내릴 수 있음

 

http method/header는 아래 사이트를 참고하자

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods

 

HTTP 요청 메서드 - HTTP | MDN

HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부

developer.mozilla.org

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html

 

[Network] HTTP 헤더의 종류 및 항목 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

 

dreamhack.io에서 공부한 내용을 요약한 것입니다.

'Hacking & Security > Hacking' 카테고리의 다른 글

webhacking study(3)  (0) 2021.08.16
webhacking study(2)  (0) 2021.08.10
webhacking study(1)  (0) 2021.08.10
Client-side attack(1)  (0) 2021.08.03
Introduction of Webhacking(2)  (0) 2021.08.02
Comments