쿠키
클라이언트 IP 주소와 User-Agent는 매번 변경될 수 있는 고유하지 않는 정보
HTTP 프로토콜 특징
- Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미
이런 HTTP의 특징을 상쇄하고 Status를 유지하기 위해 쿠키(Cookie)가 탄생했습니다
쿠키는 Key와 Value로 이뤄진 일종의 단위
서버가 클라이언트에 쿠키를 발급하면 클라이언트는 서버에 Request를 보낼 때마다 쿠키를 전송
서버는 클라이언트가 보낸 쿠키를 확인해 클라이언트를 확인
쿠키없이 HTTP 통신을 하면 Server는 클라이언트가 누군지 계속해서 확인하기 위해 로그인 요청을 합니다
하지만 쿠키가 있으면 클라이언트가 Request 할때마다 쿠키를 보내주기 때문에 쿠키를 통해 확인할 수 있습니다
하지만 이런 쿠키는 브라우저에 저장되고 Request할때마다 포함되기 때문에
클라이언트가 쿠키를 손쉽게 변조하여 서버에 Request 할 수 있습니다, 이를 통해 서버가 별다른 검증없이 쿠키를 이용해 클라이언트를 식별한다면 다른 클라이언트로 사칭해 정보를 탈취할 수 있습니다
쿠키 적용법
Server : HTTP 헤더에 Set-Cookie를 추가해 클라이언트의 브라우저가 쿠키 설정
HTTP/1.1 200 OK
Server: Apache/2.4.29 (Ubuntu)
Set-Cookie: name=test;
Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;
...
Client : 자바스크립를 사용해 쿠키 설정
document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"
세션
클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용합니다
Session ID : 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추 불가 랜덤)
브라우저는 해당 키를 쿠키에 저장하고 이후에 HTTP Request 할때 마다 사용합니다
서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인합니다
세션 하이재킹
쿠키에는 여러분의 세션 정보가 저장되어 있고 서버는 이를 통해 이용자 식별하고 인증을 처리합니다. 공격자가 이용자의 쿠키를 훔칠 수 있으면 세션에 해당하는 이용자의 인증 상태를 훔칠 수 있는데, 이를 세션 하이재킹 (Session Hijacking)이라고 합니다.
'Web Hacking' 카테고리의 다른 글
[Dreamhack] ClientSide : XSS (0) | 2023.03.30 |
---|---|
[Dreamhack] Mitigation: Same Origin Policy (0) | 2023.03.30 |
[Dreamhack] Background : Web Browser (0) | 2023.03.28 |
[Dreamhack] Background : HTTP/HTTPS (0) | 2023.03.28 |
[Dreamhack] Background : Web (0) | 2023.03.28 |