簡単な紹介
アップロードファイル、すなわち、ファイルをアップロードすることにより通常のユーザーのタイプに、アップロードの脆弱性をファイル、コンテンツは厳格なフィルタリング、検査、攻撃者がトロイの木馬をアップロードすることで、サーバへのウェブシェルアクセスを得ることができるように、ウイルス、悪意のあるスクリプトなどではないので、コントロールを攻撃しますサーバは、そのファイルのアップロードの脆弱性害はしばしば壊滅的です。簡単に言えば、ユーザーが直接またはサーバーにアップロードウェブシェルを回避するためのさまざまな方法を通じて、その後の実行を使用することです。たとえば、PHPのサーバー環境ならば、ユーザーがPHPのトロイの木馬ワードをアップロードし、ウェブシェル包丁で接続されます、あなたのサーバーのファイルを改ざんしても、コマンドを実行することが可能です。
ファイルアップロードの検証方法
クライアントJavaScriptのチェック(通常はチェックサフィックス)
クライアントは、クライアントがサーバーにメッセージを送信していないとき、アップロードするファイルを選択するためにクリックすると、ファイル拡張子の前にJSのスクリプトが検出の種類をアップロードすることができるかどうかを決定するために実行しました
サーバーをチェックしてください
- ファイルのアップロードの白黒リスト検出MIMEタイプに通して濾過し、コンテンツタイプヘッダフィールド検証バックエンド
- ファイルヘッダのチェックサムの内容
異なるファイルが異なるファイルヘッダを持っている、ファイルヘッダは、ファイルの重要な属性のいくつかを記述することで、そのファイルは、これらの手順を属性オープンし、プロセスを伝えます。いくつかのアップロード・インターフェースは、GIFヘッドはヘッドが%PNGあるPNG、GIF89aのある、それは本当に、このようなJPG形式のピクチャヘッダがJFIFであるとして、正のファイルタイプ、であるかどうかを判断するために、自分がアップロードしたファイルのヘッダ情報を検出します。
- ファイルサイズを確認します
かなど、いくつかのインタフェースは、単語をアップロードするトロイの木馬を防ぐために、通常の画面サイズの関数であるあなたのサイズで写真をアップロード検出するために、getimagesize()関数をアップロードします。
- 拡張ブラックリストのチェック
- 拡張ホワイトリストのチェック
- カスタム定期点検
WAF機器のキャリブレーション
(WAF異なる製品により異なります)
バイパス姿勢
1)クライアントをチェックします
a)まず、パケットが元のファイルに名前を拡大していきます、あなたはburpsuiteパケットキャプチャを通じてアップロードすると、標準的な検出スクリプトに沿って展開するファイル名の拡張子をアップロードバイパスの目的を達成することもあります
b)は、直接現地JS無効のブラウザで
2)Content-Typeヘッダフィールドの検証
Content-Typeの周りで放火魔および他burpsuriteを使用するかのContent-Type HTTPヘッダーのコンテンツを改ざん:画像/ JPG、コンテンツタイプ:画像/ PNG、コンテンツアプリケーション/ PHPは、コンテンツタイプとして、Webアプリケーションの他のタイプを許可するように変更 - タイプ:テキスト/平野。
一般的なMIMEタイプ:
text / plainの(プレーンテキスト)
テキスト/ HTML(HTML文書)
テキスト/ JavaScriptを(JSコード)
アプリケーション/ XHTML + XML(XHTML文書)
画像/ GIF(GIF画像)
画像/ JPEG(JPEG画像)
画像/ PNG(PNGイメージ)
ビデオ/ MPEG(MPEGムービー)
アプリケーション/オクテットストリーム(バイナリデータ)
アプリケーション/ PDF(PDFファイル)
その言語のためのアプリケーション/(プログラミング言語)コード
アプリケーション/ mswordは(Microsoft Word文書)
メッセージ/ RFC822(RFC 822形式)
マルチパート/代替(HTMLやプレーンテキストでHTML形式の電子メール、表現の異なる形式を使用して同じ内容)
アプリケーション/ X - WWW-form-urlencodedで(提出するフォームPOSTメソッド)
マルチパート/フォームデータ(ファイルのアップロードと一緒にするときPOST提出フォーム)
3)ファイルヘッダチェックサムの内容
何の説明はスキップされていないA)に対応するアップロードされたファイルのヘッダバイト(PHPエンジンが<だろうか?HTMLテキストとして以前コンテンツとスクリプトの頭部は、背後にあるコードは依然として)実装することができるようになります
フォーマット・ファイルのコンテンツ・ヘッダ・テーブルの様々な取り付け
c)の脆弱性getshellを含むファイルと組み合わせて、新しいファイルをアップロードした後、画像トロイの木馬を作成するためにマージされたファイルやスクリプトファイルの提出フィルタータイプとラインを見つけます
4)チェックファイルサイズ
常に満たされたゴミデータ内のデータをアップロードまたはトロイの木馬がバイパスされた画像を作成します。
5)チェックブラックリストファイルの拡張子
バイパスに不足しているファイルタイプを探します
6)その他の回避策
00切り捨て
サフィックス総額バイパス
競争の条件
解析の脆弱性
要約:剛性、アップロード柔軟な使用をしない迂回するためには、アップロードされた効果を達成するために種々の方法と組み合わせることができます
実験
実験環境:phpstudy2016
ドローン:DVWAファイルアップロードHIGHセキュリティレベル
ソース
、このレベルは、ホワイトリストを使用して濾過した見つけ、唯一のサフィックスJPG、JPEGファイルのアップロードまたはPNG形式、ファイルサイズは、100,000未満バイトです。
cmdのコマンドでコピートロイの木馬で画像を生成します
単語トロイの木馬の挿入テールを検索
成功したアップロード
目に見えるファイルは、C:\ phpstudy \ WWW \ DVWA \ \ハッキングアップロードディレクトリの下
包丁で接続してみます
トロイの木馬は、画像として処理され、解析されたPHPとして解析されないため、エラーを探します
次に、[ファイルインクルージョンの脆弱性を使用することができます
DVWAは、画像にファイルインクルージョンの脆弱性を使用してPHPに解決
URL構造
http://169.254.16.216/DVWA/vulnerabilities/fi/?page=file:///C:\phpstudy\WWW\DVWA/hackable/uploads/shell.jpgチョッパパラメータに追加qlu
DVWAは、ログインする必要があるため、接続エラーは、発見されました
右クリックし、シェル上だけで追加することができ、ウェブサイトを参照してください選択し、チョッパーはDVWA自身のブラウザのセキュリティレベルが下のハイとに設定されて上陸しました。
次に、あなたが正常に接続することができます。
守ります
1.ファイルのアップロードディレクトリは非実行に設定されている
ことが重要ですので、攻撃者は、サーバー自体には影響しません、スクリプトファイルをアップロードする場合でも、限り、Webコンテナのディレクトリとして解決できないファイル。
2.ファイルの種類を分析する
ファイルの種類には決定され、MIMEタイプ、組み込まれたサフィックス検査を使用することができます。ファイルの型チェックでは、それは強くホワイトリストに推奨され、ブラックリストのアプローチは、信頼できないであることが証明され、何度もあります。さらに、画像処理のために、圧縮関数は、ピクチャ画像が含まれていてもよい破壊するHTMLコードは、同時に処理され、使用または機能のサイズを変更することができます。
3.ファイル名とファイルパス上書きする乱数を使用して
、ファイルのアップロードを使用すると、コードを実行したい場合は、ユーザーがこのファイルにアクセスできるようにするために必要とされます。一部の環境では、ユーザーがアップロードすることができますが、アクセスすることはできません。あなたは、ファイル名とパスを書き換える乱数を適用した場合、それは非常に攻撃のコストが増加します。再びshell.php.rar.rarのようなもので、この文書をするcrossdomain.xml、名前を変更したので、我々は攻撃することができません。
4.別のファイルサーバのドメイン名を設定して
いるため、ブラウザの同一生成元ポリシーは、そのようなアップロードのcrossdomain.xmlとして失敗するクライアント側の攻撃、一連の、アップロードが含まれているJavaの XSSスクリプトを活用し、他の問題が解決されます。