DVWAのCommand Executionの脆弱性の演習

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

意図的に脆弱性が存在するWebサーバであるDVWAのCommand Executionカテゴリの脆弱性の演習の流れを記載します。
OSコマンドインジェクションはユーザからの入力値の処理に対して、適切なセキュリティ対策をしていないことで、任意のコマンドを実行される脆弱性です。
DVWAでは3段階(Low、Medium、High)のレベルに分かれて問題が出題されており、LowとMediumの演習の手順を記載します。

DVWAの概要や導入方法は「DVWA(Damn Vulnerable Web Application)を構築してみた」をご確認ください。

※OSコマンドインジェクション攻撃を自身が管理しているサーバ以外に攻撃した場合は、犯罪になりますので注意してください。
※本記事に記載している内容を行った場合でも私は責任を取れませんので、実施する際は注意してください。


DVWAのレベルの設定変更手順

DVWAで設定できる問題の難易度の3段階(Low、Medium、High)の設定方法のやり方を記載します。

(1) 「DVWA Security」をクリックして、「Security Level is currently 〇〇〇」に記載されている現在のレベルを確認します。その後、レベルを選択して、「Submit」をクリックします。
DVWAのレベルの設定変更(1)

(2) 「Security Level is currently 〇〇〇」の表記が変わったことを確認します。
DVWAのレベルの設定変更(2)

DVWAのCommand Execution攻撃のやり方(レベル:Low)

(1) DVWAのCommand Executionの演習のソースコードは以下の通りです。

 <?php

if( isset( $_POST[ 'submit' ] ) ) {

    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if (stristr(php_uname('s'), 'Windows NT')) { 
    
        $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    } else { 
    
        $cmd = shell_exec( 'ping  -c 3 ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    }
    
}
?> 


(2) 以下の行にshell_exec関数で「ping *****」のコマンドを実行しています。

$cmd = shell_exec( 'ping  ' . $target );
*****中略******
$cmd = shell_exec( 'ping  -c 3 ' . $target );


(3) Linux OSのコマンドの場合、「[コマンド1] && [コマンド2]」や「[コマンド1]; [コマンド2]を実行すると、2つのコマンドが実行されるため、以下のような文字を入力したら任意のコマンドを実行できます。

【入力データの例1】
127.0.0.1 && ls && hostname

【入力データの例2】
127.0.0.1; ls; hostname;


DVWAのCommand Execution脆弱性(1)

DVWAのCommand Execution脆弱性(2)

DVWAのCommand Execution攻撃のやり方(レベル:Medium)

(1) DVWAのCommand Executionの演習のソースコードは以下の通りです。


 <?php

if( isset( $_POST[ 'submit'] ) ) {

    $target = $_REQUEST[ 'ip' ];

    // Remove any of the charactars in the array (blacklist).
    $substitutions = array(
        '&&' => '',
        ';' => '',
    );

    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
    
    // Determine OS and execute the ping command.
    if (stristr(php_uname('s'), 'Windows NT')) { 
    
        $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    } else { 
    
        $cmd = shell_exec( 'ping  -c 3 ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    }
}

?> 


(2) 演習のレベルLowと比較すると、以下の内容が追記されていますので、「&&」と「;」の文字はなくなることが分かります。

// Remove any of the charactars in the array (blacklist).
$substitutions = array(
     '&&' => '',
     ';' => '',
);

$target = str_replace( array_keys( $substitutions ), $substitutions, $target );


(3) Linux OSのコマンドの場合、「[コマンド1] & [コマンド2]」を実行すると、2つのコマンドが実行されるため、以下のような文字を入力したら任意のコマンドを実行できます。

【入力データの例】
127.0.0.1 & ls & hostname


DVWAのCommand Execution脆弱性(3)

DVWAに関する記事

DVWAについての関連記事は以下の通りです。
必要に応じて、ご確認ください。

Noタイトル記事の概要
1DVWA(Damn Vulnerable Web Application)
を構築してみた
DVWAのバージョン1.0.7の構築手順を記載します。
2DVWAのBrute Forceの脆弱性の演習DVWAの環境を用いてBrute Force攻撃の
演習の例を記載します。
3DVWAのCommand Executionの脆弱性の演習DVWAの環境を用いてCommand Execution攻撃の
演習の例を記載します。
4DVWAのCross Site Request Forgery (CSRF)の
脆弱性の演習
DVWAの環境を用いてCSRF攻撃の
演習の例を記載します。
5DVWAのFile Inclusionの脆弱性の演習DVWAの環境を用いてFile Inclusionの脆弱性を
悪用した攻撃の演習の例を記載します。
6DVWAのSQL Injectionの脆弱性の演習DVWAの環境を用いてSQL Injection攻撃の
演習の例を記載します。
7DVWAのFile Uploadの脆弱性の演習DVWAの環境を用いてFile Uploadの脆弱性を
悪用した攻撃の演習の例を記載します。
8DVWAのXSS reflectedの脆弱性の演習DVWAの環境を用いてXSS reflected攻撃の
演習の例を記載します。
9DVWAのXSS storedの脆弱性の演習DVWAの環境を用いてXSS stored攻撃の
演習の例を記載します。