본문 바로가기

WEB/Web Attack

세션 토큰 생성 과정에서의 취약점

세션 토큰 생성 과정

세션 토큰은 사용자 명이나 이메일 주소를 변경해서 만들어지기도 하고 그 외의 다른 정보를 이용해서 만들어지기도 한다.

이와 같은 세션 토큰은 암호화 같은 작업을 통해 복잡하게 변형되어 사용된다.]


- 사용자 계정

- 계정들을 구분하기 위해 애플리케이션이 주로 쓰는 숫자로 된 식별법

- 사용자의 실명

- 사용자의 이메일 주소

- 사용자의 그룹이나 애플리케이션 안에서의 역할

- 날짜와 시간 스탬프

- 증가하거나 예측 가능한 숫자

- 클라이언트의 IP주소


위와 같은 항목을  세션 토큰을 생성해 내며 일반적으로 사용하는 인코딩 방법은 XOR, Base64, 아스키 문자열을 사용한 16진법 등이 있다.

구조화된 토큰(여러개의 항목으로 구성된 토큰)에서 각각의 항목은 모두 다른 방식으로 암호화 돼있기 때문에 HTTP로 전송될 때 바이너리 데이터를 안전하게 전달 할 수 있다.하지만 구조화된 토큰의 모든 항목이나 모든 데이터를 전부 이용하지는 않는다. 토큰의 구성정보를 작은 부분으로 나눠서 분석하면 토큰이 가지고 있는 복잡한 부분을 좀 더 쉽게 이해할 수 있을 것이다.


해킹 단계


- 애플리케이션 토큰 하나를 얻어서 바이트나 비트를 하나씩 바꿔가며 애플리케이션에게 수정된 토큰을 보내 수정된 토큰이 유효한지를 살펴본다. 어떤 토큰이 더 이상 수정할 필요없이 정상적으로 인식이 된다면 이 토큰들은 분석대상에서 제외시킨다. 이렇게 가능성 있는 토큰들을 점점 줄여나간다.



-  다양한 사용자 아이디를 이용해 로그인 시도하고 로그인 결과 서버로부터 얻은 토큰을 기록한다. 사용자 등록이 가능하고 사용자명을 선택할 수 있다면 비슷한 이름으로 만들어진 계정을 통해 로그인 해본다. 


-  인코딩이나 해석하기 힘든 형태로 돼있는 토큰이 있으면 분석을 시도한다.

삿용자의 이름이 같은 문자의 연속으로 이뤄져 있다면 XOR 변형이 사용됐을 가능성이 높으며 XOR 변형을 이용해 일치하는 문자를 토큰해서 찾아봐야 한다. 그리고 토큰에서 아스키 코드 문자열이 16진수로만 이뤄져 있다면 16진법 인코딩으로 변형됐을 가능성이 높다. 여기서 =표시나 /로 끝나거나 Base64의 다른 문자열인 a-z, A-Z, 0-9, +, /를 포함했는지도 살펴본다.


..작성중

'WEB > Web Attack' 카테고리의 다른 글

클라이언트 사용자 공격(1)  (0) 2016.01.23
웹 해킹과 보안 완벽 가이드(인증처리)  (0) 2016.01.07
Cookie & Session  (0) 2015.10.08
XSS &CSRF  (0) 2014.08.13
웹셀(Web shell)에 대하여..  (0) 2014.07.29