【发布时间】:2015-02-07 21:55:30
【问题描述】:
我为我开发的应用程序运行了灰盒评估测试,但我有一些漏洞,具体是输入验证类别中的路径操作。
我的代码中有:
if (move_uploaded_file($_FILES["file"]["tmp_name"],"contacts_load/" . $fileName)) {
if ($import = fopen ("contacts_load/" . $fileName,"r")) {
和:
unlink("contacts_load/" . $fileName);
问题出在contacts_load/。
您将在下面找到有关此的一些信息:
描述:允许用户输入控制文件系统操作中使用的路径可能使攻击者能够访问或修改受保护的系统资源。
具体场景:
当满足以下两个条件时会发生路径操作错误:
攻击者可以指定在对 文件系统。
通过指定资源,攻击者获得了以下能力: 否则是不允许的。
例如,该程序可能赋予攻击者覆盖指定文件或以攻击者控制的配置运行的能力。
如何防止这种特定场景的路径操纵?
【问题讨论】:
-
$fileName来自哪里? -
从这里:
$fileName = Date("YmdHis")."_".$_FILES["file"]["name"];,但问题出在路径上 (contacts_load/)。 -
$_FILES["file"]["name"]已包含请求中提供的文件名的basename。 -
问题在于
$_FILES["file"]["tmp_name"]。它是用户提供的,是一个路径/文件。 -
你是对的,我很困惑,问题在于文件名,因为攻击者可以提供诸如“../../tomcat/conf/server.xml”之类的文件名并导致文件系统有问题。
标签: php security validation path-manipulation