设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 2377|回复: 1
收起左侧

PHP文件上载暴露任意文件

[复制链接]
发表于 2010-2-24 13:35:50 | 显示全部楼层 |阅读模式
<br>                   这是一个值得重视的问题,但并不如文章中说的那么严重,只是希望各位使用php上传文件是留心这个问题。   <BR><BR>【来源】   <BR>Secure  Reality  Pty  Ltd.  Security  Advisory  #1  (SRADV00001)   <BR>http://www.securereality.com.au,2000-09-04   <BR><BR>【影响系统】   <BR>几乎任何提供文件上载能力的PHP程序都受影响。   <BR><BR>【简介】   <BR>HP是一个功能很强的web脚注语言,已经广泛流行。它有一个特性就是易于处理从远程浏览器上载来的文件。这个功能运用得非常普遍,特别是在图片画廊、拍卖和web邮件风格的应用中。   <BR><BR>HP处理文件上载的方法容易使PHP应用程序工作于服务器上的任意文件,而不是用户上载来的文件。这通常会引导远程攻击者读取服务器上的任何文件,而它们通常只能被运行web服务器(一般是’nobody’)的用户访问。   <BR><BR>【影响】   <BR>1.暴露文件   <BR>2.经常会泄漏PHP代码   <BR>3.经常会泄漏数据库认证数据   <BR>4.可能使机器崩溃   <BR><BR>【细节】   <BR>当文件上载给一个PHP脚本时,PHP接收文件,赋予它一个随机名称,然后把它放在一个配置好的临时目录中。上载文件的信息将传递给PHP脚本,内容是4个全局变量。假设信息的文件域叫做’hello’,那么4个变量将会是:   <BR>$hello  =  临时文件名  (例如  ’/tmp/ASHDjkjbs’)   <BR>$hello_name  =  当文件位于远程计算机时的名称  (例  ’c:\hello.tmp)   <BR>$hello_type  =  文件的Mime类型  (例如  ’text/plain’)   <BR>$hello_size  =  上载文件的大小  (例如  2000  字节)   <BR><BR>临时文件会在脚本执行结束时自动删除,因此PHP脚本通常需要把它移到其它地方。例如,它可能会把文件拷贝到一个MySQL数据库之中。   <BR><BR>问题实际上存在于PHP缺省的行为。除非特意进行另外的配置(通过php.ini文件里的register_globals  =  Off),否则,提交时表格域指定的值在PHP脚本中会自动定义为全局变量。   <BR><BR>如果有一个表,它的输入域是:   <BR>&lt;input  name="test"&gt;   <BR>那么当PHP脚本被调用来处理表格输入时,就会设置全局变量$test。这是一个严重的安全弱点。问题非常简单,通过用户定义的输入搅乱全局名字空间,就会使环境不稳定。   <BR><BR>回到前面提到的示例,我们可以使用如下的表格输入创建四个变量$hello,   <BR>$hello_name,  $hello_type,  $hello_size:   <BR><BR>这就会引导PHP脚本工作于口令文件,结果通常是将它暴露给攻击者。   <BR><BR>【补丁】   <BR>目前没有。   <BR>建议改变php.ini,设置register_globals为off,  track_vars  为  on。                   <br><br>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-12-26 16:24 , Processed in 0.063207 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表