DVWA | Command Injection | medium

728x90

Command Injection

  • 외부 입력값을 통해 시스템 명령어가 악의적으로 실행되도록 유도하는 공격

DVWA Command Injection 페이지는 위 사진과 같이 IP Address를 입력하여 ping 명령어를 실행할 수 있는 기능이 구현되어 있었다.

 

8.8.8.8을 입력해보니 ping 명령어가 잘 실행된 걸 볼 수 있었다.
그 후 Command Injection 공격을 위해 &&를 사용하여 ping 명령어와 함께 ls 명령어를 입력해봤지만, 아무런 결과를 반환하지 않고 있었다.

 

<?php

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

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

    // Remove any of the characters 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
    $html .= "<pre>{$cmd}</pre>";
}

?>

DVWA 깃허브에서 코드를 보면 사용자가 Submit 버튼을 눌렀는지 확인하고, 사용자가 입력한 ip를 가져오고 있다.
아까 입력했었던 &&;라는 문자는 빈문자열로 치환되는 걸 알 수 있었다. ← 블랙리스트 방식
그리고 운영체제에 맞게 ping 명령어를 실행하고 있다.

이 코드에서는 &&;만 필터링하고 있으므로, 다른 문자를 사용하여 Command Injection 해주었다.

 

| 연산자를 사용하여 앞 명령어(ping)의 실행결과에 상관없이 ls 명령어가 실행되도록 해주었다.
현재 디렉터리 목록이 출력되었고, Command Injection에 성공한 걸 볼 수 있었다.

728x90

'DVWA' 카테고리의 다른 글

DVWA | Insecure CAPTCHA | medium  (1) 2024.11.20
DVWA | File Upload | medium  (0) 2024.11.20
DVWA | File Inclusion | medium  (0) 2024.11.20
DVWA | CSRF | medium  (2) 2024.11.19
DVWA | Brute Force | medium  (0) 2024.11.19