웹/웹 보안

HTTP Session Hijacking

비니화이팅 2018. 2. 6. 10:57

* HTTP 특징

- HTTP는 기본적으로 비연결유지(stateless) 프로토콜이다. 따라서 웹 사이트 로그인 후 다른 페이지 방문시마다 매번 로그인해야 하는 불편함이 있는데 이는 Session ID를 사용해서 해소할 수 있다. 


* Session ID

<개념>

웹 서버가 다수의 웹 페이지 요청자를 구별하기 위하여 각각의 사용자의 세션에 대해서 부여한 임의의 긴 문자열을 말한다.

- 사용자가 홈페이지 방문시 혹은 로그인시에 생성이 된다.

- 사용자의 계정, 암호, 그 밖의 IP 주소, times tamp 등의 여러 파라미터들을 조합하여 생성할 수 있다.

- 사용자와 일련의 웹 서핑 동작을 연결시켜줌으로써 웹 사이트 로그인 후 다른 페이지 방문시마다 매번 로그인을 하지 않아도 되는 편리함을 제공해준다.


<저장소>

1. 쿠키에 저장(가장 일반적)

- 메모리 혹은 디스크에 저장된다


2. HTMP페이지 폼 소스 상의 hidden 필드에 포함

- Hidden field를 이용하여 Session Token을 HTML 코드 내에 저장한다.

- 위험성이 널리 알려져 요즘에는 세션정보를 저장하는 용도로 사용하지 않는다.


3. 웹 브라우저 주소창 URL

- URL에 Session Token을 덧붙여 사용한다.

- 웹 브라우저에서 쿠키를 사용하지 못하도록 설정한 경우에 주로 사용된다.



* HTTP Session Hijacking

-  브라우징시 세션 관리를 위해 사용되는 Session ID를 스니핑이나 무작위 추측 공격을 통해서 도용하는 기법이다. 



[실습 1]

- XP에서 WebServer에 접근하여 로그인을 한다.


- Paros를 실행시킨 후 웹 브라우저에서 새로고침을 하면 다음과 같이 쿠키값이 보인다.

  이 쿠키값을 BackTrack에서 사용할 것이기 때문에 복사해놓는다.


- BackTrack에서 paros를 실행시킨다.


- BackTrack에서 Firefox의 프록시 설정은 다음과 같이 하면 된다.



- WebServer에 접근한다.


- Paros에서 Cookie필드가 보이는 데 이 필드의 값을 XP에서 복사한 쿠키값으로 변경하면 XP에서 로그인한 사용자의 권한을 그대로 쓸 수 있는지 확인해볼 것이다.


- 아래처럼 XP에서 복사한 쿠키값으로 변경해주고 Continue를 눌러준다.


- 마찬가지로 XP에서 복사한 쿠키값으로 변경해주고 Continue를 눌러준다.


- 그러면 아래와 같이 XP에서 로그인한 사용자의 권한으로 로그인이 되는 것을 확인할 수 있다.


- 페이지를 이동할 때 마다 쿠키값을 변경해줘야 하는 불편함이 있는데 이 것은 Filter를 걸어주면 해결이 가능하다.

  즉, 웹 페이지에 접근할때마다 쿠키값이 복사했던 쿠키값으로 바뀌어져 넘어간다.



[실습 2]

- client의 session을 탈취해 client의 권한으로 login한다. (client의 권한으로 site의 여러 기능을 사용할 수 있는지 확인한다.)

-> 실습 환경

 - WinXP(Client) : IP - 192.168.55.26

 - Win2000Server(WebServer)  : IP - 192.168.55.25

 - BT(Attacker) : IP - 192.168.55.22


- 현재 Client는 다음과 같이 Web Server에 접속하여 로그인한 상태라고 가정한다.

- 일단 cookie값을 스니핑해야 하기 때문에 ARP Spoofing을 진행한다.




- 그러면 Client와 Web Server간에 주고 받는 패킷이 보인다. 즉, 쿠키값 탈취가 가능하다. 해당 쿠키값을 복사한다.


- paros로 Web Server에 접근할때의 패킷을 잡는다.


- 쿠키 값을 아까 복사한 Client의 Cookie로 변경하고 Continue를 눌러주면


- 다음과 같이 Client의 권한으로 로그인 된 것을 확인할 수 있다.


- 또한 Client의 권한으로 해당 사이트의 여러 기능들을 사용할 수도 있다.


[참고]

- 공격은 세션이 연결된 상태에서 진행한다.

- 쿠키 값은 로그인 전이나 후나 같을 수 도 있다. 

- 네이버는 쿠키 값 만으로 인증하지 않기 때문에 로그인은 가능해도 다른 페이지는 사용 할 수 없다.



쿠키값 취약점 세션