주통기반-SSI인젝션

황인환·2024년 9월 1일

정의

공격자가 SSI 명령어를 삽입하여 서버에서 원하지 않는 명령을 실행하거나, 서버의 내부 파일을 노출시킬 수 있는 경우를 말합니다.

원인

  • 불완전한 입력 검증: 사용자 입력이 서버 측에서 처리되기 전에 적절히 검증되지 않으면, 공격자가 악의적인 SSI 명령어를 입력할 수 있습니다.
  • 불완전한 보안 설정: 서버나 웹 애플리케이션이 SSI 기능을 제한하지 않거나, 민감한 파일에 대한 접근을 제어하지 않으면, 공격자는 SSI 명령어를 통해 서버의 중요한 파일에 접근할 수 있습니다.

위협

  • 웹서버 상의 파일을 inculde 시켜 명령문이 실행되게 함으로써 불법적으로 데이터에 접근할 수 있습니다.

  • 공통 SSI 구현은 외부의 파일을 Inculde 할 수 있는 명령어를 사용 할 수 있음으로 악의적인 파일을 inculde 할 수 있습니다.

TEST방법

  • 파일포함 테스트
    <!--#include file="--.(서버측 언어)" --> 를 삽입하여 반환되는 값에 삽입한 페이지가 반환되는지 확인합니다.

  • 명령어 실행 테스트
    <!--#exec cmd="ls" --> 명령어를 통해 서버의 명령어를 실행하여 반환되는 페이지에 디렉토리 리스트가 있는지 확인합니다.
    <!--#echo var="DATE_LOCAL" -->를 삽입하여 반환되는 값에 서버의 현재 날짜와 시간가 포함되어 있는지 확인합니다.

  • header 테스트
    헤더에 ex)Referer, user-Agent 파일포함테스트와 명령어 실행 테스트를 하여 반환되는 값을 확인합니다.

대상 & 판단기준 & 조치방법

설명
대상웹 어플리케이션 소스코드, 웹 서버, 웹 방화벽
판단기준양호: 사용자 입력 값에 대한 검증이 이루어지는 경우
취약: 사용자 입력 값에 대한 검증이 이루어지지 않는 경우
조치방법사용자 입력 값에 대한 검증 로직 추가 구현

SSI

정의

웹 서버에서 HTML 파일을 동적으로 생성하는 데 사용되는 기술입니다. SSI는 서버 측에서 처리되며, HTML 문서 내에 삽입된 특별한 명령어를 통해 동적 콘텐츠를 포함할 수 있습니다. 이를 통해 서버는 요청된 페이지를 클라이언트에게 전달하기 전에 포함된 파일을 동적으로 삽입하거나 명령을 실행할 수 있습니다.

SSI vs WAS

특성SSIWAS
기능서버 측에서 정적 웹 페이지에 동적 콘텐츠를 삽입동적 웹 어플리케이션을 실행하고 로직을 처리
주요 용도HTML 파일 내에 간단한 서버 측 명령어를 포함웹 어플리케이션의 복잡한 로직과 데이터 처리
성능간단한 동적 콘텐츠에 사용대규모 웹 어플리케이션에 지원하며 성능과 확장성 고려
DB기능DB사용 불가능DB연동가능
설정간단하게 웹 서버의 설정을 통해 활성화할 수 있으며, 스크립트나 추가 프로그래밍 없이 기본적인 동적 기능을 제공합니다.서버 사이드 스크립트와 데이터베이스 설정이 필요하며, 복잡한 프로그래밍이 필요할 수 있습니다
현재 사용여부대부분의 현대 웹 어플리케이션에서 사용하지 않음현대 웹 어플리케이션에서 자주 사용

0개의 댓글