Webセキュリティテストの研究ノート - 画像アップロード

アップロードリソースは通常、サーバー内のファイルフォルダに保存された後、多くのサイトでは、攻撃者がファイルタイプの検証をアップロードするための時間をバイパスした場合、トロイの木馬やその他の実行可能コードを渡し、アップロードされたリソース(画像や文書など)の機能を持っていますアップ、およびサーバーが危険にさらされています。

 

演習へのI DVWAファイルのアップロード、任意の検証なしにローモードは、単に任意のサイズと種類のファイルをアップロードし、一般的に、現実には存在しない、それがメディアモードから開始し、スキップされます。

ページを入力した後、私は、PHPファイルを渡すようにしてみてください(ファイルは親ディレクトリにリストされているファイルのすべてのコードを持っている)、次の図は、このエクササイズを行う前に(メディアモードのファイルタイプの制限を示して、私は思います非常に安全な制限の種類を行い、とにかく、他のタイプは)まあ〜を通過しない、実際には、このテストを回避する方法があります。

 

修正Content-Typeのファイルタイプ検出を迂回(メディアモード)

以下、コンテンツタイプとげっぷスイートキャプチャ型オクテットストリームです。エラーページによると、このページでは画像だけJPGとPNG形式を転送することができます。

もう一度リクエストを送信し、要求内容型変化画像/ JPEGしようとすると、正常にアップロード。説明媒体モードのみMIMEタイプを確認し、ファイル自体を(私は説教やPHPファイル)を検証しませんでした

成功したアップロードのアクセス3.php後、コードが実行される(ずっと実行される悪意のあるコードのリスクは言うまでもないです ...)

使用写真の馬のバイパス(heighモード)

写真をアップロードするために最後ではありませんheighモードは、ファイル自体をチェックする、すなわち、アップロードの失敗が見つけ、再びアップロード方法の変更されたコンテンツタイプを使用して、heighのセキュリティレベルを変更します。画像マレーバイパスへの次の試み。絵馬は何ですか、単に画像に埋め込まれたコードです。次のステップ:

馬の写真の合成

    次のコマンドラインを使用して、別の画像に本物の絵は、絵やPHPファイルを検索します。

    コピー3.png / B + test.phpを/ y.png(y.pngが絵馬です)

2.アップロード写真の馬

    用Burp Suite抓包看到我们的代码已经隐藏在图片里了,然后直接上传即可(因为文件格式是符合要求的)

    

利用GIF89a绕过(heigh模式)

什么是GIF89a呢?先上传一张货真价实的gif图片,抓包如下图,图片的最开始几个字母就是GIF89a。个人理解GIF89a应该是gif文件的开头标志,只要有这个标志,就会被当做gif图片~

 

我将本地的php文件开头加上gif89a,然后把文件重命名为.jpg,进行上传并上传成功(实际上我上传的是一段代码)

这里有个疑问:明明只允许上传jpeg和png,为何gif图片也上传了呢?我的理解是:文件类型和后缀名是分开校验的。校验文件类型的函数只校验了是否是图片(没管是什么类型的图片),而jpeg和png的校验只校验了后缀名。

 

那有没有办法避免这种情况呢?有,把security level修改为impossible模式,图片马和gif89a都不行了,因为impossible模式在high的基础上,还检测了上传文件是不是货真价实的图片~

 

一点点感悟:

1. 上传文件类型的校验越严格越好(除了后缀名必须校验文件本身)

2. 上传的文件放在单独的文件服务器上

 

如需转载,请注明出处,这是对他人劳动成果的尊重~

 

おすすめ

転載: www.cnblogs.com/sallyzhang/p/11906217.html