前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fortify Audit Workbench 笔记 Path Manipulation

Fortify Audit Workbench 笔记 Path Manipulation

作者头像
用户1637609
发布2020-03-17 18:21:39
2.4K0
发布2020-03-17 18:21:39
举报
文章被收录于专栏:马洪彪

Path Manipulation

Abstract

通过用户输入控制 file system 操作所用的路径,借此攻击者可以访问或修改其他受保护的系统资源。

Explanation

当满足以下两个条件时,就会产生 path manipulation 错误: 1. 攻击者能够指定某一 file system 操作中所使用的路径。 2. 攻击者可以通过指定特定资源来获取某种权限,而这种权限在一般情况下是不可能获得的。 例如, 在某一程序中,攻击者可以获得特定的权限,以重写指定的文件或是在其控制的配置环境下运行程序。 例 1: 下面的代码使用来自于 HTTP 请求的输入来创建一个文件名。 程序员没有考虑到攻击者可能使用像 "../../tomcat/conf/server.xml" 一样的文件名,从而导致应用程序删除它自己的配置文件。

代码语言:javascript
复制
String rName = request.getParameter("reportName");
File rFile = new File("/usr/local/apfr/reports/" + rName);
...
rFile.delete();

例 2: 下面的代码使用来自于配置文件的输入来决定打开哪个文件,并返回给用户。 如果程序在一定的权限下运行,且恶意用户能够篡改配置文件,那么他们可以通过程序读取系统中以 .txt 扩展名结尾的所有文件。

代码语言:javascript
复制
fis = new FileInputStream(cfg.getProperty("sub")+".txt");
amt = fis.read(arr);
out.println(arr);

Recommendation

防止 path manipulation 的最佳方法是采用一些间接手段: 例如创建一份合法资源名的列表,并且规定用户只能选择其中的文件名。 通过这种方法,用户就不能直接由自己来指定资源的名称了。 但在某些情况下,这种方法并不可行,因为这样一份合法资源名的列表过于庞大、难以跟踪。 因此,程序员通常在这种情况下采用黑名单的办法。 在输入之前,黑名单会有选择地拒绝或避免潜在的危险字符。 但是,任何这样一份黑名单都不可能是完整的,而且将随着时间的推移而过时。 比较好的方法是创建白名单,允许其中的字符出现在资源名称中,且只接受完全由这些被认可的字符所组成的输入。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Abstract
  • Explanation
  • Recommendation
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档