ファイルの解析の脆弱性の概要-Nginx

nginxの解析の脆弱性

原理:解決するためにPHPを実行するために、PHPファイルの種類として/*.php,nginxれるファイルとして、任意のファイル名を再度追加
場合:xx.jpg、ソースである<PHPのphpinfo()? >
アクセスXX .JPGは、xx.jpgの追加/xx.phpの後ろに、あなたはnginxの解析の脆弱性を達成することができたときに、xx.jpgの解決には、PHPを実行します

我々ます実験上記:私は統合環境phpstudyのある、ここで使用しています
ここに画像を挿入説明
アクセスするブラウザは:
ここに画像を挿入説明
ここに画像を挿入説明
アクセスへの復帰を否定し、なぜですか?
nginxのはxx.jpg / xx.phpを参照してください、.phpの参照、それを知っている;さんが再びカーディングプロセスを取る、nginxのは、それがに対処するための絵に上、画像の種類であることを知っている、のmime.typesによると、xx.jpgを見てみましょうPHPの種類、xx.jpg / xx.phpサフィックスです.PHP、xx.jpg / xx.phpこのドキュメントの実装に、何も発見xx.phpの実行はありません、削除/参照PHP、に対処する上でのPHP行くですxx.php、楽しみにし続け、xx.jpgを見つけ、ではなく、PHP PHPの型.JPGそれはアクセスが拒否されまし返し、PHPを実行しないように、彼は知っていました。

なぜ、これはphp.iniの設定理由だった、それを削除するPHP遭遇することができます。cgi.fix_pathinfo = 1、通常はデフォルトでは、彼が1だったとき、それは時にPHPの参照を想定し、そのオープンPHPファイルパスの修理を意味し、1でありますこのファイルaa.xxx/aa.yyy/aa.zzz、PHPファイルは(覚えて、このaa.xxx/aa.yyy/aa.zzz見つからないときaa.xxx / aa.yyy / aa.zzzがいっぱいです! )、(リターンアクセスが拒否されましたか分からない。)、aa.xxx/aa.yyyこのファイルが存在する場合、存在し、それを認識PHP検出するかどうか、PHPを実行する決意をバック/aa.zzzを削除し、そうでない場合は検出AA、xxxにファイルが存在し、そのために、/aa.yyy削除
注:すべての記事の実験、すべてのデフォルトのPHPの修復機能によって有効(cgi.fix_pathinfo = 1)

xx.jpg / xx.php上にテストする場合、上記に述べたように、私はまだ、それを解決することはできませんなぜ、cgi.fix_pathinfoは、上にある、PHPは、このタイプの.jpgを知らない、あなたはsecurity.limit_extensionsでHTTPの構成-fpm.confに必要(設定nginxの後に再起動する必要性)を空にする
例:用security.limit_extensionsデフォルト設定;security.limit_extensions = .php .php3 .php4 .php5
ここに画像を挿入説明
このことは何を意味するのでしょうか?この表現は、security.limit_extensionsは、PHPのような他の種類のファイルを解決することができます私の理解では、というPHPが.jpgのを知っていない理由は何であるか(リミットそれを)、タイプPHPの接尾辞ノウハウの規定であり、あなたが知っている、いつでも知っているPHPの接尾タイプ、分析され、実行されるPHPのフォーマットは、security.limit_extensionsが唯一の.php .php3 .php4 .php5を認識し始め、今で空白に置き換え、PHPサフィックス質問があることを、任意の型を認識し、一部の人は私のセットを言いますsecurity.limit_extensions =空に、私は直接アクセスxx.jpg、xx.jpgは、PHPの実行解決されていないことができ、なぜ?実際には、security.limit_extensionsは=実際に空にPHPの実行として解析任意のファイルの拡張子を表していますが、最初にすべてのこのxx.jpgのように、ファイルnginxの裁判官を通過することです、知っている、nginxのは、あなたは、直接絵として彼を判断し、彼を知っていますそれは車輪を修復された後に画像処理など、最初nginxのそのハードルを超えるような使用xx.jpg / xx.php又はxx.jpg / XX PHPに修復xx.jpgを実行するために、PHP実行(かどうかnginxののノウハウを決定するために、右から左に)の.php / xx.xxoo、使用が彼に言う、nginxのを欺く.PHP、これは私のPHPファイル、行くためのPHPです。
あなたは、同じ目的を持っている脆弱性を解析IIS7.xを見ることができる脆弱性の概要を解析したファイルを-iis
あなたがしたい場合xx.jpgは、PHPを解析することができ、あなたは、configure nginx.conf、Apacheの設定はhttpd.confのAddTypeのようには(もちろんこれは私の推測である、ない、nginxのはだけで、URLでないかもしれない持っていることができます解決PHPの実行にxx.jpgに/xx.php xx.jpgバックを追加し、すべての後、誰もが)異なるミドルウェアまあです

:だからですnginxの条件を悪用、総括
接尾辞のhttp-fpm.conf security.limit_extensions =の(1)nginxのは、空または実行解析する他の指定されたPHPの
オープンファイルの修理PHP(2):php.iniのをcgi.fix_pathinfo = 1

その後、我々は、プロセスについて話された脆弱性を再現することができ
xx.jpg出典:
ここに画像を挿入説明
使用:xx.jpg / xx.php、右からの.php参照、理解サフィックスを見つけるために、左にNginxは、意志のxx.jpg修理するためにPHPを実行する/xx.phpとxx.jpg / xx.phpがxx.jpgのが存在を発見し、時にPHPの修理修理に進み、削除/xx.php存在しない、それがPHP実行する決意xx.jpgます見つかっ
ここに画像を挿入説明
使用を2:/ xx.php / xx.xxoo、右から知らない、.xxoo参照、理解サフィックスを見つけるために、左にnginxのは、知っている.PHP参照、xx.jpg / xx.php / xx.xxoo xx.jpg修理するためにPHPを実行したためにxx.jpg / xx.php / xx.xxoo存在しない、削除/xx.xxooは、修理に進み、見つかったxx.jpg / xx.php、/ XX時にPHPの修復を削除存在しません。 PHP、修復が続く、見出さxx.jpg存在、実行するPHP xx.jpgを解決する
ここに画像を挿入説明
防御手法を:
(1)php.iniで提供= 0 cgi.fix_pathinfo
(2)PHP-fpm.conf security.limit_extensions =設けられています。解決の実行にのみPHP .PHPサフィックスを許可するの.php、

注:私は実験室のLinuxを書いた、窓のすべてが同じ別の問題であり、ではない、例えば、何のWindowsのphp-fpm.confプロファイルが存在しない、あなたは直接の脆弱性を解析するnginxの使用できるソースコードにアクセスする際に、画像が表示されます。写真などを返しません。
私はphpstudyは、統合された環境を取り、いくつかのファイルのパスとagnixオンライン環境またはドッキングウィンドウと直接矛盾使用していた記事では、パスと述べました。
いくつかのものは、元を使用する必要があり、書き込みの準備ができて、このディレクトリトラバーサルは、設定パラメータや環境を再現することはできません、自宅があるかもしれない-私はphpstudyを使用していません

公開された148元の記事 ウォン称賛61 ビュー60000 +

おすすめ

転載: blog.csdn.net/qq_41617034/article/details/105091033