安全でないファイルのダウンロードには、それをアップロードする - 検証の原則アップロードの脆弱性のバイパス--MIME型に

バイパスへの原則アップロード抜け穴検証MIMEタイプ

バイパス認証サーバ(MIMEタイプ検出)

MIMEとは何ですか

MIME(多目的インターネットメール拡張)多目的インターネットメール拡張タイプ。ファイルの拡張子がアクセスされたときに、ブラウザが自動的に開くように指定されたアプリケーションを使用します開くアプリケーションとファイル拡張子のいくつかのタイプを設定する方法です。いくつかは、いくつかのメディアはオープンをファイルとしてだけでなく、カスタムファイル名を指定するためにクライアントで使用されています。

		应用在php中可以对很多文件的扩展名进行限制

MIMEの構成

各MIMEタイプは、2つの部分、例えば音声、オーディオ、画像及び他の画像のようなデータの大クラスの正面から成り、後で特定のタイプを定義します。

一般的なMIMEタイプ(ユニバーサル)

			超文本标记语言文本 .html text/html
			xml文档 .xml text/xml
			XHTML文档 .xhtml application/xhtml+xml
			普通文本 .txt text/plain
			RTF文本 .rtf application/rtf
			PDF文档 .pdf application/pdf
			Microsoft Word文件 .word application/msword
			PNG图像 .png image/png
			GIF图形 .gif image/gif
			JPEG图形 .jpeg,.jpg image/jpeg
			au声音文件 .au audio/basic
			MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
			RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
			MPEG文件 .mpg,.mpeg video/mpeg
			AVI文件 .avi video/x-msvideo
			GZIP文件 .gz application/x-gzip
			TAR文件 .tar application/x-tar
			任意的二进制数据 application/octet-stream



	**这种漏洞一般在全局数组$_FILES这里**
		通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
		第一个参数是表单的 input name,
		第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。
			$_FILES["file"]["name"] - 被上传文件的名称
			$_FILES["file"]["type"] - 被上传文件的类型
			$_FILES["file"]["size"] - 被上传文件的大小,以字节计
			$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
			$_FILES["file"]["error"] - 由文件上传导致的错误代码
			详细可参考:http://www.w3school.com.cn/php/php_file_upload.asp

解析コードのロジック

upload_sick機能によってアップロードされたファイルには、その後いくつかのチェックを最初のフロントエンドを取得するための要求を提出した後、配列を(定義された画像のアップロードの種類を指定)を定義し、かつます。
脆弱性が存在するため、$ _FILESため解析upload_sick機能()
このグローバルなアプローチは、コンテンツ・タイプ、コンテンツ・タイプのフロントエンドユーザが制御することができる取得するブラウザのHTTPヘッダを介してです。簡単にバイパスさ。

回避策

通常、標準的な絵、そのコンテンツタイプのキャプチャ動作をアップロードします。コンテンツタイプのデータパケットの要件を満たすために、目に見える通常のアップロード写真画像/ PNG(比較対象と)で、ファイルが対象とPHPのリターン間違ったファイルタイプではありません。

公開された80元の記事 ウォンの賞賛8 ビュー4221

おすすめ

転載: blog.csdn.net/weixin_43079958/article/details/105353324