불충분한 세션 관리 취약점
① 개념
- 웹 애플리케이션에서 사용자가 로그인할 때 매번 동일한 세션 ID를 발급하거나 세션 타임아웃을 너무 길게 설정하였을 경우 공격자가 사용자의 세션을 재사용하여 해당 사용자의 권한을 탈취할 수 있는 취약점
② 공격과정
- admin 계정으로 로그인 및 세션 쿠키 정보 획득
- 웹 프록시를 통해 admin 로그인 후, 세션ID(PHPSESSID) 정보 획득
- (ex.Cookie: PHPSESSID=..특정 패턴이 있는 세션 ID..)
- 다른 브라우저에서 탈취한 세션 ID 정보로 로그인
- HTTP 세션 하이재킹 : 탈취한 세션 ID를 이용하여 다른 브라우저에서 admin 계정 세션을 가로채기를 성공하는 것.
③ 취약점 판단 기준
- 세션 ID를 분석 및 변조하여 로그인 시도 시 로그인에 성공할 경우 해당 취약점이 존재하는 것으로 판단
④ 대응책
- 세션ID는 로그인 시마다 추측할 수 없는 랜덤한 값으로 새롭게 발급한다.
- 세션 타임아웃 설정을 통해 일정 시간(일반적으로 10-30분 사이) 요청이 없으면 자동 로그아웃 되도록 구현한다.
- (PHP 설정) php.ini를 통한 적절한 세션 타임아웃 설정
#php.ini 설정파일
...
session.gc_maxlifetime = 600 # 10분
- (PHP 설정) php.ini를 통한 적절한 세션 타임아웃 설정
- 부적절한 세션 쿠키 전송 방식을 필터링한다.
- httponly 속성과 secure 속성을 통한 보안
#php.ini 설정파일
...
session.cookie_httponly = 1 # or True
seesion.cookie_secure = 1 # or True
- httponly 속성과 secure 속성을 통한 보안
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 애플리케이션 취약점] 개발 보안 가이드라인 (0) | 2024.11.17 |
---|---|
[웹 애플리케이션 취약점] 기타 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 파일 삽입 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 경로 추적 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 파일 다운로드 취약점 (1) | 2024.11.16 |