
Filechuckerフィルターバイパスの概念実証
filechucker.cgi バージョン 5.09 および filechucker_prefs.cgi バージョン 4.99e-free-e02 では、アップロード時のフィルターバイパスが存在し、ユーザーが悪意のあるファイルをアップロードすると、リモートコード実行に繋がる可能性があります。
このバイパスは、filechucker がファイル拡張子をフィルタリングしようとし、filechucker_prefs の非許可拡張子設定に対してテストする際に発生します。
$PREF{only_allow_these_file_extensions} = '';
$PREF{disallow_these_file_extensions} = '.exe .php .php3 .php4 .php5 .phtml .cgi .pl .sh .py .js .htaccess .htpasswd .cmd .bat .ftpquota';
$PREF{allow_files_without_extensions} = 'yes';
$PREF{disallow_these_strings_within_filenames} = '\.php \.asp \.cgi \.pl$ \.plx torrent dvdrip'; # can include regexes, so periods must be escaped. must be in single quotes.#
上記は初回ダウンロード時のデフォルト設定です。ご覧の通り、特定のファイル拡張子は許可されていません。バイパスは、ファイル名に以下の3つのうちいずれかを追加することで発生します。
.%%<EXT>.%<EX>%<T>%2E.%<EXT>1つ目と3つ目は 常に機能するとは限らず 、2つ目はほぼ確実に成功します。例えば、ファイル名が 491f21bfbe8fc71eafc9ed76565b0bb4.%ph%p の場合、上記のフィルタリングを通過すると、ファイル名は 491f21bfbe8fc71eafc9ed76565b0bb4.php としてアップロードされます。
filechucker.cgi ファイルを見つけるための Google ダークがいくつかあります。
inurl:filechucker.cgiinurl:/cgi-bin/filechucker以下の動画は、encodables ウェブサイト(デモ)で撮影された概念実証です。