작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server 
    • Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)
    • DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)
  • Client
    • Kali Linux : Web 취약점 점검용 (VMnet 1)
  • GNS 구성

  • 해당 점검은 비밀번호 수정 페이지에 한해서 진행됨
SF (상) 19. 세션 고정
취약점 개요
점검 내용 사용자 로그인 시 항상 일정하게 고정된 세션 ID 값을 발행하는지 여부 확인
점검 목적 로그인할 때마다 예측 불가능한 새로운 세션 ID를 발행하여 세션 ID의 고정 사용을 방지하기 위함
 보안 위협 사용자 로그인 시 항상 일정하게 고정된 세션 ID가 발행되는 경우 세션 ID를 도용한
비인가자의 접근 및 권한 우회가 가능
판단 기준

양호 : 로그인할 때마다 예측 불가능한 새로운 세션 ID가 발행되고, 기존 세션 ID는 파기될 경우
취약 : 로그인 세션 ID가 고정 사용되거나 새로운 세션 ID가 발행되지만 예측 가능한 패턴으로 발행될 경우
참고 OWASP TOP 10 항목 중 
A07 : Identification and Authentication Failures
에 해당한다고 판단

 

 

점검 방법

  • Step 1) 로그인 시(1) 세션 ID가 발행되는지 확인하고 로그아웃 후 다시 로그인(2)할 때 예측 불가능한 새로운 세션 ID가 발급되는지 확인

 

아래 링크의 ②, ③ 참고

 

2025.05.13 - [주요정보통신기반시설가이드/Web 취약점 점검] - [SE (상)] 16. 세션 예측

 

[SE (상)] 16. 세션 예측

작업 환경VMware Workstation Pro (17.6.2 ver)Server Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)ClientKali Linux : Web 취약점 점검용 (VMnet 1)GNS 구성해당 실습은 비밀번호 수정

jijibae.tistory.com

 

 


보안 설정 방법

  • 로그인할 때마다 예측 불가능한 새로운 세션 ID를 발급받도록 해야 하고 기존 세션 ID는 파기해야 함

참고

🔐 OWASP TOP 10(2021)과의 연관

OWASP TOP 10 공식 문서중 일부
"Notable CWEs included are CWE-297: Improper Validation of Certificate with Host Mismatch, CWE-287: Improper Authentication, and CWE-384: Session Fixation."

 

1. A07:  Identification and Authentication Failures

  • 사용자가 로그인한 후에도 세션 ID가 변경되지 않으면, 공격자가 미리 설정한 세션 ID를 통해 사용자의 세션을 탈취할 수 있음

작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server 
    • Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)
    • DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)
  • Client
    • Kali Linux : Web 취약점 점검용 (VMnet 1)
  • GNS 구성

  • 해당 점검은 비밀번호 수정 페이지에 한해서 진행됨
SC (상) 18. 불충분한 세션 만료
취약점 개요
점검 내용 세션의 만료 기간 설정 여부 점검
점검 목적 세션 타임아웃 기능을 구현하여 공격자가 만료되지 않은 세션 활용을 방지하기 위함
 보안 위협 세션의 만료 기간을 정하지 않거나, 만료기한을 너무 길게 설정된 경우 악의적인 사용자가
만료되지 않은 세션을 활용하여 불법적인 접근이 가능할 수 있음
판단 기준

양호 : 세션 종료 시간이 설정되어 있는 경우
취약 : 세션 종료 시간이 설정되어 있지 않아 세션 재사용이 가능한 경우
참고 OWASP TOP 10 항목 중 
A07 : Identification and Authentication Failures
에 해당한다고 판단

 

 

점검 방법

  • Step 1) 인증 후 정상적으로 세션이 발행된 페이지의 리퀘스트를 취득하여 일정 시간 (사이트에 따라 다름)이 지난 후에 재전송 시 정상 처리가 되는지 확인

 

현재 세션 발급에 대한 설정만 존재, 세션 종료 시간 설정참고 확인


보안 설정 방법

  • 세션 타임아웃 구현 시 타임아웃 시간은 10분으로 설정할 것을 권고함

참고

 

세션 종료 시간 설정

1. 일정 시간 "미사용"시 자동 만료

