[웹 모의해킹-2] Command Injection 실습 : Medium

두비니

·

2021. 5. 27. 18:43

 

 

 

 


Command Injection

Security Level : Medium


 

Command Injection은 OWASP Top 10에도 들어가있는 위험도가 높은 공격입니다.

DVWA사이트를 통해 Medium, High단계에 따라 Command Injection 실습을 해보도록 하겠습니다.

Low단계는 더무 단순해서 제외하였습니다.

 

0. Command Injection?

Command Injection이란 의도하지 않은 값을 넣어서 서버 속 정보를 빼내는 방법입니다.

 

 

 

1. Security Level : Medium

 

우선 DVWA의 security level을 medium으로 올린 뒤에 다음 명령어를 실행시켜봅시다.

 

127.0.0.1; ls

 

아무 일도 일어나지 않았다!

 

 

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Set blacklist
    $substitutions = array(
        '&&' => '',
        ';'  => '',
    );

    // Remove any of the charactars in the array (blacklist).
    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}

?>

 

아까전과 다른 점은 blacklist를 추가한 점입니다.

근데 &&랑 ;만 블랙리스트 처리한 거니깐, 다른건 괜찮은거겠죠?

 

 

Sol.1) |

 

| (pipeline)은 앞의 명령어를 뒤의 명령어를 실행할 때 전달하는 역할을 합니다.

이때 중요한 건, 전달만 하는거지 그 인자가 쓰이는지 아닌지는 신경쓰지 않는다는 점입니다.

따라서 파이프라인 뒤에 명령어를 입력하면, 일단 실행을 하고 본다는 것입니다.

그래서 다음과 같이 실행해주면

 

|ls

 

Wa!

Sol.2) &

 

&&는 두 명령어 모두 실행시키는 방법이지만, &는 background에서 실행시키는 명령어입니다. 따라서 & 명령어 의 형식으로 입력하면, 결국 뒤의 명령어만 실행되게 됩니다.

&ls

 

Wa!

거진 반딧,,