ホームページ >バックエンド開発 >PHPチュートリアル >Windows ファイル システム メカニズムによって引き起こされる PHP パス ブラスト問題の分析、_PHP チュートリアル
1. 冒頭の挨拶
今回公開するのは、以下のWebページでの質問に対するテスト結果です。
http://code.google.com/p/pasc2at/wiki/簡体字中国語
リーリー
テストphpバージョン: PHP4.9、PHP5.2、PHP5.3、PHP6.0
テストシステム: WINXP SP3 X32、WINXP SP2 X64、WIN7、WIN2K3
テストの結果、この脆弱性はすべての Windows + PHP バージョンに影響するという結論に達しました
2. ファズテストの結果の詳細な調査
このバグについてさらに詳しい情報を調査し続けるために、デモにいくつかの変更を加えました:
リーリー
4.更深入的利用方法
除了以上已经展示的方法,你可以用下面的姿势来绕过WAF或者文件名过滤
请思考该例:
<?php file_get_contents("/images/".$_GET['a'].".jpg"); //or another function from Table 1, i.e. include(). ?>
访问test.php?a=../a<%00
可能出现两种结果
Warning: include(/images/../a<) [function.include]: failed to open stream:Invalid argument in。。。 Warning: include(/images/../a<) [function.include]: failed to open stream:Permission denied。。
如果是第一种情况,说明不存在a打头的文件,第二种则存在。
此外,有记录显示,有时网站会抛出如下错误:
Warning: include(/admin_h1d3) [function.include]: failed to open stream: Permission denied..
这说明该文件夹下存在一个以上以a打头的文件(夹),并且第一个就是admin_h1d3。
5.结论
实验告诉我们,php本身没有那么多的漏洞,我们所看到是:过分的依赖于另一种程序语言(注:如文中的漏洞产自与winapi的一个BUG),并且直接强 制使用,将会导致细微的错误(bug),并最终造成危害(vul).这样便拓宽了模糊测试的范畴(译者注:并不仅仅去研究web层面,而深入到系统底层),并最终导致IDS,IPS的规则更新。诚然,代码需要保护,需要补丁,需要升级与扩充。但是,这并不是我们真正要去关注的问题。在当下,我认为我们 更谨慎地去书写更多更严厉的过滤规则,正如我们一直在做的一样。任重道远,精益求精。
因为这是基础应用层的问题,所以我们猜想类似的问题可能出现在其他web应用中。于是我们还测试了mysql5,而实验结果表明,mysql5并不存在类似的漏洞。但是我们仍认为:类似的漏洞将会出现在诸如Perl、Python、Ruby等解释性语言上。
6.Referer
PHP application source code audits advanced technology: http://code.google.com/p/pasc2at/wiki/SimplifiedChinese MSDN FindFirstFile Function reference: http://msdn.microsoft.com/en-us/library/aa364418(v=vs.85).aspx MSDN comments history: http://msdn.microsoft.com/en-us/library/community/history/aa364418(v=vs.85).aspx?id=3 MSDN article «Naming Files, Paths, and Namespaces»: http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx Technet article «Managing Files and Directories»: http://technet.microsoft.com/en-us/library/cc722482.aspx Paper «Technique of quick exploitation of 2blind SQL Injection»: http://www.exploit-db.com/papers/13696/
=============================================== == =================
完全なテキスト。
注: この記事は 2011 年末に発行されたホワイト ペーパーであり、バグはまだ存在します。数か月前に CUIT の CTF に取り組んでいたときにこのバグの悪用を発見しました。そのときにこの記事を読んだだけで、ディレクトリを実行するための php スクリプトを書きました。もう何もすることがないので、翻訳と整理をしました。