→ 권고 사항인 10분으로 설정

  • 설정 방법 
    • 해당 페이지만 설정 : session.gc_maxlifetime 값을 600초로 설정
    • 전역 설정 : php.ini 에서 session.gc_maxlifetime 값을 600초로 설정
/var/www/html/update.php <- 비밀번호 수정 페이지만 설정하고싶은 경우

<?php
ini_set('session.gc_maxlifetime', 600); // 서버 세션 수거 주기도 10분으로

session_start();

// 타임아웃 기준 시간
$timeout = 600;

// 마지막 활동 시간 확인
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity']) > $timeout) {
    session_unset();
    session_destroy();
    header("Location: /proc/logout.php?reason=timeout");
    exit;
}

// 활동 시점 갱신
$_SESSION['last_activity'] = time();

...중략

 

/etc/php.ini 에서 전역설정 추가
session.gc_maxlifetime = 600

 

 

 

🔐 OWASP TOP 10(2021)과의 연관

OWASP 공식문서 중 일부
“Sessions should be invalidated on the server after logout, idle timeout, and absolute timeout.”

 

1. A07:  Identification and Authentication Failures

  • 외부 입력이 코드나 명령으로 해석되어 실행
  • PHP 자체는 이런 구조가 아니지만, PHP로 연동된 네이티브 애플리케이션이 존재할 경우 발생 가능

작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server 
    • Web 서버 : Rocky_Linux(8.10 ver, VMnet 2, PHP로 구성)
    • DNS 서버 : Rocky_Linux(8.10 ver, VMnet 1)
  • Client
    • Kali Linux : Web 취약점 점검용 (VMnet 1)
  • GNS 구성

  • 해당 점검은 비밀번호 수정 페이지에 한해서 진행됨
IN (상) 17. 불충분한 인가
취약점 개요
점검 내용 민감한 데이터 또는 기능에 접근 및 수정 시 통제 여부 점검
점검 목적 접근 권한에 대한 검증 로직을 구현하여 비인가자의 악의적인 접근을 차단하기 위함
 보안 위협 접근제어가 필요한 중요 페이지의 통제수단이 미흡한 경우, 비인가자가 URL 파라미터 값 변경 등의 방법으로
중요 페이지에 접근하여 민감한 정보 열람 및 변조 가능함
판단 기준

양호 : 접근제어가 필요한 중요 페이지의 통제수단이 적절하여 비인가자의 접근이 불가능한 경우
취약 : 접근제어가 필요한 중요 페이지의 통제수단이 미흡하여 비인가자의 접근이 가능한 경우
참고 OWASP TOP 10 항목 중 
A01 : Broken Access Control
에 해당한다고 판단

 

 

점검 방법

  • Step 1) 비밀 게시글(또는 개인정보 변경, 패스워드 변경 등) 페이지에서 다른 사용자와의 구분을 ID, 일련번호 등의 단순한 값을 사용하는지 조사

URL 상 표시 X
세션 ID 값으로 사용자 구별

  • Step 2) 게시글을 구분하는 파라미터 값을 변경하는 것만으로 다른 사용자의 비밀 게시글 (또는 개인정보 변경, 패스워드 변경 등)에 접근 가능한지 확인

 

BurpSuite 를 사용하여도 해당 유저의 값만 바꿀 수 있음

다른 사용자의 패스워드에는 접근 불가능


보안 설정 방법

  • 접근제어가 필요한 중요 페이지는 세션을 통한 인증 등 통제수단을 구현하여 인가된 사용자 여부를 검증 후 해당 페이지에 접근할 수 있도록 함
  • 페이지별 권한 매트릭스를 작성하여 접근제어가 필요한 모든 페이지에서 권한 체크가 이뤄지도록 구현하여야 함

참고

🔐 OWASP TOP 10(2021)과의 연관

OSASP TOP 10 공식 문서중 일부
"Access control enforces policy such that users cannot act outside of their intended permissions. Failures typically lead to unauthorized information disclosure, modification or destruction of all data or performing a business function outside of the user's limits."

1. A01:  Broken Access Control

  • URL 또는 요청 파라미터를 조작하여 다른 사용자의 데이터에 접근하는 경우
  • 로그인하지 않은 상태에서 인증이 필요한 페이지에 접근하는 경우
  • 일반 사용자가 관리자 권한이 필요한 기능을 수행할 수 있는 경우