Webhacking

Web Basic Info

reindeer002 2021. 3. 4. 17:37
728x90

웹에 대한 기초 지식을 먼저 정리해보자.

Web Browser: HTTP를 통해 전달된 데이터나 리소스를 가공해 사용자에게 보여줌

-> 사용자의 입력값으로부터 취약점이 발생함

웹브라우저로 접속할 시 보이는 모습

네트워크 프로그램 CLI(Commend Line Interface) 프로그램을 사용하여 웹을 사용할 수 있음

네트워크 프로그램 $ echo -ne "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"| nc example.com 80
CLI $ curl example.com

 


Web Resource: 웹에서 사용하는 콘텐츠

-> 이를 가리키는 주소를 URL이라고 함(옛날: 실제 위치, 최근: 추상적 위치)

종류: HTML, CSS, JavaScript, ETC(이미지, 음성, 영상...)

-> URI(URL): 리소스를 구별하기 위한 식별자

URL의 구성요소(Host+Port=Authority)

URL은 Encoding(<-> Decoding)을 통해 정보를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하여 처리함

Encoding은 알고리즘이 공개되었고 키가 없기 때문에 원래 정보로 복원 가능하다(암호화와 다름).

종류: URL Encoding(%~), HTML Entity Encoding(Entity name Encoding: &~, Entity number Encoding: &#x~)


HTTP, HTTPS: 웹에서 이루어지는 통신을 정의한 프로토콜

-> TCP or TLS(TCP의 암호화)를 사용하고 주로 80(HTTP), 443(HTTPS)포트 이용

Left - request, Right - response

-> Request: 서버에 대한 요청, 각각의 줄은 CRLF로 줄 바꿈이 이루어져야 함

-> Request: 서버의 응답, 각각의 줄은 CRLF로 줄 바꿈이 이루어져야 함

 

HTTP는 하나의 Request와 Response의 쌍이 통신하는 Connectionless, Stateless 프로토콜이다.

Connectionless: 하나의 요청 하나의 응답 후 네트워크 연결 종료

-> 최근에는 네트워크, 서버의 성능 향상으로 연결을 계속 유지하는 Keep-Alive가 가능하다.

Stateless: 연결을 끊을 때 상태를 유지하지 않는 것

-> 다시 연결할 시 인증을 다시해야 함


Cookie: HTTP 요청마다 새로운 커넥션을 열기 때문에 사용자 인증을 계속해서 해야 한다는 단점이 있다. 이러한 단점을 개선하기 위해 탄생

-> 웹브라우저는 Response의 set-cookie header나 javascript의 document.cookie를 통해 데이터를 쿠키에 저장함

-> 데이터를 key = value; 쌍으로 쿠키에 저장하고 ;뒤에 쿠키의 만료시간, 접근할 수 있는 도메인 등 추가 옵션을 설정

이러한 공격이 가능하지 않을까?


Session: 서버에서 Session ID를 주고 Session ID와 Cookie 데이터를 연결해 관리하게 됨

-> 유추할 수 없는 랜덤한 문자열 키

한번 Session이 주어지면 Cookie만으로 서버에 연결될 수 없다.

Session은 cookie에 국한되지 않고 다양한 곳(local storage)에 저장되어 사용한다.

Session ID를 추가로 요청함


그 외 기초 지식

HTTP, HTTPS의 패킷 모습 차이

Web Server - nginx, Apache

Web Application(Server) - nodeJS, PHP, Python, Java

DataBase Management System - MySQL

아래 글을 참고하여 Web Server와 Web Application Server의 자세한 차이점을 알아보라.

gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

728x90