sessionid 추측 공격
# 세션ID
웹서버는 특정 클라이언트를 구분하기 위한 목적으로 세션 변수를 만들어서 서버측에 저장해 둔다. 그리고 해당 값
을 클라이언트측에 set-cookie 를 통해 내려보내고, 다음 접속 시 cookie 에 포함된 이 sessionID 값을 확인하여 로그
인된 사용자인지 등 서버측에 저장된 정보와 비교를 하게 된다.
# SessionID 예제 1
Cookie: PHPSESSID=lfh3d6kb7c33crgi5o48bub1t4 |
# SessionID 예제 2
PCID=13681101204539449991611 |
이와 같이 일반적으로 숫자와 문자, 특수문자를 혼합하여 만들어 낸다. 예제1의 경우 기본적으로 php 에서 제공
하는 세션값을 보여주고 있으며, 예제2와 같이 서버상에서 직접 만들어서 설정해 줄수도 있다.
# SessionID 분석
그럼 이 세션값이 어떤 식으로 공격당할 수 있는지 알아보도록 하자. WebScarab 툴의 SessionID Analysis Plubin
을 이용해서 분석이 가능하다.
[그림 1] www.****.co.kr 사이트의 시간의 흐름에 따른 세션ID 값 변화
위 그림을 보면 세션ID중 일부는 고정된 값을 가지고 있으며(be8cd4cAAVX) 뒤의 문자열만 일정한 비율로 증가하고
있음을 알 수 있다. 숫자로 변환된 값을 보면 시간에 따라 값이 증가하다가 한번씩 값이 떨어진 뒤 다시 증가하고 있다
는 것을 확실히 확인할 수 있다. 즉, 일정한 공식에 의해 값이 생성된다는 것을 알 수 있다.
[그림 2] 세션값 변화 그래프
위 그림을 보면 이제 확실히 이해가 갈 것이다. 이러한 경우 bruteforcing 을 통해 쉽게 타인의 세션값을 획득 할 수 있
을 것이다.
또 다른 예제를 살펴보자.
[글림 3] 시간별 세션값 변화 그래프 2
위 그래프를 보면, 이 사이트의 경우 2초마다 값이 반복됨을 알 수 있다. 이 경우 2초간 최소값과 최대값 사이의 값을
bruteforcing 할 수 있다면, 혹은 몇몇 고정값만을 반복 요청한다면 타인의 세션값을 획득하게 될수도 있다.
이와 같은 고정된 공식을 통해 세션값을 생성하면 분석이 된 후에는 임의의 세션값을 추측하여 타인의 세션값을 얻게
될수도 있다. 그렇다면 안전한 사이트는 어떨까?
[그럼 4] 랜덤하게 변화되는 세션ID값
위 사이트의 경우 말그대로 랜덤한 값이 할당되고 있어 추측이 매우 어렵다는 것을 알 수 있다. :)
'Web Hacking' 카테고리의 다른 글
BlindSQL Injection 소스 (1) | 2014.02.01 |
---|---|
Burp proxy error: java.security.cert.CertificateException 오류 해결방법 (0) | 2013.07.09 |
Banner Grabbing ( 배너 정보 수집 ) (0) | 2013.05.20 |
Google Dorking 자동화 (0) | 2013.05.19 |
Filtering 발견 및 우회 테크닉 (2) | 2013.03.26 |