정보보안(구버전)/ bWAPP 2019. 1. 26. 14:37

웹 해킹 bWAPP - 09. A1 - Injection - Server-Side Included(SSI) Injection

 

 

본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.

 

 

1. Injection

 

 - OWASP Top10 A1 - 악의적인 명령 삽입
 - 서버로 전송되는 요청 정보에 악의적인 명령을 삽입하여 불필요한 동작을 실시하거나, 서버/시스템/DB 중요 정보를

   획득할 수 있는 취약점이다.
 - Ex) HTML 인젝션, SQL 인젝션, PHP 인젝션, XML 인젝션

 

 

 

2. SSI

 

 - SSI : Server Side Includes
 - HTML 페이지 전체코드를 수정하지 않고 공통 모듈파일로 관리하여 동적인 내용을 추가하는 기능을 수행함
 - SSI를 사용하는 웹페이지는 SSI를 처리하기 위한 .shtml 파일을 생성함
 - 만약, SSI를 사용하지 않는 브라우저라면 SSI를 주석으로 처리함
 - Ex) 방문자 수 누적, 홈페이지 로고 수정

 

 

3. Injection - SSI Injection

 

 - 웹-페이지 접속시 URL에 .shtml 파일이 보이면 SSI 기능을 사용하는 웹-페이지이다.

 - 이 시나리오는 SSI 기능을 사용하는 웹-페이지로 파악한 이후, SSI 지시어를 인젝션하여 시스템 정보 및 명령어를 실행

   하는 내용이다.

 

 

Ex1) Injection - SSI Injection 이해

 

 

보안 레벨 및 시나리오 선택

 

 

 

 First Name, Last Name 입력 실시 -> 'Lookup' 버튼 클릭

 

 

 

SSI 기능 사용 여부 확인 ('ssii.shtml' 파일 확인) -> 뒤로 가기 이동

 

 

 

마우스 우클릭 -> '페이지 소스' 클릭 

 

 

 

ssii.shtml 소스 내용 확인

 

 

 

bee@bee-box:/var/www/bWAPP$ ls -l ssii.php
-rw-rw-r-- 1 root www-data 6546 2014-11-02 23:52 ssii.php
bee@bee-box:/var/www/bWAPP$
bee@bee-box:/var/www/bWAPP$ vi -l ssii.php

 ~ 중간 생략 ~

 

    {

 

        $line = '<p>Hello ' . $firstname . ' ' . $lastname . ',</p><p>Your IP address is:' . '</p><h1><!--#echo var="REMOTE_ADDR" --></h1>';

 

        // Writes a new line to the file

        $fp = fopen("ssii.shtml", "w");

        fputs($fp, $line, 200);

        fclose($fp);

 

        header("Location: ssii.shtml");

 

        exit;

 

    } 

 

:q!

 

 

 

9-0. SSI 인젝션 추가-1.txt

SSI 인젝션 추가 -> 'Lookup' 버튼 클릭

 

 

 

'cat /etc/passwd' 내용 출력 확인

 

 

 

 

Ex2) 'ssii.php' & 'functions_external.php' 파일 내용 확인

 

bee@bee-box:/var/www/bWAPP$ ls -l ssii.php
-rw-rw-r-- 1 root www-data 6546 2014-11-02 23:52 ssii.php


bee@bee-box:/var/www/bWAPP$ vi ssii.php

~ 중간 생략 ~

 

include("functions_external.php");
include("selections.php");

 

$field_empty = 0;

 

function xss($data)

{

 

    switch($_COOKIE["security_level"])

    {

 

        case "0" :

 

            $data = no_check($data);

            break;

 

        case "1" :

 

            $data = xss_check_4($data);

            break;

 

        case "2" :

 

            $data = xss_check_3($data);

            break;

 

        default :

 

            $data = no_check($data);

            break;

 

    }      

 

    return $data;

 

}

 

:q!

 

 

bee@bee-box:/var/www/bWAPP$ gedit functions_external.php

~ 중간 생략 ~

 

 function xss_check_3($data, $encoding = "UTF-8")

{

 

    // htmlspecialchars - converts special characters to HTML entities   

    // '&' (ampersand) becomes '&amp;'

    // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set

    // "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set

    // '<' (less than) becomes '&lt;'

    // '>' (greater than) becomes '&gt;' 

   

    return htmlspecialchars($data, ENT_QUOTES, $encoding);

      

}

 

function xss_check_4($data)

{

 

    // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.

    // These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).

    // Do NOT use this for XSS or HTML validations!!!

   

    return addslashes($data);

 

 

[참고] 'addslashes' 함수

 

 - 특수 문자(', ", \) 앞에 \(역슬래시)를 삽입하여 특수문자 기능을 문자로 이스케이프하는 함수

 

 

 

 

Ex3) 보안 레벨 'High' 변경

 

 

보안 레벨 및 시나리오 선택

 

 

 

9-1. SSI 인젝션 추가-2.txt

SSI 인젝션 추가 -> 'Lookup' 버튼 클릭

 

 

 

SSI 인젝션 실패

 

 

[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)


웹해킹 09. bWAPP Injection - Server-Side Included(SSI) Injection   https://youtu.be/9OM0tm5Wfak

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q