システム開発会社が運用するブログ TSTIPS ティーエスチップス システム開発会社が運用するブログ TSTIPS ティーエスチップス

Laravel 8.x 画像アップロード機能の脆弱性について

2021.12.03

みなさん、こんにちは。

PHPフレームワークとして広く使われているLaravelですが、脆弱性があるようです。

画像アップロードの脆弱性について

バージョン

Laravel version8.x

2021年12月現在の最新版であるLaravel8系で確認されているようです。

脆弱性の概要

Laravelには様々な便利機能が用意されていますが、今回、対象になっているのは画像のアップロード機能に関するものです。 特殊な手順を踏むことで、画像以外のファイル(htmlやjsファイルなど)をアップロードできてしまいます。

参考にしたページでは、htmlを不正にアップロードし、CSRFトークンを回避する方法が紹介されています。XSSやCSRFが可能となってしまうため、対策は必須です。

再現方法

1. バイナリエディタでhtmlファイルを画像に見せかける

ファイルの先頭に”FF D8 FF E0″を加えます。

2. 不正なhtmlファイルを作成

先ほどのhtmlファイルにCSRFを回避する不正なJavaScriptを記述します。具体的な内容については、こちらを参考にしてください。

3. htmlを不正にアップロード

Laravel製のWebアプリ上で画像アップロード機能を使って、不正にhtmlファイルをアップロードします。

あとは言わなくてもわかりますね?あんなことやこんなことができてしまいます。

対策

以上、非常に簡単な手順でサイトに多大な被害を加えうる攻撃ができてしまいます。

簡単な対策として、アップロードされたファイルをそのまま保存せず、拡張子を変更することで攻撃を防ぐことができます。”.jpg”などにすれば不正なJavaScriptは実行されません。詳細は、以下参考ページをご覧ください。

参考

[Exploit Database] PHP Laravel 8.70.1 – Cross Site Scripting (XSS) to Cross Site Request Forgery (CSRF) [Medium] Laravel 8.x image upload bypass
t.kusayanagi

この記事を書いた人

kusa

役職

Company運用会社

株式会社トランソニックソフトウェア

株式会社トランソニックソフトウェア

名古屋市でシステム開発・WEB制作を中心に事業を展開しています。システムに関すること、なんでもお気軽にご相談ください!

Search記事検索

開発パートナー募集中 システムエンジニア、WEBデザイナー積極採用