새소식

인기 검색어

Hacking/Web

Web의 기초지식

  • -
반응형

Web Hacking에 앞서 먼저 Web이 무엇인지 알고 가보자!!

 

Web! World Wide Web은 넓은 공간이다. 어떤 공간이냐!!!

인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간이다.

그 말은 Web은 User들 간의 Data를 주고받는다는 것을 말한다.

 

그럼 눈치가 100단인 분들은 바로 이해했겠죠??

 

Web Hacking은 바로 이 Data를 탈취하고, 변경하고, 조작하는 것을 말해 (^0^)

 

그러면 이 Data를 어떻게 공유하는지 볼까요?

Web은 HTTP라는 Protocol을 이용하여 Data를 공유 해용

 

Web Cilent와 Server가 통신하는 방법

위에 자료가 Web이 기본적으로 통신하는 방법이다.

WebClientServer가 서로 통신을 한다.

  • Client: 정보를 받는 이용자
  • Server: 정보를 제공하는 주체

Client는 Web Browser을 이용하여 Server가 제공하는 문서를 사용한다.

그래서 흔히 Client에서 보이는 부분을 Front-end, 보이지 않고 Server가 처리하는 부분을 Back-end라고 한다.

Front-end의 종류는 HTML, CSS, JS

Back-end의 종류는 Web Server, DB, API 등이 있다.

 

대략적인 Web 통신은 이해하셨나용??

이해 못 했다고요?? 그건 네가.....(크흠.....)

괜찮아 그럴 수 있어!! 

 

자! 이제 Client Server는 어떤 데이터를 주고받을까??

 

그전에 

ClientServer에게 요청하면 서버가 응답하는 방식으로 데이터 교환이 이루어져용

그래서 이러한 방식을 전문 용어로 

  • Request: ClientServer에 특정 resource를 지정해 달라고 요청
  • Response: Server가 해당 request를 이해하고 resource를 반환

ClientServer에게 Request를 하면 그에 대한 Server가 Response 한다고 보통 말해여 알게쪄??

Request(요청) Response(응답) 쉽져???

 

Client의 Request에 의한 Server의 Response

그림을 잘 보면

Request, Response 둘 다 HTTP 메시지로 이루어져 있다.

HTTP 메시지에 대한 내용은 따로 포스팅할게용~~  >0<

 

이제 웹 browser의 기본적인 동작을 볼까용~~?

웹 브라우저의 동작

웹 브라우저는 (1) 주소창에 입력된 URL을 분석한다. (2) URL에 해당하는 주소를 DNS Server에 요청하여 분석한다.

(3) 분석이 완료되면 HTTP를 통해 URL을 Server로 요청한다. (4) Server는 URL의 Request를 받아서 browser에 Response를 한다. (5) Response를 받으면 Client는 resource를 다운로드 및 웹 렌더링을 한다. 

총 5번의 과정을 거쳐서 동작한다.

 

그럼 여기서 문제!?!?!

DNS가 무엇일까??

 

DNS란 Domain Name Service의 약자로 쉽게 인터넷 전화번호부 같은 의미예용

 

Domain설명

Domain 조금 더 살펴보면 예를 들어 https://www.artemis.com의 IP주소가 243.125.0.63이라고 가정해보자.

그럼 Server에는 243.125.0.63이 저장될 것이고 Client가 보는 URL의 주소는 https://www.artemis.com 이 될 것이다.

어때?? 이해했오??

 

그럼 이제 URL의 구성에 대해 살펴보자뀨

http://www.artemis.com:24162/path?query='hello'#frag

요소 종류 설명
Scheme, Protocol http:// Web Server와 통신할 프로토콜
Host www.artemis.com 접속할 Web Server의 주소에 대한 정보
Port 24162 접속할 Web Server의 포트에 대한 정보
Query /path?query='hello' Web Server에 전달하는 Parameter
Fragment #frag 웹 브라우저만 가지고 있는 데이터
메인 리소스 내 서브 리소스를 식별할 때 사용

URL내에서 다양한 data들이 많아서 기본적으로 Web Hacking을 할 때 URL을 분석하는 것으로부터 정보를 탐색하기도 한다.

 

마지막으로 CookieSession에 대해 설명해줄껭

그전에 알아야 하는 게.... HTTP의 특징을 먼저 설명하면

  • Connectionless
  • Stateless

2가지 특징이 있어...

Connectionless는 말 그대로 연결이 없다 즉 하나의 Resquest에 대한 Response를 한 후 연결을 종료하고

Stateless는 상태가 없다. 즉 서로의 통신이 끝난 후 상태를 저장하지 않는 이러한 특징이 있어...

그래서 HTTP Protocol은 2가지 특징 때문에 Client를 기억할 수 없어... 완전 큰일이지 ㅠㅠ

그럼 Client는 어떻게 상태를 유지할까??

그래서 나타난 개념이 CookieSession이다.

 

Cookie는 무엇일까? 구워 먹는 거? 맛있냐?

Cookie는 { key : value }로 이루어져 있는 일종의 단위로 Client를 식별하기 위한 도구라고 생각하면 돼

ServerClient한테 Data를 줄 계획인데 아무한테나 주면 돼요 안돼요?? 당연히 안되죠??

해당 Data를 줄 Client가 맞는지 확인해야 하져??

그래서 보통 CookieClient한테 발급되고 ClientServer에 Request를 보낼 때 Cookie를 포함하여 같이 전달한다.

 

하지만 그것만으로 되겠어??

만약 너의 Cookie가 { guest : babo }라고 가정해봐

너의 친구가 우연히 Cookie를 보고 Web Server에 요청할 때 { guest : babo }를 포함하여 보내.

그럼 어떻게 되겠어??

Server는 당연히 요청 온 Client를 너라고 생각하고 네가 저장하고 있는 data를 주겠지??

그럼 큰일이잖아.....

그래서 Session이라는 개념도 생긴 거야~~

SessionClient의 인증 정보를 Server에 저장하고 해당 key를 만들어 Client한테 전달하는 방식이야

Seesion은 Server에 저장되기 때문에 Client가 절 때 변조할 수 없겠지??

그래서 해당 키를 Cookie에 저장하고 이후 HTTP Request를 할 때 key를 포함하여 보내 Client의 상태를 인증한다.

 

어때 이제 감이 좀와~~~~??

나랑 같이 천천히 Web Hacking에 대해 공부해보자뀨!!

긴 글 읽느라 고생해써!!

반응형

'Hacking > Web' 카테고리의 다른 글

JWT Attacks  (1) 2023.05.02
Click jacking  (0) 2023.04.25
Directory Traversal  (0) 2023.04.22
DNS Rebinding Attack  (0) 2023.04.16
SOP와 CSP  (0) 2022.05.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.