정보보안(구버전)/ bWAPP 2019. 1. 24. 16:42

웹 해킹 bWAPP - 07. A1 - Injection - OS Command Injection

 

 

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

 

 

1. Injection

 

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

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

 

 

 

2. 'nslookup' 명령어

 

 - DNS 정보 수집 명령어

 
bee@bee-box:~$ nslookup www.google.com
Server:  168.126.63.1
Address: 168.126.63.1#53

Non-authoritative answer:


Name: www.google.com
Address: 216.58.197.196

 

 

 

3. 메타케릭터

 

 - Shell이 특별한 의미로 해석하는 문자, 기호를 의미한다.

 

 |

 파이프라인

 앞에서 실행한 명령어 출력 결과를 뒤에서 실행하는 명령어 입력값으로 처리함

 ;

 세미콜론

 한개의 라인에 여러개 명령어를 수행해줌

 &&

 더블 엠퍼센트

 첫 번째 명령어가 성공되면 다음 명령어를 수행함(단, 실패시 다음 명령어 수행 X)

 ||

 더블 버티컬바

 첫 번째 명령어가 실패해도 다음 명령어를 수행함(단, 성공시 다음 명령어 수행 X)

 

 

bee@bee-box:~$ cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bee@bee-box:~$ nslookup www.google.com ; cat /etc/passwd | head -2
Server:  168.126.63.1
Address: 168.126.63.1#53

Non-authoritative answer:


Name: www.google.com
Address: 108.177.125.147
Name: www.google.com
Address: 108.177.125.106
Name: www.google.com
Address: 108.177.125.105
Name: www.google.com
Address: 108.177.125.104
Name: www.google.com
Address: 108.177.125.103
Name: www.google.com
Address: 108.177.125.99

 

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

 

 

 

4. Injection - OS Command Injection

 

 - 이 시나리오는 취약한 시스템 함수에 명령어를 삽입하여 시스템/서버 파일/디렉토리를 접근하는 내용이다.

 - 메타케릭터(;, |, &&, ||)를 이용하여 실시함

 

 

Ex1) Injection - OS Command Injection 이해

 

 

보안 레벨 및 시나리오 선택

 

 

'www.google.com' 입력 -> 'Lookup' 버튼 클릭 -> nslookup 결과 확인

 

 

'www.google.com ; cat /etc/passwd | head -2' 입력 -> 'Lookup' 버튼 클릭 -> nslookup 및 passwd 파일 내용 확인

 

 

 

 

Ex2) 'vi commandi.php' 파일 내용 확인

 

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

 

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

~ 중간 생략 ~

 

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

 

function commandi($data)
{

    switch($_COOKIE["security_level"])
    {

        case "0" :

 

            $data = no_check($data);
            break;

 

        case "1" :

 

            $data = commandi_check_1($data);
            break;

 

        case "2" :

 

            $data = commandi_check_2($data);
            break;

 

        default :

 

            $data = no_check($data);
            break;

 

    }

    return $data;

}

~ 중간 생략 ~

 

        $target = $_POST["target"];

        if($target == "")
        {

            echo "<font color=\"red\">Enter a domain name...</font>";

        }

        else
        {

            echo "<p align=\"left\">" . shell_exec("nslookup  " . commandi($target)) . "</p>";

        }

    }

 

:q! 

 

 

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

~ 중간 생략 ~

 

}

{

   

    $input = str_replace("&", "", $data);

    $input = str_replace(";", "", $input);

   

    return $input;

   

}

 

function commandi_check_2($data)

{

  

    return escapeshellcmd($data);

   

}

 

function commandi_check_3($data)

{

   

    $input = str_replace("&", "", $data);

    $input = str_replace(";", "", $input);

    $input = str_replace("|", "", $input);

   

    return $input;

   

 

 

[참고] 'escapeshellcmd'

 

 - 인자로 받은 명령어가 실행되었을 때, 의도하지 않았던 쉘 명령어가 실행되는 것을 방지
 - Ex) 메타케릭터에 역슬레시(\)를 붙여 명령어를 실행하지 못하게 함

 - 참고 사이트 : http://php.net/manual/kr/function.escapeshellcmd.php

 

 

 

 

Ex3) 보안 레벨 'High' 변경

 

 

보안 레벨 및 시나리오 선택


 

 

'www.google.com ; cat /etc/passwd | head -2' 입력 -> 'Lookup' 버튼 클릭 -> 취약점 발생 X

 

 

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


웹해킹 07. bWAPP Injection - OS Command Injection   https://youtu.be/gyw_jQckUbc

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


Q