공격자가 SSI 명령어를 삽입하여 서버에서 원하지 않는 명령을 실행하거나, 서버의 내부 파일을 노출시킬 수 있는 경우를 말합니다.
웹서버 상의 파일을 inculde 시켜 명령문이 실행되게 함으로써 불법적으로 데이터에 접근할 수 있습니다.
공통 SSI 구현은 외부의 파일을 Inculde 할 수 있는 명령어를 사용 할 수 있음으로 악의적인 파일을 inculde 할 수 있습니다.
파일포함 테스트
<!--#include file="--.(서버측 언어)" --> 를 삽입하여 반환되는 값에 삽입한 페이지가 반환되는지 확인합니다.
명령어 실행 테스트
<!--#exec cmd="ls" --> 명령어를 통해 서버의 명령어를 실행하여 반환되는 페이지에 디렉토리 리스트가 있는지 확인합니다.
<!--#echo var="DATE_LOCAL" -->를 삽입하여 반환되는 값에 서버의 현재 날짜와 시간가 포함되어 있는지 확인합니다.
header 테스트
헤더에 ex)Referer, user-Agent 파일포함테스트와 명령어 실행 테스트를 하여 반환되는 값을 확인합니다.
| 설명 | |
|---|---|
| 대상 | 웹 어플리케이션 소스코드, 웹 서버, 웹 방화벽 |
| 판단기준 | 양호: 사용자 입력 값에 대한 검증이 이루어지는 경우 |
| 취약: 사용자 입력 값에 대한 검증이 이루어지지 않는 경우 | |
| 조치방법 | 사용자 입력 값에 대한 검증 로직 추가 구현 |
웹 서버에서 HTML 파일을 동적으로 생성하는 데 사용되는 기술입니다. SSI는 서버 측에서 처리되며, HTML 문서 내에 삽입된 특별한 명령어를 통해 동적 콘텐츠를 포함할 수 있습니다. 이를 통해 서버는 요청된 페이지를 클라이언트에게 전달하기 전에 포함된 파일을 동적으로 삽입하거나 명령을 실행할 수 있습니다.
| 특성 | SSI | WAS |
|---|---|---|
| 기능 | 서버 측에서 정적 웹 페이지에 동적 콘텐츠를 삽입 | 동적 웹 어플리케이션을 실행하고 로직을 처리 |
| 주요 용도 | HTML 파일 내에 간단한 서버 측 명령어를 포함 | 웹 어플리케이션의 복잡한 로직과 데이터 처리 |
| 성능 | 간단한 동적 콘텐츠에 사용 | 대규모 웹 어플리케이션에 지원하며 성능과 확장성 고려 |
| DB기능 | DB사용 불가능 | DB연동가능 |
| 설정 | 간단하게 웹 서버의 설정을 통해 활성화할 수 있으며, 스크립트나 추가 프로그래밍 없이 기본적인 동적 기능을 제공합니다. | 서버 사이드 스크립트와 데이터베이스 설정이 필요하며, 복잡한 프로그래밍이 필요할 수 있습니다 |
| 현재 사용여부 | 대부분의 현대 웹 어플리케이션에서 사용하지 않음 | 현대 웹 어플리케이션에서 자주 사용 |