Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2019-19576 — これはフィルタバイパスエクスプロイトであり、class.upload.php <= 2.0.3 において任意のファイルアップロードとリモートコード実行を引き起こします。 | Kitploit
ツール/GitHubGitHub/jra89/cve-2019-19576
ペイロード生成脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubjra89/cve-2019-19576

CVE-2019-19576

これはフィルタバイパスエクスプロイトであり、class.upload.php <= 2.0.3 において任意のファイルアップロードとリモートコード実行を引き起こします。

リポジトリを見る
12316年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

class.upload.php <= 2.0.3 任意ファイルアップロード

  • 作成者 - Jinny Ramsmark
  • 影響を受けるベンダー - Verot.net
  • 影響を受ける製品 - class.upload.php <= 2.0.3
  • 新規インストールしたUbuntu 19.10(PHP7.3およびApache/2.4.38)でテスト済み
  • 具体的には、Debian/Ubuntuは利用可能なPHPハンドラにphp、phar、phtml拡張子を追加するため、脆弱性があることが判明している。この場合、class.upload.phpはphar拡張子をブラックリストに登録していない。

説明

これはフィルタバイパスエクスプロイトであり、任意のファイルアップロードとリモートコード実行を引き起こします。 class.upload.phpスクリプトは「危険なファイルとコンテンツ」をフィルタリングし、それらをtxtファイル拡張子にリネームします。 また、アップロードされた画像に対してさまざまな種類の変換処理を行います。そのため、仮にファイル拡張子フィルタをバイパスできたとしても、通常は注入されたペイロードが破壊されてしまいます。

ファイル拡張子フィルタはブラックリスト方式のため、新しい拡張子が導入された場合(この場合はphar)、または見落とされた拡張子がある場合には、PHPファイルをアップロードすることができます。 ただし、コンテンツは依然として有効な画像である必要があり、imagecreatefromjpegおよび類似の関数を通過します。 この目的のために、私はinject.phpスクリプトを作成しました。このスクリプトは基本的に、class.upload.phpで行われる処理によってペイロードが破壊されない画像を見つけるまで、さまざまな画像を総当たりで試行します。これにより、実質的に任意のファイルアップロードと、非常にステルス性の高いコード実行が可能になります。なぜなら、それは依然として有効な画像であり、アップロードされたページでは画像として表示されるからです。

タイムライン(デフォルトの90日間の期限)

  • 2019-12-03 - 開発者とK2に報告
  • 2019-12-03 - K2が応答
  • 2019-12-04 - Verotが修正プログラムを添えて応答
  • 2019-12-04 - K2が独自の修正プログラムを用意して応答
  • 2019-12-04 - Verotが上記の修正をリリース (v2.0.4)
  • 2019-12-05 - 両者が応答し、情報公開に合意

このPoCに含まれるファイル

  • composer.json
  • upload.php
  • inject.php

使用方法

upload.phpスクリプトはverot.netのGitHubにあるサンプルコードです。 この脆弱性の実証には、彼ら自身のサンプルコードを使うのが最善だと考えました。

  • ターミナルで「php inject.php」を実行すると、ファイル内に単純なペイロードを含むサンプル画像が生成されます。
  • スクリプトが完了すると、「image.jpg.phar」というファイルが生成されます。
  • upload.phpファイルにアクセスしてimage.jpg.pharをアップロードすると、処理が通り、シェルを入手できます。

実行例

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

提案される解決策

  • ファイル拡張子をブラックリスト方式にしない。
  • 代わりに、デフォルトで許可された拡張子のホワイトリスト方式を使用する。
  • あるいは、アップロードされたファイルには拡張子を一切付けず、元の名前を別の場所に保存する。

参照

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Joomla K2エクステンションでの攻撃例

パッチ未適用のclass.upload.phpが原因で、JoomlaWorks K2 <= 2.10.1において任意のファイルアップロードが可能となり、リモートコード実行につながります。

Webサイト

  • https://getk2.org/

サンプル画像

通常のユーザーが、inject.phpによって生成された、単純なペイロードを含む画像をアップロードします。この画像はclass.upload.phpの拡張子フィルタをバイパスし、ライブラリ内で行われる画像処理によっても破壊されません。通常の画像のように表示されるため、より巧妙です。



ファイルはアップロードされ、バックドアとしてアクセスしてコマンドを実行することができます。

ツールをダウンロード