web-dev-qa-db-ja.com

PHPでのヌルバイトインジェクション?

PHPコードでnullバイトインジェクションを実行することは可能ですか?また、脆弱なコードはどのように見えるでしょうか?気づいたように、いくつか例を挙げていただけますか?

<?php

echo $_GET['get'];

コードを脆弱にしません。可能であれば、この種の脆弱性を引き起こす可能性のあるコードのセキュリティ欠陥は何ですか?任意の例が高く評価され、役立ちます。

7
black_hat_cat

PHP=のヌルバイトインジェクションは、ファイルシステム操作でヌルバイトがどのように処理されるかに関係します。攻撃者がヌルバイトをファイルパスに挿入できる場合、基礎となるC関数は悪意のあるキャラクターの後のすべてを無視します。これにより、目的のファイルの拡張子などの制約を回避するために使用されます。

次の例はphp.netからのものです。

<?php
$file = $_GET['file']; // "../../etc/passwd\0"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
    // file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
    include '/home/wwwrun/'.$file.'.php';
    // the file /etc/passwd will be included
}
?>

http://www.php.net/manual/en/security.filesystem.nullbytes.php

この場合、ユーザーがファイルパラメータの最後にnull文字を送信すると、ファイル操作中に「.php」拡張子は無視されます。攻撃者は、ディレクトリトラバーサル文字列と組み合わせて、開示される任意のファイルを「含める」ことができます。

8
itscooper

この情報は、古い(サポートされていない)バージョンのPHPにのみ関連します。

NullバイトインジェクションはPHP 5.3.4で修正されました(それ自体はすでにサポートされていない古いバージョンです)PHPバージョン): https:/ /bugs.php.net/bug.php?id=3986

4
Boy Baukema