壓倒
Ye0L
壓倒
Total
Home
Today
  • ByO (59)
    • 악성코드분석🍳 (10)
      • Android (2)
      • Windows (8)
    • 백준⌨ (1)
    • 개발💻 (14)
      • Python (14)
      • C (0)
    • AI (2)
      • ML (2)
      • DL (0)
    • Dreamhack (23)
      • Web hacking (20)
      • Reversing (3)
    • CTF (5)
      • Forensic (5)
    • Study (4)
      • Linux (2)
      • Web (2)

블로그 메뉴

  • 홈
  • 방명록
  • 깃허브😀
  • 티스토리 홈

공지사항

인기 글

태그

  • 드림핵
  • Background:Web Browser
  • reversing
  • 리버싱
  • forensic
  • Background: Cookie & Session
  • ClientSide: XSS
  • Raccoon Stealer v2
  • 악성코드분석
  • File Download Vulnerability
  • selenium
  • web hacking
  • CSRF
  • Crawling
  • Raccoon Stealer
  • PYTHON
  • dreamhack
  • APK 구조
  • 크롤링
  • [DigitalForensic]with CTF

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
壓倒

Ye0L

Dreamhack/Web hacking

Background: Cookie & Session

2023. 1. 17. 19:16
해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=4를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.

쿠키 🍪


클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 값이며, HTTP 프로토콜의 Connectionless 와 Stateless 특징으로 인해 웹 서버는 클라이언트를 기억할 수 없다.

Connectionless(비연결성) 클라이언트가 서버에 요청을 하고 응답을 받으면 그 즉시, TCP/IP 연결을 끊어 유지하지 않는 것이다. 서버는 이를 활용해 서버의 자원을 효율적으로 관리하고 많은 클라이언트의 요청에도 대응할 수 있게 한다.
Stateless(무상태) 서버가 클라이언트의 이전 상태를 보존하지 않는다는 것이다.

이러한 Contectionless 와 Stateless 특징을 갖는 HTTP에서 상태를 유지하기 위해 쿠키를 사용한다.


쿠키의 정의

쿠키는 Key와 Value로 이루어진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송한다. 서버는 해당 쿠키를 확인하여 클라이언트를 구분한다.


쿠키의 용도

일반적으로 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용한다.

정보기록과 상태 정보 [정보기록] “다시보지 않기”, “7일간 표시하지 않기” 와 같이 클라이언트의 팝업 옵션을 기억하는 것으로 과거에는 클라이언트의 정보를 저장하기 위해 쿠키가 종종 사용되었으나 쿠키가 불필요한 요청에도 쿠키와 같이 서버로 전송하게 될 경우 리소스 낭비가 발생한다. 최근에는 이를 해결하기 위해 Modern Storage APIs를 통해 데이터를 저장한다. [상태 정보] 웹 서버는 회원가입과 로그인을 통해 개개인에게 맞춤형 서비스를 제공한다. 이때 클라이언트를 식별하기 위한 값을 쿠키에 저장해 사용하게 되는데 이를 상태정보라 말한다.


쿠키 존재 여부에 따른 통신 형태

[쿠키가 존재하지 않는 경우]

쿠키가 존재하지 않기 때문에 현재 어떤 클라이언트와 통신하는지 알 수 없다.

쿠키가 존재하지 않는 통신(출처 : dreamhack)

[쿠키가 존재하는 경우]

쿠키가 존재하므로 클라이언트의 대상이 식별 가능하다.

쿠키가 존재하는 통신(출처 : dreamhack)


쿠키 변조

서버는 쿠키를 통해 클라이언트를 식별하기 때문에 만약 악의적인 클라이언트가 쿠키 정보를 변조해 서버 요청을 보내게 되면 쿠키에 해당하는 클라이언트 정보를 탈취할 수 있다. 이를 방지하기 위해서는 서버에 추가적인 검증 로직 구축이 필요하다.

세션


쿠키의 경우 변조 가능성이 존재한다. 이를 해결하기 위해서는 추가적인 검증 로직이 필수적이라고 하였고 이러한 역할을 하는 것이 세션이다.


세션의 정의

세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추 불가능한 랜덤 문자열)을 만들어 클라이언트에 전달하는 방식으로 동작한다.

이러한 키를 세션 ID라고 부르며, 브라우저는 해당 키를 쿠키에 저장하고 HTTP 요청을 보낼 때 사용한다.


세션과 쿠키의 차이

쿠키는 데이터 자체를 이용자가 저장하고 세션은 서버가 저장한다는 점에서 차이가 있다.


세션 하이재킹

쿠키에는 세션 ID와 같은 세션 정보가 저장되어 있고 서버는 이를 통해 이용자를 식별하고 인증을 처리한다. 이때 공격자가 이용자의 쿠키를 훔칠 수 있으며 세션에 해당하는 이용자의 인증 상태를 훔칠 수 있는데 이를 세션 하이재킹(Session Hijacking)라고 한다.

오류, 잘못된 점 또는 궁금한 점이 있으시다면 댓글 남겨주세요❗


Uploaded by N2T

'Dreamhack > Web hacking' 카테고리의 다른 글

[Web hacking] Mitigation: Same Origin Policy  (0) 2023.01.18
session-basic Write-Up  (0) 2023.01.17
[Web hacking] funjs Write-Up  (0) 2023.01.17
[Web hacking] Carve Party Write-up  (0) 2023.01.14
Tools:Browser DevTools  (0) 2023.01.13
    'Dreamhack/Web hacking' 카테고리의 다른 글
    • [Web hacking] Mitigation: Same Origin Policy
    • session-basic Write-Up
    • [Web hacking] funjs Write-Up
    • [Web hacking] Carve Party Write-up
    壓倒
    壓倒
    악성코드 분석, 개발, 백준 등 나의 일지

    티스토리툴바