Weak Session IDs ?
일반적으로 사용자가 웹 서버에 접속하면 사용자를 식별하기 위해 Session ID가 사용자에게 할당되어 사용자 쿠키에 저장되고 이를 이용해 웹 서버에서 사용자를 식별한다.
이러한 Session ID가 단순하거나 쉽게 추측이 가능하여 공격자가 Session ID를 유추하여 다른 사용자의 권한으로 접근할 수 있는 취약점 또는 Session Time Out (세션 만료 시간)을 너무 길게 설정하여 공격자가 다른 사용자의 Session ID를 재사용하여 해당 사용자의 권한으로 서버에 접근할 수 있는 취약점을 의미한다.
DVWA 환경에서 Weak Session IDs 실습
우선 본 실습에 앞서 실습 환경의 경우 리눅스 환경에서 DVWA 환경을 구축한 후 가장 취약한 환경인 Low 레벨 환경에서 실습을 진행하였습니다.
Weak Session IDs 취약점 실습을 위해 해당 탭으로 이동한 모습
텍스트를 확인하면 Generate 버튼을 클릭하면 새로운 Session ID가 발급 된다는 것을 알 수 있다.
Generate 버튼을 한 번 클릭하여 첫 번째 Session ID를 발급했을 때 웹 서버의 응답을 Burp Suite 툴을 이용하여 본 모습이다.
체크된 곳을 확인하면 '1' 이라는 값이 Session ID로 발급된 것을 확인할 수 있다.
Generate 버튼을 한번 더 클릭하여 새로운 Session ID를 발급한 후 서버의 응답을 확인한 모습
이전 Session ID 값에서 1이 증가된 값이 Session ID로 발급된 것을 확인할 수 있다.
이후에도 Generate 버튼을 클릭하여 새로운 Session ID를 몇 차례 발급한 결과의 모습
새로운 Session ID를 발급할 때마다 이전에 발급된 Session ID 값에서 1씩 증가된 값이 Session ID로 발급되는 것을 확인할 수 있다.
현재는 이 Session ID를 이용하여 다른 사용자의 권한으로 접속하는 것을 확인할 순 없지만 만약 사용자 식별 세션이 위와 같이 일정한 패턴을 가지고 발급되어 사용된다면 공격자는 쉽게 다른 사용자의 권한으로 서버에 접근할 수 있을 것으로 보여졌다.
Weak Session IDs 대응 방안
- 위 사진과 같이 mt_rand() 함수 등 값을 랜덤으로 생성해주는 함수를 사용하여 Session ID를 매번 랜덤한 값으로 발급 되도록 구현하고, SHA1 등 안전한 암호화 알고리즘을 이용하여 암호화하여 Session ID 추측이 불가능 하도록 구현해야 한다.
- 위 사진과 같이 Session Time out을 적절하게 설정하여 공격자가 다른 사용자의 세션을 이용한 권한 탈취를 어렵게 해야 한다.
- 마지막으로는 개발을 할 때 시큐어 코딩을 적용하여 중복 로그인이 불가능하도록 구현해야 한다.
'CERT > 웹 모의해킹 실습' 카테고리의 다른 글
[웹 해킹] Reflected XSS / DVWA 환경 실습 / 대응 방안 (0) | 2023.07.01 |
---|---|
[웹 해킹] DOM Based XSS / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.21 |
[웹 해킹] Blind SQL Injection / DVWA SQL Injection(Blind) 실습 / 대응 방안 / SQLMAP 사용법 (0) | 2023.06.16 |
[웹 해킹] SQL Injection / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.14 |
[웹 해킹] Insecure CAPTCHA / DVWA 환경 실습 / 대응 방안 ( 캡챠 우회 공격 ) (0) | 2023.06.03 |