ファイルアップロード機能の不備 02 - yujitounai/helloworld GitHub Wiki

ファイルアップロード機能の不備 02

拡張子フィルタのバイパス 否認リストはバイパスされる php-fpmを使っている場合 security.limit_extensionsの デフォルト値が .php .pharであるため

脆弱なソースコード(php)

<?php
$cfg['DENY_EXTS'] = array( 'asp','jsp','php','cgi');

function checkExt($filename)
{
	global $cfg;
	$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
	return in_array($ext, $cfg['DENY_EXTS']);
}

$tempfile = $_FILES['fname']['tmp_name'];
$filename = './' . $_FILES['fname']['name'];

if (is_uploaded_file($tempfile) && !checkExt($tempfile)) {
    if ( move_uploaded_file($tempfile , $filename )) {
	echo $filename . "をアップロードしました。";
    } else {
        echo "ファイルをアップロードできません。";
    }
} else {
    echo "ファイルが選択されていません。";
} 
?>

<form action="fileupload-02.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fname">
  <input type="submit" value="アップロード">
</form>

攻撃する方法

pharファイルをアップロードすればいい

⚠️ **GitHub.com Fallback** ⚠️