일반사항
- 점검내용 : IIS CGI 실행 제한 설정 여부 점검
- 점검목적 : CGI 스크립트를 정해진 디렉토리에서만 실행되도록 하여 악의적인 파일의 업로드 및 실행을 방지하기 위함
- 보안위협 : 게시판이나 자료실과 같이 업로드 되는 파일이 저장되는 디렉토리에 CGI 스크립트가 실행 가능한 경우 악의적인 파일을 업로드하고 이를 실행하여 시스템의 중요 정보가 노출될 수 있으며 침해사고의 경로로 이용될 수 있음.
- 참고
- CGI(Common Gateway Interface): 사용자가 서버로 보낸 데이터를 서버에서 작동중인데이터처리프로그램에 전달하고, 여기에서 처리된 데이터를 다시 서버로 되돌려 보내는 등의 일을 하는 프로그램
- 일반적으로 기본 CGI 디렉토리(C:\inetpub\scripts)는 사용하지 않음
- 점검대상 및 판단기준
- 대상 : Window NT, 2000, 2003, 2008, 2012, 2016, 2019
- 판단기준
- 양호 : 해당 디렉토리 Everyone에 모든 권한, 수정 권한, 쓰기 권한이 부여되지 않은 경우
- 취약 : 해당 디렉토리 Everyone에 모든 권한, 수정 권한, 쓰기 권한이 부여되어 있는 경우
- 점검 및 조치
- Windows 2000(IIS 5.0), 2003(IIS 6.0), 2008(IIS 7.0), 2012(IIS 8.0), 2016(IIS 10.0), 2019(IIS 10.0)
- 탐색기> 해당 디렉토리> 속성> 보안 (기본 CGI 디렉토리 위치 C:\inetpub\scripts)
- Everyone 의 모든 권한, 수정 권한, 쓰기 권한 제거
- Windows 2000(IIS 5.0), 2003(IIS 6.0), 2008(IIS 7.0), 2012(IIS 8.0), 2016(IIS 10.0), 2019(IIS 10.0)
스크립트
@echo off
chcp 437 >nul 2>&1
:W_12
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set OUTPUT_DIRECTORY=C:\INSPECT\%YEAR%_%MONTH%_%DAY%_INSPECTION\
set OUTPUT_FILE=%OUTPUT_DIRECTORY%INSPECTION_OUTPUT.txt
set DETAIL_FILE=%OUTPUT_DIRECTORY%W_12.txt
:: FILE EXISTENCE CHECK
if NOT EXIST %OUTPUT_DIRECTORY% (mkdir %OUTPUT_DIRECTORY%)
echo. >> %DETAIL_FILE%
echo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > %DETAIL_FILE%
echo :: >> %DETAIL_FILE%
echo :: [W-12] IIS CGI Runnable Check >> %DETAIL_FILE%
echo :: >> %DETAIL_FILE%
echo :: Check IIS's Scripts folders to restrict CGI from EVERYONE >> %DETAIL_FILE%
echo :: >> %DETAIL_FILE%
echo :: PASS : Script folders not EXIST or EVERYONE >> %DETAIL_FILE%
echo :: AUTHORITY is not EXIST >> %DETAIL_FILE%
echo :: >> %DETAIL_FILE%
echo :: MADE By REDUCTO https://tutoreducto.tistory.com/ >> %DETAIL_FILE%
echo :: >> %DETAIL_FILE%
echo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >> %DETAIL_FILE%
echo. >> %DETAIL_FILE%
cd C:\inetpub\scripts >nul 2>&1
set result=W-12 = PASS
if %errorlevel% EQU 1 (goto W_12_FINISH)
cd C:\inetpub >nul 2>&1
icacls scripts | find /i "EVERYONE" >nul 2>&1
if %errorlevel% EQU 0 (
set result=W-12 = FAIL
echo IIS Scripts is allow Everyone >> %DETAIL_FILE%
) else (
echo IIS Scripts is restrict Everyone >> %DETAIL_FILE%
)
:W_12_FINISH
echo %result%
echo %result% >> %OUTPUT_FILE%
:FINISH
pause >nul 2>&1
파일의 검사결과는 C:\INSPECT아래 오늘날짜로 이루어진 폴더에 들어가 있다.
- INPSECT_OUTPUT.txt : W-12의 검사결과가 기록되어 있다. 다른 점검항목의 결과또한 INSPECT_OUTPUT에 기록되어 있다.
- W_12.txt : W-12의 검사결과가 기록되어 있다.
첨언
뭔말이 필요할까 Remote Shell 기초기법중 기초기법이다. CGI를 웹서버에서 open한다는것은 어마어마한 위협이다.
'정보보안-이론 > KISA주요정보통신기반시설 취약점가이드' 카테고리의 다른 글
[KISA 주요정보통신기반시설] W-14 IIS 불필요한 파일 제거 (0) | 2022.06.01 |
---|---|
[KISA 주요정보통신기반시설] W-13 IIS 상위 디렉토리 접근 금지 (0) | 2022.06.01 |
[KISA 주요정보통신기반시설] W-11 IIS 디렉토리 검색 비활성화 (0) | 2022.03.01 |
[KISA 주요정보통신기반시설] W-10 IIS 서비스 구동 점검 (0) | 2022.02.27 |
[KISA 주요정보통신기반시설] W-09 불필요한 서비스 제거 (0) | 2022.02.27 |