Webセキュリティ-ファイルアップロードの脆弱性


File Upload
一、原理
いくつかのwebアプリケーションでは、画像、テキスト、または他のリソースを指定の場所にアップロードすることができます.ファイルアップロード・ホールとは、ウェブページのコードの中のファイルアップロードパス変数を利用してフィルタリングが厳しくない場合、実行可能なファイルをサーバーにアップロードし、URLを通じてアクセスして悪意のあるコードを実行します.
二、検査と回り道
クライアント検出(Javascript検出)
ウェブページにJavascriptのスクリプトを書いて、アップロードファイルの拡張子の名前を確認します.ホワイトリスト形式もブラックリスト形式もあります.
迂回方法:1.Javascriptを直接無効にして迂回を実現します.2.まずアップロードが許可されているファイルタイプに変更してからBurpsuiteでスクリプトファイルタイプに変更すれば、迂回できます.
サービス側検査(MINEタイプ検査)
MIME(Multiplurpose Internet Mail Extensions)は、メッセージの内容タイプを記述するインターネット標準である.
迂回:Burpsuiteで要求カバンをつかみ、Content-Typeを許可のタイプに変更します.
よくあるMIMETYPE
audio/mpeg -> .mp3
application/msword -> .doc
application/octet-stream -> .exe
application/pdf -> .pdf
application/x-javascript -> .js
application/x-rar -> .rar
application/zip -> .zip
image/gif -> .gif
image/jpeg -> .jpg / .jpeg
image/png -> .png
text/plain -> .txt
text/html -> .html
video/mp4 -> .mp4
サービスエンド検出(ディレクトリパス検出)
ディレクトリパスの検出が不十分で、00カットオフで攻撃迂回できます.
サービスエンド検出(ファイル拡張子検出)
1.ファイル名の大文字と小文字は迂回します.例えば:*.aSP*.Asp 2.リストは迂回します.例えば:*.asa*.cer 3.特殊ファイル名は迂回します./windowsファイル名は最後にありません.またはスペースがありません.*.php+4.0 x 00で迂回します.
.htaccess  (  "       "),   Hypertext Access(     )。              ,  ,                           ,               。  301   、   404    、       、  /              、      、         。
サービスエンド検出(ファイル内容検出)
ファイルスライド検出(ファイル先頭)
幻数magic numberは、ファイルまたはプロトコルのフォーマットを示すために使用できます.多くのファイルには幻数のフラグがあります.
.jpg   FF D8 FF E0 00 10 4A 46 49 46
.gif   47 49 46 38 39 61
.png   89 50 4E 47
ファイル読み込み検出
1.レンダリング/ローディングテストの攻撃方法はコード注入が迂回します.winghexを使ってファイル自体のレンダリングを破壊しないでブランクを探してコードを充填します.一般的には画像のコメントエリアです.
2.二次レンダリングに対する攻撃方法は攻撃ファイルのキャリア自体である.ファイルのキャリアを攻撃するなら、よくあるのはオーバーフロー攻撃である.自分の悪意のあるファイルをアップロードすると、サーバー上のファイルキャリアが自動的にローディングテストを行います.ロードテスト時にオーバーフローした攻撃によってshelcodeを実行します.たとえば、access/mdbオーバーフローです.
三、防御
  • ファイル拡張子サービスエンドホワイトリストの検証.
  • ファイルの内容をチェックします.
  • アップロードファイルの名前を変更します.
  • アップロードファイルのパスを隠します.
  • 関連ディレクトリの実行権限を制限し、webshell攻撃を防ぐ.