-
<WEB Hacking> CookieWEB Hacking 2021. 12. 14. 22:44
- 웹 서버는 수많은 클라이언트와 HTTP 프로토콜을 사용해 통신
- HTTP 프로토콜로 웹 서버와 통신할 때는 웹 서버에 명령을 내리기 위해 GET, POST와 같은 메소드와 자원의 위치를 가리키는 URL 등이 포함되어 있음
- 이외에도 헤더(Header)를 통해 웹 서버에게 요청을 보내고, 웹 서버는 헤더를 통해서 웹 서버에게 요청을 보내고, 웹 서버는 헤더를 읽고 클라이언트에게 결과 값을 반환
- 헤더에는 클라이언트의 정보와 요청의 내용을 구체화하는 등의 데이터가 포함되는데, 클라이언트의 인증 정보도 포함
■쿠키
- 클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있으며, HTTP 프로토콜의 Connectionless와 Stateless 특징 때문에 웹 서버는 클라이언트를 기억할 수 없음
- 쿠키는 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송
- 서버는 클라이언트의 요청에 포함된 쿠키를 통해 클라이언트를 구분
※ Connectionless : 하나의 요청에 하나의 응답을 한 후, 연결을 종료하는 것을 의미
※ Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미
■쿠키의 용도
일반적으로 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용
· 정보 기록
- 팝업 창 : 웹 서버는 각 클라이언트의 팝업 옵션을 기억하기 위해 쿠키에 해당 정보를 기록하고 쿠키를 통해 팝업 창 표시 여부를 판단
- 쿠키는 서버와 통신할 때마다 전송되므로 쿠키가 필요없는 경우, 리소스 낭비가 발생하는 가능성이 있으므로
최근에는 Modern Storage APIs를 통해 데이터를 저장하는 방식을 권장함
· 상태 정보
- 웹 서버는 수많은 클라이언트의 로그인 상태와 이용자를 구별하기 위해 클라이언트를 식별할 수 있는 값을 쿠키에 저장하여 사용
■쿠키가 없는 통신
서버는 요청을 보낸 클라이언트가 누구인지 알 수 없기 때문에 어떤 클라이언트와 통신하는 지 알 수 없음
■쿠키가 있는 통신
클라이언트는 서버에 요청을 보낼때 마다 쿠키를 포함하고, 서버는 해당 쿠키를 통해 클라이언트를 식별함
■쿠키 변조
- 쿠키는 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보
- 서버가 별다른 검증 없이 쿠키를 통해 클라이언트를 식별하는 경우, 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청하여 타 클라이언트를 사칭해 정보를 탈취할 수 있음
■쿠키 적용법
- 쿠키는 클라이언트에 저장되므로, 클라이언트는 저장된 쿠키를 조회, 수정, 추가할 수 있음
- 클라이언트가 서버에게 요청을 보낼 때 저장된 쿠키를 요청 헤더에 넣어 전송하므로, 이용자가 요청을 보낼 때 쿠키 헤더를 변조할 수 있음
- 쿠키를 설정할 때는 만료 시간을 지정할 수 있고, 만료 시간 이후에는 클라이언트에서 쿠키가 삭제됨
- 쿠키의 만료는 클라이언트(브라우저)에서 관리
- 쿠키는 서버와 클라이언트 둘 다 설정할 수 있음
서버 HTTP 응답 중 헤더에 쿠키 설정 헤더(Set-Cookie)를 추가하면 클라이언트의 쿠키를 설정함 클라이언트 자바스크립트를 이용해 쿠키를 설정함 ex) document.cookie="{Key}={Value};" ■세션 하이재킹
- 공격자가 이용자의 쿠키를 훔칠 수 있으며 세션에 해당하는 이용자의 인증 상태 및 정보를 훔치는 것
'WEB Hacking' 카테고리의 다른 글
<WEB Hacking> SOP (0) 2021.12.15 <WEB Hacking> Session (0) 2021.12.14 <WEB Hacking> Browser DevTools (0) 2021.12.14 <WEB Hacking> Web Browser (0) 2021.12.13 <WEB Hacking> Web (0) 2021.12.13