web-dev-qa-db-ja.com

PHPサーバーを.jpgファイルのアップロードで利用する

Webサイトでの画像のアップロードとphpコードエクスプロイトの実行に関する古典的な質問をしたいと思います。

だから私はハッキングすることになっているウェブサイトをこのエクスプロイトを試してきました(私たちがハッキングするように設定されています)

ウェブページでは画像をアップロードできます。TamperDataを使用してMIMEタイプを変更するのは簡単ですが、ウェブページでは、画像を通過させる前に、ファイルの最後の文字が「.jpg」または「.jpeg」であるかどうかを確認します。

PHPコードの配置(私はphpコード、画像ファイルの最後に貼り付けられたphpコード、EXIFヘッダーのphpコードなど)を試しました)に関係なく、ウェブサイトには拡張子が常にjpgであるため、アップロード後に画像ファイルを開くと(または、.jpgとして保存されたプレーンなphpコードの場合はエラー)。

したがって、そのような場合、ファイルを.phpとして実行するにはどうすればよいですか? (null bite poisoningは機能せず、vuln.php.jpgまたはvuln.php; .jpgとしてコードをアップロードすることもできません。どちらも画像を表示するだけです)

15
bruce kent

PHPコード[...]の配置に関係なく、アップロード後にWebサイトに画像ファイルが表示されるだけです。

はい、そうです。拡張子ではなくコンテンツに応じて.jpgファイルを.phpファイルとして解釈する場合、サーバーは深刻な脆弱性を持ちます。

したがって、そのような場合、ファイルを.phpとして実行するにはどうすればよいですか?

適切なサーバーでは許可されていないため、コード自体になんらかの脆弱性がないと、画像ファイルをPHPファイルとして実行できません。

コードについての知識がなければ、推測以上のことはできません。故意に脆弱であると思われる場合は、拡張チェックがおそらく壊れていると思います。

あなたは試すかもしれません:

  • .htaccess:拡張機能チェックはこれを拡張機能なしと解釈する場合があり、それで問題ない場合があります。サーバーが.htaccessファイルを解析する場合、AddType application/x-httpd-php .jpgを介して画像ファイルでコードを実行できます。
  • vuln.jpg.php:チェックは、最後の拡張子ではなく、最初の拡張子をチェックする場合があります。
  • vuln.php5vuln.php4vuln.phtmlなど:チェックはホワイトリストチェックではなく、ブラックリストチェックである可能性があり、サーバーによってPHPファイル。これは、foobarなどのメークアップ拡張機能を使用して簡単にテストできます。合格した場合、これはブラックリストフィルターです。
  • LFI:サブディレクトリmiscおよびuploadsを含むconfigsなどのディレクトリがあり、configsにはPHPファイルが含まれ、uploadsには画像のアップロードが含まれます。次に、include "misc/" . $filenameなどのコードを使用できます。ディレクトリトラバーサルのチェックがあるとしましょう。これは悪いコードですが、一般的にはいまだに安全ですよね?含まれている.jpgファイルは、他のファイルと同じように解析されて実行されるため、ファイル内のPHPコードが実行されます。この例は少し遠いですが、このようなものが存在する可能性があることは完全に考えられます。

tl; dr:jpgファイルはPHPファイルとして.htaccessまたはincludeを介して実行できます。さらに、安全でない場合は、ファイル拡張子チェックをバイパスできる場合があります。

14
tim

TamperDataを使用すると、一部のサーバーが機能しなくなります。ただし、exifエディタを使用すると問題なく動作します。

.jpgは、httpヘッダーまたはburpスイートで.phpに置き換えられます

1
Trojan Boy

単なる考え-サーバーを実際にハッキングしているわけではありませんが、組み込みの自己実行jsを含むjpgファイルをexifからアップロードできると、クライアントマシンで騒乱を引き起こす可能性がありますが、ユーザーの観点からすると、セキュリティ上の問題になります。参照: http://blog.trendmicro.com/trendlabs-security-intelligence/jpeg-files-used-for-targeted-attack-malware/

1
Jenn