0x01脆弱性の定義をアップロード
ファイルのアップロード脆弱性とは、ユーザーが実行可能なスクリプトファイルをアップロードし、このスクリプトファイルを介してサーバー側のコマンドを実行する機能を取得することを指します。この攻撃方法は、最も直接的で効果的です。 「ファイルアップロード」自体に問題はありません。問題は、ファイルがアップロードされた後、サーバーがファイルを処理および解釈する方法です。サーバーの処理ロジックが十分に安全に行われていない場合、深刻な結果につながります。
0x02脆弱性ハザードをアップロード
1.アップロードされたファイルは、Webスクリプト言語です。サーバーのWebコンテナは、ユーザーがアップロードしたスクリプトを解釈および実行し、コードを実行します。
2.ファイルをアップロードすることはウイルスまたはトロイの木馬である場合、主にユーザーまたは管理者をだましてダウンロードと実行するか、自動的に直接実行するために使用されます。
3.アップロードファイルはFlashのポリシーファイルCrossDomain.xmlです。これは、ハッカーがこのドメインでFlashの動作を制御するために使用されます(同様の方法を介してポリシーファイルを制御する他の状況は類似しています)。
4.ファイルのアップロードはウイルスまたはトロイの木馬です。ハッカーは、ユーザーまたは管理者をだましてダウンロードと実行に使用します。
5。ファイルのアップロードは、フィッシング画像またはスクリプトを含む画像です。ブラウザの一部のバージョンでは、スクリプトとして実行され、フィッシングと詐欺に使用されます。
さらに、画像解析モジュールなど、サーバーのバックグラウンドハンドラーをオーバーフローするためのエントリとしてアップロードファイルを使用するなど、いくつかの珍しいエクスプロイトがあります。または、コンテンツにPHPスクリプトが含まれている正当なテキストファイルをアップロードし、「ローカルファイルインクルージョンの脆弱性(ローカルファイルを含む)」を使用してこのスクリプトを実行します。等々。
0x03アップロード脆弱性は条件を満たしています
最初に、アップロードされたファイルは、Webコンテナによって解釈および実行できます。したがって、ファイルがアップロードされているディレクトリは、Webコンテナで覆われたパスです。
第二に、ユーザーはこのファイルにWebからアクセスできます。ファイルがアップロードされているが、ユーザーがWebを介してアクセスできない場合、またはWebコンテナがスクリプトを解釈できない場合、脆弱性とは呼ばれません。
最後に、ユーザーによってアップロードされたファイルのコンテンツがセキュリティチェック、フォーマット、画像圧縮、その他の機能によって変更された場合、攻撃に失敗する可能性もあります。
0x04アップロード脆弱性の原因
一部のWebアプリケーションでは、画像、テキスト、またはその他のリソースを指定された場所にアップロードすることができます。ファイルアップロードの脆弱性は、これらのアップロードされた場所を使用して悪意のあるコードをサーバーにインプラントし、URLを介してアクセスしてコードを実行することです。
ファイルアップロードの脆弱性の理由は:です
1。不適切なサーバー構成
2。オープンソースエディターのアップロード脆弱性
3.ローカルファイルのアップロード制限はバイパスされます
4。フィルタリングまたはバイパスの欠如
5。ファイルの解析脆弱性はファイルの実行を引き起こします
6。ファイルパスの切り捨て
0x05アップロード脆弱性の原理
ほとんどのWebサイトとアプリケーションシステムには機能がアップロードされています。一部のファイルアップロード関数の実装コードは、ユーザーがアップロードしたファイルの接尾辞とファイルタイプを厳密に制限しないため、攻撃者はWebを介してアクセスできるディレクトリにPHPファイルをアップロードし、これらのファイルをPHPインタープレーターに渡すことができるため、PHPスクリプトをリモートサーバーで実行できます。
システムにファイルアップロードの脆弱性がある場合、攻撃者はウイルス、トロイの木馬、ウェブシェル、その他の悪意のあるスクリプト、またはサーバーにスクリプトを含む写真をアップロードできます。これらのファイルは、攻撃者のその後の攻撃を容易にします。特定の脆弱性の違いに応じて、ここにアップロードされるスクリプトは、通常の接尾辞を備えたPHP、ASP、JSPスクリプト、またはサフィックスを改ざんされたこれらのタイプのスクリプトである可能性があります。
0x06ファイル検出プロセスをアップロード
通常、ファイルがHTTPプロトコルの下でアップロードされると、POSTリクエストでWebサーバーに送信されます。 Webサーバーがリクエストを受信して同意すると、ユーザーはWebサーバーとの接続を確立し、データを送信します。次の検出手順は、一般的なファイルのアップロードプロセス中に渡されます。
一般に、ファイルのアップロード中の検出は、以下の図の赤いセクションにマークされています。
クライアントJavaScript検証(通常、ファイル拡張子のみが確認されます)
サーバー側の検証
ファイルヘッダーコンテンツタイプのフィールド検証(画像/GIF)
ファイルコンテンツヘッダー検証(GIF89A)
ディレクトリルート検出(パスパラメーターに関連するコンテンツを検出)
ファイル拡張検出(ファイル拡張機能に関連する検出)
接尾辞ブラックリストの確認
接尾辞ホワイトリストの確認
カスタム定期的な検証
WAF機器の確認(異なるWAF製品に応じて)
0x07
脆弱性バイパス
1。カスタマーサービスバイパス
(1)クライアント検証:一般的に、JavaScriptスクリプトがWebページに記述され、アップロードされたファイルの接尾辞名を確認します。判断方法:ファイルを閲覧してロードするときは、[アップロード]ボタンをクリックする前に、ダイアログボックスが表示されます。内容は次のとおりです。jpg/.jpeg/.pngの接尾辞名を持つファイルのみをアップロードし、現時点ではデータパケットは送信されません。
(2)バイパス法:1。IEでJSスクリプトをFirefoxプラグインNoScriptプラグインまたは無効にする
2。firbugプラグイン要素を介してコードを確認して変更します(onsubm:t=” returnの削除など
checkfile() "event)
3。firbug要素を介してJavasciptスクリプトのアップロードファイルタイプを確認します。
4. Burpを使用してパッケージをキャッチおよび変更することにより、最初にGIFタイプのTrojanをアップロードしてから、Burpを介してASP/PHP/JSPサフィックス名に変更します。
注:ここでファイル名を変更した後、リクエストヘッダーのコンテンツレングス値も変更する必要があります。
デモンストレーションは次のとおりです。
Fidderはパケットキャプチャとインターセプトを実行し、最初にBD2.jpgなどの画像トロイの木馬の文をアップロードし、次にパケットキャプチャを変更してBD2.phpに迎撃します
2。サーバーバイパス
(1)ブラックリスト拡張バイパス
ブラックリスト検出:一般的に、一般的な危険なスクリプトファイルを含む特別なブラックリストファイルがあります。バイパス方法:
(1)ネットから逃れるためのブラックリスト拡張機能を見つけます - IIS6.0のASAやCERなど
(2)ケースバイパスの脆弱性がある場合があります -
たとえば、ASP(IIS6.0で使用できます)およびPHP(PHP5.3.39よりも小さいLinuxでのみ使用できます)
(3)Webコンテナで解析できるファイルのその他の拡張機能のリスト:
jsp、jspx、jspf
ASP ASA CER CDX、HTML、XML、HTML
ASPX、ASHX、ASMX、ASAX、ASCX
デモ:PHPでのケース解析はLinuxでのみ使用できます
環境は実行できます:
PHPのアップロードはここでは許可されていないので、大文字と大文字のPHPをアップロードできます
(2)ブラックリストの特別な接尾辞名バイパス(利用の難易度が高い)
burpsuiteがbaclion.php4(php1、php2、php4、php5)にインターセプトされたデータパケットのbacklion.php名を変更します。
(3)オペレーティングシステムファイルの命名ルールでバイパス
Windowsシステムの下で、ファイル名が「で終了する」またはスペースでは、システムは自動的に「」を削除します。とスペース。この機能は、ブラックリストの検証をバイパスするためにも使用できます。 Apacheでは、ポイントエンディングとスペースを使用してバイパスできます。ASPとASPXでは、スペースを使用してバイパスできます。
(a)。 Windowsファイルネーミングルールに準拠していないファイル名をアップロードすると、Windowsシステムによるコンプライアンス違反記号の後にコンテンツが自動的に削除されます。
test.asp。
test.asp(スペース)
test.php:1.jpg
test.php3360: $データ
(b)。接尾辞はLinuxの下のケースです
Linuxでは、PHPのアップロードが解決されない場合、PHPサフィックスでファイル名をアップロードしてみることができます(前提条件は、PHPバージョンがバージョン5.3.29以下であることです)
(4)シングルサフィックスとダブルサフィックス
によってバイパスされますアップロードするときは、ファイル名Backlion.php(backlion.asa)をBurpsuiteによってbacklion.pphphph(backlion.asasaa)に傍受したデータパケットの変更を変更します。最初の「PHP」文字列をフィルタリングした後、「P」と終了「HP」が組み合わされてPHPを形成します。
(5)サーバーMIMEファイルタイプ(コンテンツタイプ)バイパス
MIMEの役割:クライアントソフトウェアがさまざまな種類のデータを区別できるようにします。たとえば、WebブラウザーはMIMEタイプを使用して、ファイルがGIF画像か印刷可能なPostScriptファイルであるかを判断します。 WebサーバーはMIMEを使用して送信されるデータの種類を説明し、WebクライアントはMIMEを使用して受信したいデータの種類を説明します。これは、ブラウザによって渡されたファイルの形式を決定するためにサーバーが使用する重要なマーキングアイテムです。
一般的に使用されるファイルアップロードタイプMIMEテーブル:テキスト/プレーン(プレーンテキスト)
Text/HTML(HTMLドキュメント)
Text/JavaScript(JSコード)
アプリケーション/xhtml+xml(xhtmlドキュメント)
画像/gif(gif画像)
画像/jpeg(jpeg画像)
画像/PNG(PNG画像)
ビデオ/MPEG(MPEGアニメーション)
アプリケーション/オクテットストリーム(バイナリデータ)
アプリケーション/PDF(PDFドキュメント)
アプリケーション/(プログラミング言語)この言語のコード
Application/MSWORD(Microsoft
単語ファイル)
メッセージ/RFC822(RFC 822フォーム)
MultiPart/Alternative(HTMLフォームとHTMLメールのプレーンテキスト形式、同じコンテンツが異なる形式で表されます)
Application/x-www-form-urlencoded(postメソッドで提出されたフォーム)
MultiPart/form-data(投稿が送信されたときにファイルでアップロードされたフォーム)
バイパス方法:アップロードはファイルタイプを制限します。 Burpsuitを使用して、他のファイルタイプを変更して、次のようなファイルタイプを実行できます。Content-Type:Image/GIFおよびImage/JPEG。
(6)協力ファイルには、脆弱性バイパス
が含まれていますバイパス法1:スクリプトトロイの木馬と1文のコンテンツを含むアップロードファイルを実行します。前提条件:検証ルールは、サフィックス名ASP/PHP/JSPを含むファイルのコンテンツがトロイの木馬であるかどうかのみをチェックします。
(a)コンテンツが接尾辞名をチェックしないため、最初にトロイの木馬のコンテンツを含むTXTサフィックスファイルをアップロードします。
(b)次に、a .phpファイルを?phpのコンテンツにアップロードします( "アップロードされたtxtファイルパス");
この時点で、このPHPファイルはTXTファイルのコンテンツを参照して、検証をバイパスします。次のリストには、構文が含まれています。
Php
?phpは( 'アップロードされたtxtファイルパス');
ASP
! - #file='アップロードされたtxtファイルパス'を含める -
jsp
JSP:INCLDEページ='アップロードされたtxtファイルパス'/
または
%@include file='アップロードされたtxtファイルパス'%
方法2:ローカルファイルに脆弱性があり、条件形式をすぐに満たすドキュメントをアップロードできます。ドキュメントのコンテンツは、Trojan、例:test.txtです
アップロードされたTrojanファイル、eg:page?id=d:/www/test.txtなど、ファイル包含脆弱性を活用してください。
(7)URLバイパスのパラメーターを変更
Googleキーワード:inurl:Newslist.asp?nodecode=
/uploadfile.asp?uppath=picpathupname=uptext=form1.picpathのパラメーターuptextの値を変更します。
パラメーターPicpathが変更されていることがわかります。この脆弱性には、主にファイル名またはパスフィルタリングが含まれます。実際の戦闘でもっと観察してください。
URLのパラメーターでは、データを変更することができます
(8)デュアルファイルアップロードバイパス
次のコードを1.htmlとして保存してアップロードを変更します。
形状
action='http://edu2b.sinaapp.com/upfile_adpic.asp' method='post'
name='form1'
enctype='multipart/form-data'
入力名='filename1' type='file' class='tx1' size='40 '
入力名='filename2' type='file' class='tx1' size='40 '
入力タイプ='送信' name='送信'値='アップロード'
/形状
//最初のボックスでjpg画像を選択すると、ファイル名は「yueyan.jpg」です。
2つのボックスでCERファイルを選択します。ファイル名は「yueyan.cer」で、「アップロード」をクリックしてこれらの2つのファイルをプログラムに送信します。
3。ホワイトリストバイパス:
(1)Webコンテナと組み合わせた分析の脆弱性:
ディレクトリ解決IISの脆弱性とセミコロン解決脆弱性:
Trojan Horse Backlion.phpのファイル名をBacklion.php.abcに変更します(奇妙な未解決の接尾辞名はすべてです
わかりました)。まず、サーバーがファイル拡張子を検証すると、abcを検証します。拡張機能がサーバー側の白黒リストルールに準拠している限り、アップロードすることができます。
nginx empty byte脆弱性xxx.jpg%00.php xxx.jpg%00.phpのようなファイル名はphpコードに解析され、実行されます
Apacheの解析脆弱性、A.Php.rar A.Php.gifなどのタイプのファイル名をアップロードすることで、PHPファイルのフィルタリングメカニズムを回避できます。ただし、Apacheはファイル名を解析するときに右から左に読み取るため、認識されていない拡張機能に遭遇した場合、スキップされます。 RARおよびその他の拡張機能はApacheで認識できないため、このタイプはPHPとして直接認識されるため、PHPコードを注入する目的を達成します。
(2)%00アップロードバイパス
アップロード時にbacklion.asp.jpgを%00に変更します。つまり、backlion.asp%00.jpg。ファイルシステムが%00を読み取ると、ファイルが終了したと見なされ、backlion.asp.jpgのコンテンツをbacklion.aspに書き込み、攻撃の目的を達成します。すべてのホワイトリストベースのサフィックスチェックでは、%00をバイパスすることはできません。コードの実装中に、切り捨てられたアップロード脆弱性がある必要があります。アップロード形式は次のとおりです。
bk.asp%00.jpg
Path/updata/bk.asp(0x00).jpg
(4)ファイルパスバイパス
を突破しますファイルをアップロードすると、プログラムは通常、ユーザーが指定されたディレクトリにファイルを配置できるようにします。指定されたディレクトリが存在する場合は、ファイルをディレクトリに書き込みます。存在しない場合は、最初にディレクトリを作成してから書き込みます。たとえば、フロントエンドのHTMLコードには、非表示のタグ入力タイプ='Hidden'があります
name='extension' value='up'/サーバー側に次のコードがありますif(!is_dir($ extension)){//フォルダーが存在しない場合、フォルダーを作成します
mkdir($ extension);
}
攻撃者はツールを使用して、フォームの値を「up」から「pentest.asp」に変更して、文の画像をアップロードできます。ファイルを受信した後、プログラムはディレクトリを判断します。サーバーにPentest.aspディレクトリがない場合、このディレクトリを作成し、画像パスワードファイルをPentest.aspディレクトリに書き込みます。 WebコンテナがIIS 6.0の場合、Webトロイの木馬は解析されます。
次のディレクトリの場所の変更は、いくつかのフォームによってバイパスされます:アップロード/1.ASP%00.jpg
#ASPの変更されたディレクトリの場所%00インターセプト
bk.jpg #post文の馬やその他のホワイトリストを文として提出するトロイの木馬
-------アップロード/1.ASP%00.jpg/bk.jpg#最終生成されたファイルアクセスパス
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
アップロード/bk.asp/#
windows2003のディレクトリパスの後にbk.aspのディレクトリを追加しますiis6.0
bk.jpg
#投稿によってアップロードされたファイルタイプは1つの文章馬です
-----アップロード/bk.asp/aaabbk.jpg#最終URLアクセスパス
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
アップロード/bk.asp; #windows2003のディレクトリパスの後にbk.aspを追加するディレクトリiis6.0
bk.jpg#ファイルタイプは、郵便でアップロードされます1つの文でbk.jpgになります
-----アップロード/bk.asp; 14127900008.asp ##最終URLアクセスパス
ここでは、動的ネットワーク6.0を例として、通常の画像を最初にアップロードすると、Files/201210010321944973.jpgなどのファイルが生成されます。最初のブレークスルー方法:最初に画像ma ru 1.jpgの文をアップロードし、その後、そのfilepath値を「ファイル/backlion.asp□に挿入して変更します。
最後に生成されました:「files/backlion.asp□/201210010321944973.jpg、これは実際にはファイル/backlion.aspです
2番目のブレークスルー:最初に画像の文の文をアップロードしてから、filepath値を「backlion.asp」に傍受して変更します。最後に生成: "backlion.asp; 201210010321944973.jpg
Recommended Comments