Weak Session ids 모의해킹
2024. 7. 28. 13:25ㆍCERT
목차
- Weak Session IDs 이론
- Weak Session IDs 실습
- Weak Session IDs 대응방안
Weak Session IDs 이론
사전정보
- Session ID: 일반적으로 서버가 클라이언트를 식별하기위해 사용된다. 클라이언트가 웹 서버에 접속하면 서버가 클라이언트에게 session id 값을 전달하며, 클라이언트는 본인의 쿠키에 해당 session id 값을 포함시킨다음, 웹 서버에게 http 요청을 보내면 서버는 session id 값을 이용하여 클라이언트를 구분한 뒤 인증되면, 서버 자원을 제공한다.
취약점 정의
- 사용자의 세션 관리가 미흡하여 사용자의 Session ID를 탈취당할 수 있는 취약점을 말한다. 예를 들어, Session ID가 암호화 조치가 이루어져있지 않아서 sniffing시 그대로 노출되거나 단순하여 Session ID 값이 쉽게 유추가 가능하거나 세션 만료 시간을 너무 길게 설정하여 공격 가능한 시간이 확보가능한 상황을 일컫는다.
- 우선 본 실습에 앞서 실습 환경의 경우 리눅스 환경에서 DVWA 환경을 구축한 후 가장 취약한 환경인 Low 레벨 환경에서 실습을 진행하였다.
Weak Session IDs 실습
시나리오
- 서버와 사용자가 통신시 사용하는 세션 id를 스니핑 혹은 값 유추를 통해 알아내도록한다
- Weak Session IDs 취약점 실습을 위해 해당 탭으로 이동하여 텍스트를 확인해보니 Generate 버튼을 클릭하면 새로운 Session ID가 발급된다고 나온다.
- 그래서 버튼을 눌러서 BurpSuite에서 확인을 하였더니 dvwasession 값을 1로 설정해준 서버의 응답을 볼 수 있었다.
- 세션 id가 burpsuite를 통해 스니핑되었기에 해당 세션 값을 이용하는 사용자의 권한은 탈취당했을 것이다.
- 실제로 저 세션을 테스트 해볼 수 없기에 특정 상황을 가정하도록하였다.
- 이후 더 클릭한 뒤, burpsuite를 통해 확인해보았더니 dvwasession 값이 순차적으로 1씩 증가하는 것을 볼 수 있다.
- 이를 통해 dvwa 서버는 세션 값을 1씩 증가시켜 대상에게 발급해준다는 사실을 알게되었고, 순열 형태로 띄는 해당 패턴을 이용하여 추후 서버에게 세션 아이디를 요청하는 사용자들의 세션 값들도 유추가 가능해졌다.
Weak Session IDs 대응방안
- 랜덤 함수 값과 시간 함수 값(솔트 재료)을 SHA1 등의 해시함수에 기입하여 나온 값으로 세션 값을 설정하면, 쉽게 유추가 불가능하다
- Session Time out을 적절하게 설정하여 공격자가 다른 사용자의 세션을 유추할 수 없게끔 세션 유지 시간을 최소한으로 잡아야한다.
- 세션 값을 HTTPS 프로토콜을 사용하여 외부 노출로부터 보호
- 세션 쿠기에 Secure 속성을 설정하여 HTTPS로만 전송하도록 구현
- 세션 생성 시 사용자 IP 주소와 User-Agent 값을 기록하고, 세션을 유지하는 동안 변경이 감지되면 세션을 종료하거나 추가 인증을 요구하는 방법도 고려(SMS, 이메일, MFA 등)
'CERT' 카테고리의 다른 글
XSS 모의해킹 (0) | 2024.07.28 |
---|---|
Blind SQL Injection 모의해킹 (0) | 2024.07.28 |
Insecure Captcha 모의해킹 (0) | 2024.07.27 |
File Inclusion 모의해킹 (0) | 2024.07.27 |
BruteForce 모의해킹 (0) | 2024.07.27 |