[웹 취약점 진단/모의해킹/해킹] SSI 인젝션

목차

     

     

    SS - SSI 인젝션

     

    ■ 점검내용

     

    웹페이지 내 SSI 인젝션 공격 가능성 점검

     

    ■ 점검목적

     

    적절한 입력 값 검증 절차를 마련하여 악의적인 파일을 include 시키지 못하도록 하여 불법적인 데이터 접근을 차단하기 위함

     

    ■ 보안위협

     

    해당 취약점이 존재할 경우 웹 서버 상에 있는 파일을 include 시켜 명령문이 실행되게 함으로 불법적으로 데이터에 접근할 수 있음


    공통 SSI 구현은 외부의 파일을 Include 할 수 있는 명령어를 제공하며, 웹 서버의 CGI 환경 변수를 설정하고 출력할 수 있고, 외부의 CGI 스크립트나 시스템 명령어들을 실행할 수 있으므로 사용자 입력 값에 대한 검증 로직을 추가로 구현하여야 함

     

    ■ 참고

     

    ※ SSI(Server-Side Includes): CGI 프로그램을 작성하거나 혹은 서버사이드 스크립트를 사용하는 언어로, 웹 서버가 사용자에게 페이지를 제공하기 전에 구문을 해석하도록 지시하는 역할을 함
    ※ SSI(Server-Side Includes) 인젝션: HTML 문서 내 입력받은 변수 값을 서버 측에서 처리할 때 부적절한 명령문이 포함 및 실행되어 서버의 데이터가 유출되는 취약점
    ※ 소스코드 및 취약점 점검 필요

     

     

    점검대상 및 판단기준

     

    ■ 대상 : 웹 애플리케이션 소스코드, 웹 서버, 웹 방화벽

     

    양호

    사용자 입력 값에 대한 검증이 이루어지는 경우

     

    취약

    사용자 입력 값에 대한 검증이 이루어지지 않는 경우

     

    ■ 조치방법

     

    사용자 입력 값에 대한 검증 로직 추가 구현

     

     

    점검 및 조치 방법

     

    ■ 점검방법

     

    Step 1) 사용자가 입력 가능한 파라미터 값에 <!--#echo var=”DOCUMENT_ROOT” -->를 삽입하여 전송 후 반환되는 페이지에 사이트의 홈 디렉터리가 표시되는지 확인

     

    Step 2) 사용자가 입력 가능한 파라미터 값에 <!-- #exec cmd=”ls -al” -->를 삽입하여 전송 후 반환되는 페이지에 디렉터리의 파일 리스트가 표시되는지 확인

     

    Step 3) HTTP 요청(Request) 헤더에 명령어를 삽입하여 실행되는지 확인
    (※ 예로 제시한 것으로, 웹 사이트 환경에 맞춰 점검하여야 함)

    GET / HTTP/1.0
    Referer: <!--#exec cmd="/bin/ps ax"-->
    User-Agent: <!--#include virtual="/proc/version"-->

     

    ■ 보안설정방법


    * 사용자 입력으로 사용 가능한 문자들을 정해놓음
    * 정해진 문자들을 제외한 나머지 모든 문자들을 필터링 함
    * 필터링 해야 하는 대상은 GET 질의 문자열, POST 데이터, 쿠키, URL, 그리고 일반적으로 브라우저와 웹 서버가 주고받는 모든 데이터를 포함하며, 아래는 특수문자에 대한 Entity 형태를 표시한 것임

    변경 전 < > ( ) # &
    변경 후 &lt; &gt; &quot; &#40 &#41 &#35 &amp

    * 웹 서버의 SSI 기능을 사용하지 않거나, 웹 방화벽에 특수문자를 필터링하도록 룰셋 적용

     

     

    조치 시 영향 : 일반적인 경우 영향 없음

     

    댓글

    Designed by JB FACTORY