ファイルの解析の脆弱性の概要(IIS、APACHE、nginxの)

(本体からこの記事https://blog.csdn.net/qq_36119192/article/details/82834063

ファイルの解析の脆弱性

ファイル、不適切な操作やウェブマスター自身のWebサーバの脆弱性が主な原因の脆弱性を解析するいくつかの特別なファイルは、IIS、Apacheのは、nginxのか、他のWebサーバーは、いくつかのケースで実行するスクリプトファイルを解釈している原因となります。

 

たとえば、サイト管理者はこれらのファイルは、スクリプトファイルとして実行されているなどphp2、PHTML、ASCX、その結果、適切に設定します。そして、さらにいくつかの例によるサーバ構成の.html、.xmlファイルや他の静的ページファイルの接尾辞にエラーの管理者は、スクリプトファイルの実行として扱われます。

 

しかし、Webサーバ自体、リードスクリプトファイルなどの特殊ファイルへの解析の脆弱性や脆弱性のほとんどが実行されます。

 

 

IISの解析の脆弱性

ディレクトリの解析の脆弱性(/test.asp/1.jpg)

IIS5.x / 6.0では、*の.asp、*。アサ、*。Cerを、*サイト内のフォルダの名前を確立する。のCDXフォルダ、そのカタログファイルのいずれかの拡張子はIISの通りですASPは、解釈し、実行するファイル。たとえば、ディレクトリTest.aspをを作成し、その後、/test.asp/1.jpgを実行するためのASPファイルとして扱われます。ハッカーは、パスのフォルダのアップロードを制御することができていると、あなたは関係なく、変更の殻を取るために名前を変更することはできませんあなたのイメージをアップロードすることができます

 

ファイル名の解析の脆弱性(Test.aspを、.JPG)

IIS5.x / 6.0では、セミコロンは、そのxie.aspを解決しない。サーバーがxie.aspあるよう.JPGが見られます。そこIIS6.0デフォルトの実行可能ファイルはまた、これらの2つのASP .asa .cerのに加えて、含まれています。そして、いくつかのサイトは、単にその拡張子を確認し、ファイルをアップロードするユーザーを確認します。私達はちょうど* .aspファイルをアップロードして、.JPG、* ASA ;. .JPG、* CER ;. .jpgファイルの拡張子は、サーバーを介して確認することができ、サーバは、ASPファイルとしてそれを実行します。

 

不正な形式の解析の脆弱性(test.jpg / *。PHP)

マイクロソフトは、この脆弱性のIIS7.0のIIS6.0を解決するためのパッチをリリースしており、Microsoftは急いでIIS7.5をリリースしましたので、IIS7.0バーストは、より深刻な変形の解析の脆弱性を期待していませんでした

IIS7.0、デフォルトの高速CGI開いた位置では、我々は、画像の内側に次のコードを記述します

 

test.jpg形式としてファイルを保存してアップロード/アップロードへのパスは、アップロードが成功したダイレクトアクセス/upload/test.jpg/x.phpだったと仮定して、サーバーにアップロードし、この時の魔法は、プレイ奇形の解決の問題になります。サーバのPHPファイルが実行されるようにtest.jpgは、処理されるので、コード内の画像が実行されます。私たちは、このトロイの木馬は/アップロードディレクトリ内のファイルshell.phpを作成し、マジックワードを発見するでしょう。

 

一時的な解決策:cgi.fix_pathinfo 0に設定

 

解析の脆弱性と脆弱性を解析し、次のnginxの話すは同じです。

 

その他の解析の脆弱性

Windows環境では、xx.jpg [ スペース]   または  xx.jpg。   ファイルのこの2種類が存在することが許可されていないそう名付けられた場合、Windowsはスペースを削除してデフォルトになりますかハッカーがキャプチャすることができ、加えてファイル名バイパスブラックリストにスペースまたはポイント。アップロードが成功し、スペースや窓のポイントは自動的に排除されます。

 

 

Ngnix解析の脆弱性

不正な形式の解析の脆弱性(test.jpg / *。PHP)

脆弱性の理由:

 

cgi.fix_pathinfo開かれたPHPの設定ファイルphp.iniファイル

PHPの実行のような他の形式のファイルの解析を可能にすることで得られる誤った構成security.limit_extensions、/etc/php5/fpm/pool.d/www.conf

nginxのでは<0.8.03環境は、我々は新しいファイルを作成し、それは言う:<PHPのphpinfo()>、その名前に変更:?? Test.jpg

 

アクセスhttp://192.168.10.139/test.jpgブラウザのエラーを解析表示写真。アクセスhttp://192.168.10.139/test.jpg/test.phpブラウザ表示中:アクセスが拒否されました。.. これは奇妙である、test.jpgファイルがディレクトリではありません、test.phpをは存在しないファイルで、何のアクセス/test.jpg/test.phpは404を報告していないが、ディスプレイのアクセスが拒否されました。..

 

 

 

その理由は、それが、nginxのは/test.jpg/test.php後、接尾辞を見ては、そのファイルはその後に対処するためのPHPに転送し、PHPファイルとみなされ、.PHPである(URIは、と言うことは、より専門的な)ファイルパスを取得することです。最後/test.phpを削除する、存在しないルック/test.jpg/test.phpをPHP、および/test.jpgのが存在を参照してください、彼らはファイルが実行されるよう/test.jpgを与えた、とサフィックスので。 JPG、これは、PHPファイルではないことを、PHP、Accessに戻るには、拒否されました。..

 

これはPHPのオプションが含まれます。cgi.fix_pathinfo、デフォルト値は、オープンを示し、1です。このオプションは、それが何であるかを使用開いていますか?名前で処理するためのファイル・パスです。たとえば、存在しない場合、ファイルがパス/aaa.xxx/bbb.yyy/ccc.zzzのPHP、/aaa.xxx/bbb.yyy/ccc.zzzに遭遇したとき、最後の/ccc.zzzを削除します/aaa.xxx/bbb.yyyその後、/aaa.xxx/bbb.yyy場合、ファイル/aaa.xxx/bbb.yyy/ccc.zzzとして/aaa.xxx/bbb.yyyそこに置かれている場合、そこにあるかどうかを判断しますまだ/bbb.yyy削除していき、その後、存在しない、というように。

 

php.iniの設定ファイルのオプション。このオプションがオフになっている場合、アクセスhttp://127.0.0.1/test.jpg/test.phpだけでファイルが見つかりませんを返します。しかし、おそらく他のいくつかのエラーにつながるオプションをオフにし、それは一般的にデフォルトで有効になっています。

 

しかし、今、私たちはいないPHPファイルとしてtest.jpgが実行され、成功したコードを実行することができたが、PHPの新しいバージョンは、実行可能ファイルの拡張子を制限し、security.limit_extensionsを導入しているため、アクセスが拒否されまし返され、のみ.PHPの実行を許可デフォルトではなかったですファイル。

 

この脆弱性は、脆弱性を悪用し、それは難しい、正常であることを作り、導入security.limit_extensionsに起因する不適切なnginxのバージョンとは何の関係も発生していないPHPでnginxのの設定が、PHPの高いバージョンでは、によるものです。

 

なぜPHPでnginxのは、この問題を持っているだろうか?ちょうど1つの一見nginxのための.phpとURLのパス名が終了し、その後、関係なく、ファイルは直接PHPの処理に、存在するかどうかの。そして、などのApache、として、それが存在する場合、ファイルが存在するかどうかを見て、次に何をすべきかを決定します。cgi.fix_pathinfoは、PHPが正しくファイルが既に存在するかどうかを判断する前に、cgi.fix_pathinfoは何の使用を送信していない場合は、持っているPHPで、この問題は自然に存在しなかったでしょう。(この時点でIISとnginxのが同じで、同じ問題があります)

 

00パーセントヌルバイトコード解析脆弱性

原理:起因する矛盾PHPコードにヌルバイトの面でNgnix 00パーセントとバックエンドFastCGIプロセスは、画像に埋め込まれ、次いで00.php xxx.jpg%以下にアクセスしてコードを実行することができます

 

nginxの次のバージョンでは、我々は、画像内のPHPコードを埋め込み、次いで00.php xxx.jpg%以下にアクセスしてコードを実行します

 

 nginxの0.5。*

 nginxの0.6。*

 nginxの0.7 ​​<= 0.7.65

 Nginxは0.8 <= 0.8.37

 

CVE-2013-4547(%20%00)

インパクトnginxのバージョン:nginxの0.8.41〜1.5.6

 

nginxのURIパース混乱と危険にさらすが、非コード拡張の制限によるスペースバイパスへの攻撃を許可する際に、この脆弱性の原則は、有限状態マシンにつながる違法と仕上げスラッシュ文字スペース(00パーセント)です。それは何を意味するのでしょうか?最後の文字のファイル名はスペースであることに注意、「file.jpg」:例えば、サーバー上のファイルがあると仮定します。あなたが訪問することができます:

 

http://127.0.0.1/file.jpg \ 0.php 

nginxのは、ファイル「file.jpg」接尾辞「の.php」を考えてみましょう。

 

テストの下で、テストはしてnginxの/ 1.0.15で行いました。最初のファイル名にスペースが含まれていることを、ノートを「test.htmlという」という名前の画像を準備します。ブラウザでファイルにアクセスするブラウザが自動的に20%のスペースとしてエンコードされますので、その後、あなたが404を取得する、ファイルが「test.htmlという%20」は、サーバー上に存在しません。

 

テストの目標は、nginxのは、ファイルがブラウザに表示された画像ファイルと正しくだと思うようにすることです。符号化されていないスペースやカットオフ文字(\ 0)、どのようにそれを行うには、私たちが欲しいのですか?げっぷSuiteはフェッチするために、ブラウザによって送信された要求パケットを使用して、我々は方法を変更したい、オリジナルのURLは次のとおりです。http://192.168.56.101/test.htmlAAAjpg、最初に「A」、「20」( 「」)「2E」(「」ASCIIコードにASCIIコードシンボルスペース)「」「00」(スラッシュ)第二、第三、示されるように

 

 

 

修正後参照するには、ブラウザに要求を転送:

 

 

 

我々は成功した抜け穴を使用しています!しかし、それは何を使用ですか?私たちは、コードが実行されるようにしたいです。

 

テスト続行文書の、準備「test.jpg」、最後の文字のファイル名がサーバーにアップロードさ、スペースであることに注意。ファイルの内容:

 

 

 

げっぷパケットキャプチャとスイートと、元のURLを変更するには、次のとおりです。http://192.168.56.101/test.jpg...php、代わりに第1、第2、第20の後に00を変更JPG 『』「」。以下に示すとおり

 

 

 

ブラウザで見られる要求、Forword修正後:アクセスは大丈夫、これは、拒否されました。

 

この番組Nginxはこの要求を受信した後、ファイルが実際にちょうどPHPファイルの拡張子は「.JPG」と拒否されている参照してくださいするには、実行するPHPにPHPファイルとして「test.jpg」です。このように、nginxのは、脆弱性の存在を確認します。しかし、security.limit_extensionsの存在による、主要な私たちは、この脆弱性を悪用することはできません

 

Apacheの解析の脆弱性

ファイル名の解析の脆弱性

Apacheの起動決意は、それが構文解析を認識されない場合は、右から左に解決した後、決意に委ねられています。例えばxie.php.owf.rar .owfとサフィックス.RAR 2つの認識できない解析Apacheの、Apacheはxie.php.owf.rarのxie.phpに解析されるであろう。それは法的な接尾辞であったかどうかを決定するためにどのようにこの脆弱性テストの重要な利点は、xie.php.rara.jpg.pngをアップロードしようとすることができます。..(あなたがサフィックスがアップ書かれている知っている)テストにそれが正当な接尾辞であるかどうか。それは徐々に上向き、識別を任意のサフィックスを認識しません。

 

レアサフィックス

コンピュータの世界では、世界の創造以来、それはカラフル解放されます。mime.typesファイルを覚えていますか?ファイル「PHP」の三個の文字で検索し、その結果は次の通りです:

  1.   ヴェルナー・ヤセル@:〜$猫は/etc/mime.types | grepのPHP
  2.   #アプリケーション/ X-のhttpd-phpのPHTML PHT PHP
  3.   #アプリケーション/ X-のhttpd-PHP-ソースPHPS
  4.   #アプリケーション/ X-HTTPD-PHP3のPHP3
  5.   #アプリケーション/ X-のhttpd-PHP3-前処理php3p
  6.   #アプリケーション/ X-HTTPD-PHP4のPHP4
  7.   #アプリケーション/ X-HTTPD - PHP5のPHP5

正規表現を覚えておいてください "+ \ペーハー(?| T | P [345] TML)を.. $" それは、正規表現のマッチングは、PHPを持っているだけでなく、そこにPHP3、PHP4、PHP5、PHTとPHTML。

まあ、元のPHP、でもPHTML、PHT、PHP3、PHP4とPHP5 PHPファイルの拡張子だけではなくApacheとPHPが承認したプログラムです。私は「.phpの」だけを認識し、本当に目を見張るです。それだけでなく、のようなものだPythonプログラムファイルPY接尾辞で、PYCとピョもあります。アップロードプログラマは、それのその知識を知識豊富な知っているかどうかをフィルタリングルールを書くのか?私が思うに、おそらく知りません。これらの「レア」の拡張子で、それはいくつかやる、バイパスセキュリティチェックすることが可能となる「悪いことを。」

私はApache2.4.7テストでUbuntu14.04 +にいるよ、文書のtext.phpを用意し、その内容は、古典的なHello Worldのです。

  <?phpのエコー 'こんにちは、世界'; ?>

次にブラウザ、成功したショー「HELLO WORLD」で開きます。そしてテストのために、接尾辞、さまざまなファイル拡張子を変更します。テスト結果は、PHP、PHTML、PHT、PHP3、PHP4とPHP5のサフィックスにある成功した「HELLO WORLD」を見ることができます; PHPSサフィックスに、403エラーが報告されます、禁断; php3pサフィックスには、ブラウザの場合とソースコードを参照してください。

 

 

 

.htaccessファイル

Apacheの.htaccessファイルは、関連するディレクトリの下に設定ページを担当してコンフィギュレーション・ファイルサーバ、です。.htaccessファイルを通じて、次のことができます。ページの301リダイレクト、カスタム404エラーページには、許可するファイルの拡張子を変更する/特定のユーザーまたはディレクトリへのアクセスをブロックは、ディレクトリの一覧を禁止され、設定されるデフォルトの文書には、IISのプラットフォームが存在しないなどの特徴httpd.confファイルにデフォルトで有効になっているファイル、有効または無効に設定。

 

 .htaccessファイルは、発効のための前提条件であります:

オープンへのmod_rewriteモジュール

AllowOverrideのすべて

 

#1:シェルスクリプトの名前が含まれているすべてのファイルがPHPとして実行することは.htaccessこの手段

<FilesMatch "殻"> 

でSetHandlerがapplication / x-httpd-phpの 

</ FilesMatchc>

 

#2:これは、コードの意味は、PHPの形式で解析するファイル名の拡張子.jpgのファイル形式を可能にされます

AddTypeのがapplication / x-httpd-phpのの.JPG

おすすめ

転載: www.cnblogs.com/vege/p/12444476.html