Introduction of Webhacking
[1. 웹이란 무엇인가?]
웹 : 월드 와이드 웹(World Wide Web, WWW, W3) -> 줄여서 웹(Web)
웹 서버(Web Server) : 서비스를 제공하는 대상
클라이언트(Web Client) : 서비스를 받는 사용자
[2. 웹 기초 지식]
Web Browser
: HTTP를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹과 HTTP의 동작 원리를 알지 못해도 웹을 사용할 수 있도록 도와주는 소프트웨어
- 대중적으로 많이 쓰이는 웹 브라우저는 Chrome, Edge, Safari, Firefox 등
Web Resource : 웹 상에 존재하는 모든 콘텐츠입니다. (HTML, CSS, JS, PDF, PNG 등)
URI (URL) : Uniform Resource Identifier의 약자로 리소스를 식별하기 위한 식별자
- URI는 Scheme, Authority (Userinfo, Host, Port), Path, Query, Fragment의 구성 요소를 가짐.
HTTP (HyperText Transfer Protocol) : 인터넷 서비스에서는 서비스 대상 간 통신 규약(Protocol)을 지정하여 통신함. -> HTTP는 웹을 이용하기 위한 통신 규약
- TCP 혹은 TLS(암호화된 TCP)를 사용해 통신하고 기본 포트로 80(HTTP), 443(HTTPS) 포트를 사용.
HTTPS (HyperText Transfer Protocol Secure) : 기존 HTTP 데이터를 암호화하여 통신함.
- HTTPS는 HTTP의 문제점인 데이터의 평문 전송을 보완하기 위해 등장함.
- HTTP와 HTTPS의 핵심 구조 및 동작 원리는 동일하기 때문에 HTTP로 통칭하기도 함.
Cookie : 웹 브라우저에 저장하는 데이터
- 데이터를 key=value; 쌍으로 쿠키에 저장하고 ;뒤에 쿠키의 만료시간, 접근할 수 있는 도메인 등 추가 옵션을 설정할 수 있음.
- 추후 HTTP 요청을 보낼 때 웹 브라우저가 자동으로 헤더에 쿠키를 추가해 전송함.
Session : 서버에 저장하는 데이터
- 세션을 활용하면 데이터를 서버에 저장하고 해당 데이터에 접근할 수 있는 유추할 수 없는 랜덤한 문자열 키를 만들어 응답하며, 이를 보통 Session ID라고 부름.
- 쿠키는 데이터 자체를 사용자가 저장하며, 세션은 서버가 저장한다는 핵심적인 차이가 있음.
Domain Name : 인터넷(웹) 네트워크상에서 컴퓨터를 식별하는 이름
Server : 서버는 인터넷상에서 사용자에게 서비스를 제공하는 컴퓨터. 그 중 웹 서버는 사용자(웹브라우저)와 HTTP를 이용하여 통신하는 서버
Application : 서버에서 설정한 특정 기능들을 수행하는 소프트웨어
DataBase (DB) : 데이터를 저장하기 위해 사용하는 데이터 저장소
[3. 웹 해킹 개요]
: 웹 해킹은 해킹의 의미처럼 본래의 의도와는 다른 동작을 일으키거나 주어진 권한 이상으로 정보를 열람, 복제, 변경 가능한 행위가 웹에서 발생하는 것을 말함.
- 사용자의 입력을 받고 웹 사이트와 통신을 하는 Client-side, 사용자의 요청을 처리하는 Server-side로 크게 두가지로 나누어 볼 수 있음.
Client-side Attack
: 서비스 사용자에 대한 공격을 의미
- 웹을 이용하는 사용자는 웹 브라우저를 통해 서비스를 제공받는데 웹 서버가 제공해주는 데이터가 공격자에 의해 변조되었을 경우 웹 브라우저에서 렌더되는 과정에서 취약점이 발생하는 경우가 대표적.
Server-side Attack
: 서비스를 운용하는 서버에 대한 공격을 의미
- 다양한 공격 형태가 존재하며, 공격자가 공격에 성공하게 되면 서버의 어플리케이션 코드 또는 다른 사용자의 정보 유출, 서버 탈취 등으로 이어질 수 있습니다. 운영되는 서비스의 구조와 특징에 따라 위협의 형태가 달라짐.
Background:Web
[1. 웹]
웹
: 인터넷을 기반으로 구현된 서비스 중 HTTP를 이용하여 정보를 공유하는 서비스를 웹이라 함.
- 정보를 제공하는 주체는 웹 서버 (Web Server), 정보를 받는 이용자는 웹 클라이언트 (Web Client)
웹의 발전과 웹 보안의 중요성
- 과거에는 단순히 정보를 보여주는 것에서 그쳤다면, 현재는 정보를 검색하고 직접 제품을 구매할 수 있도록 변화하였음.
- 웹을 통한 정보의 교환 과정에서 이러한 민감한 정보들이 유출되거나 악용되지 않도록 보호하는 웹 보안의 중요성이 대두하고 있음.
웹 서비스, 프론트엔드와 백엔드
- 이용자의 요청을 받는 부분을 프론트엔드 (Front-end), 요청을 처리하는 부분을 백엔드 (Back-end)라고 부름.
[2. 웹 리소스]
: 웹에 갖춰진 정보 자산을 의미
- 모든 웹 리소스는 고유의 Uniform Resource Identifier (URI)를 가지며, 이를 이용하여 식별됨.
웹의 프론트엔드를 구성하는 대표적인 웹 리소스들
- Hyper Text Markup Language (HTML)
- 웹 문서의 뼈와 살을 담당. 태그와 속성을 통한 구조화된 문서 작성을 지원함.
- Cascading Style Sheets (CSS)
- 웹 문서의 생김새를 지정함. 웹 리소스들의 시각화 방법을 기재한 스타일 시트. 글자의 색깔이나 모양, 배경 색상, 이미지의 크기나 위치 등을 CSS로 지정할 수 있음. 브라우저는 이를 참고하여 웹 문서를 시각화함.
- JavaScript (JS)
- 웹 문서의 동작을 정의. 이용자가 버튼을 클릭했을 때, 어떻게 반응할지, 이용자가 데이터를 입력하면 어디로 전송할지 등을 JS로 구현할 수 있음. JS는 이용자의 브라우저에서 실행되는데, 클라이언트가 실행하는 코드라고 하여 Client-Side Script라고도 부름.
- 그 외
- 문서, 이미지, 동영상, 폰트 등
[3. 웹 클라이언트와 서버의 통신]
웹 서비스의 통신 과정을 간락화한다면,
- (클라이언트) 이용자가 브라우저를 이용하여 웹 서버에 접속합니다.
- (클라이언트) 브라우저는 이용자의 요청을 해석하여 HTTP 형식으로 웹 서버에 리소스를 요청합니다.
- (서버) HTTP로 전달된 이용자의 요청을 해석합니다.
- (서버) 해석한 이용자의 요청에 따라 적절한 동작을 합니다. 리소스를 요청하는 것이라면, 이를 탐색합니다. 계좌 송금, 입금과 같은 복잡한 동작을 요구할 경우 내부적으로 필요한 연산을 처리합니다.
- (서버) 이용자에게 전달할 리소스를 HTTP 형식으로 이용자에게 전달합니다.
- (클라이언트) 브라우저는 서버에게 응답받은 HTML, CSS, JS 등의 웹 리소스를 시각화하여 이용자에게 보여줍니다.
'웹해킹 스터디' 카테고리의 다른 글
ServerSide: File Vulnerability (1) | 2024.02.28 |
---|---|
ServerSide: Command Injection (0) | 2024.02.28 |
ClientSide: CSRF(Cross Site Request Forgery) (0) | 2024.02.15 |
ClientSide: XSS (0) | 2024.02.15 |
Background: Cookie & Session (0) | 2024.02.02 |