Security/웹 모의해킹 실습

Weak Session IDs (Low)

NOG 2023. 7. 17. 11:24

세션과 쿠키

 

- 쿠키(Cookie) : 웹사이트의 서버가 사용자의 컴퓨터(클라이언트)에 저장하는 기록파일

이후 모든 요청마다 서버로 쿠키를 다시 전송한다. (로그인 정보, 비회원의 장바구니 정보)

이름,값,만료일,경로 정보로 구성되어 있다.

클라이언트 자원을 사용하기 때문에 서버 자원 낭비를 방지하고 웹사이트의 속도를 높일 수 있다.

 

 

- 세션(Session) : 웹서버에 접속해 있는 상태, 서버 내부에 저장되며

세션의 키값만을 클라이언트 측에 남겨둔다.

브라우저를 닫거나 서버에서 삭제 시 삭제가 되므로 쿠키보다 보안성이 좋다.

 

 

동작원리 :

서버측은 클라이언트가 요청 시 쿠키 값을 확인 (없으면 서버에서 생성하여 돌려준다.)

클라이언트에게 세션 id를 쿠키로 저장하도록 전달한다.

쿠키 이름 : JSESSIONID ,  이후 클라이언트가 서버에 요청 시 쿠키(JSESSIONID) 확인하고 매핑되는 정보로 인식

 

사용이유 :

HTTP 프로콜은 비연결지향적(Connectionless)이고 상태정보를 유지하지 않는다.(Stateless)

즉 서버에 요청을 보냈을 때 응답 보낸 후 연결을 끊으며 이전 통신의 데이터를 유지하지 않는다.

따라서 작업할 때마다 로그인(인증)해야 하는 번거로움을 줄이고 정보를 유지하기 위해 사용한다.

 

Weak Session IDs

 

사용자가 웹서버에 접근하면 식별을 위해 세션 id를 사용자에게 할당한다.

해당 세션 ID는 쿠키에 저장되고 유지하면서 서버와 사용자 간 식별을 한다.

하지만 세션id가 단순하여 추측이 가능할 경우 다른 악의적인 사용자에게 접근을 허용시켜

로그인 없이 서비스 페이지나 관리자 페이지에 접근할 수 있다.

 

 

Weak Session IDs (Low)

 

 

버튼이 클릭할 때마다 dvwaSession이라는 새로운 쿠키가 설정되는 페이지라고 설명이 나와있다.

 

 

 

세션 또는 쿠키의 값을 확인하기 위해서는 개발자 도구(F12) - storage - cookies 을 실행하였다.
Generate
버튼을 클릭 시 즉 새로운 쿠키를 생성할 때 마다 dvwaSession 값이 1씩 증가하는 것을 확인했다.

Session 값이 정수형으로 단순하게 이루어져 있을 경우 Session Hijacking 공격에 취약할 수 있다.

 

 

+추가

 

 

 

웹 프록시 도구인 버프슈트를 이용해서도 확인할 수 있다.

이것 역시 Generate 클릭 시  값이 1씩 오르는 것을 확인할 수 있다.