Session Hijacking 이란?
👾 Session Hijacking 이란?
HTTP Session Hijacking 이라는 공격 기법은 웹 브라우징시 세션 관리를 위해 사용되는 Session ID를 스니핑이나 무작위 추측 공격(brute-force guessing)을 통해서 도용하는 기법이다. 간단히 말하자면,
공격자가 인증 작업 등이 완료되어 정상통신을 하고있는 다른 사용자의 세션을 가로채서 별도의 인증 작업 없이 가로챈 세션으로 통신을 계속하는 행위이다.

0. HTTP 프로토콜의 특성

HTTP는 기본적으로 비연결유지(stateless) 프로토콜이다. 따라서 웹 사이트 로그인 후 다른 페이지 방문시마다 매번 로그인해야 하는 불편함이 있는데 이는 Session ID를 사용해서 해소할 수 있다.
1. Session ID란?
웹 서버가 다수의 웹 페이지 요청자를 구별하기 위해 각각의 사용자의 세션에 대해서 부여한 임의의 긴 문자열.
웹 서버는 다수의 웹 페이지 요청자를 구별하기 위해 각각의 사용자의 세션에 대해서 임의의 긴 문자열 값인 Session ID를 부여한다. 사용자가 홈페이지 방문시 혹은 인증 로그인시에 생성된다. 이러한 Session ID는 사용자의 계정, 암호, 그 밖의 IP 주소, timestamp 등의 여러 파라미터들을 조합하여 생성할 수 있다.
Session ID가 바로 사용자와 일련의 웹 서핑 동작을 연결시켜줌으로써 웹 사이트 로그인 후 다른 페이지 방문시마다 매번 로그인을 하지 않아도 되는 편리함을 제공해주는 것이다. 언제 들어가도 쇼핑몰의 장바구니 목록이 유지되는 것도 이 덕분이다.
즉, Session ID를 통해 인증과 인가(authentication & authorization)라는 세션 관리를 수행할 수 있다.
2. Session ID는 어디에?
1) 쿠키

2) 웹 브라우저 주소창의 URL

3) 웹 페이지 폼 소스 상의 hidden field

Session ID는 우리가 흔히 듣는 쿠키(cookie)라는 곳에 저장되는 것이 일반적이다.(메모리나 디스크)
그러나 가끔은 웹 브라우저 주소창 URL이나 HTML 페이지 폼 소스 상의 hidden 필드에 포함되어 드러나기도 한다.
3. Session ID의 문제점, 취약성
웹 서버에서의 Session ID 생성 기법 및 관리 기법에 따라서 다음과 같은 취약점이 존재할 수 있다.
강력하지 못한 알고리즘, 길이가 짧은 Session ID, 계정 잠금 기능 미비 등.. 이러한 문제점으로 아래와 같은 공격기법들 존재한다.
(1) HTTP Session Hijacking 공격
공격자는 Session ID를 취득하기 위하여 웹 서버와 웹 클라이언트의 트래픽을 직접적으로 스니핑하거나, 웹 서버 상에 공격 코드를 삽입하여 두고 사용자가 클릭할 때 Cookie, Session ID 값을 전송받을 수 있도록 한다. 웹 서버와 웹 클라이언트 사이의 트래픽을 직접적으로 스니핑하는 방법은 일반적인 네트워크 트래픽 스니핑 기법을 통해 가능하다. ->
세션 하이재킹은 좋은 예제: https://sudo-minz.tistory.com/16
(2) Cross-Site Scripting (XSS)
(네트워크 트래픽 스니핑을 통한 HTTP 요청 헤더 안의 쿠키값)
웹 서버 상의 HTML 코드 삽입이 가능한 페이지는 주로 사용자가 글을 게시할 수 있는 게시판이나 자료실 등에 존재한다. 정상적인 글을 게재하는 대신 공격자는 HTML 코드 및 스크립트를 심어 넣는다. 일반 사용자는 해당 게시물을 열람하게 될 때 자신도 모르는 사이 Cookie, Session ID 정보가 제 3 의 공격자 서버나 이메일로 전송되게 된다.
Cross-Site Scripting (XSS) 예제 : https://sudo-minz.tistory.com/71