继续对Fortify的漏洞进行总结,本篇主要针对 Path Manipulation(路径篡改)的漏洞进行总结,如下:

1、Path Manipulation(路径篡改)

1.1、产生原因:

当满足以下两个条件时,就会产生 path manipulation 错误:

1. 攻击者可以指定某一文件系统操作中所使用的路径。

2. 攻击者可以通过指定特定资源来获取某种权限,而这种权限在一般情况下是不可能获得的。

例如,在某一程序中,攻击者可以获得特定的权限,以重写指定的文件或是在其控制的配置环境下运行程序。

例 1: 下面的代码使用来自于 HTTP 请求的输入来创建一个文件名。程序员没有考虑到攻击者可能使用像“../../tomcat/conf/server.xml”一样的文件名,从而导致应用程序删除它自己的配置文件。

String rName = request.getParameter("reportName");

File rFile = new File("/usr/local/apfr/reports/" + rName);

...

rFile.delete()

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

fis = new FileInputStream(cfg.getProperty("sub")+".txt");
amt = fis.read(arr);
out.println(arr);

1.2、修复方案:

方案一:创建一份合法资源名的列表,并且规定用户只能选择其中的文件名。通过这种方法,用户就不能直接由自己来指定资源的名称了。

但在某些情况下,这种方法并不可行,因为这样一份合法资源名的列表过于庞大、难以跟踪。因此,程序员通常在这种情况下采用方案二,黑名单+白名单 双重过滤路径的办法。

方案二:在输入之前,黑名单会有选择地拒绝或避免潜在的危险字符(例如下面例子过滤了..字符)。同时创建一份白名单,允许其中的字符出现在资源名称中,且只接受完全由这些被认可的字符组成的输入。

图1.2.1:合法路径的白名单字符

图1.2.2:过滤路径的非法字符公共方法

转载于:https://www.cnblogs.com/meInfo/p/9016157.html

Fortify漏洞之Path Manipulation(路径篡改)相关推荐

  1. Java防御路径操作(Path Manipulation) 的正确姿势

    路径操作(Path Manipulation)的漏洞,简言之就是在路径中包含有一些特殊字符(- 或者 / 等),导致可以访问到期望目录之外的文件. 比如路径地址是/usr/local/myapp/.. ...

  2. Java关键字fymd,JAVA程式碼一直被foritfy檢出有path manipulation

    我開發的JAVA程式碼在給Fortify檢測後,一直被查出有path manipulation- 上網查大都是教人用文字白名單過濾,但我有兩個path manipulation問題, 一是isr= n ...

  3. python os.path 模块 路径文件名 新建文件夹 文件 路径 是否存在

    os.path 模块主要用于获取文件的属性. 以下是 os.path 模块的几种常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(pa ...

  4. python标准库模块路径_Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单...

    而到了Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单.甚至可以说pathlib已经可以完全替代os.path,它完全采用面向对象的编程方式,因为P ...

  5. 【python初级】os.path.isfile(path)判断路径是否为文件

    [python初级]os.path.isfile判断路径是否为文件 背景 示例 背景 os.path.isfile(path)判断路径是否为文件. import os help(os.path.isf ...

  6. C++:实现量化Path generation路径生成测试实例

    C++:实现量化Path generation路径生成测试实例 #include "pathgenerator.hpp" #include "utilities.hpp& ...

  7. 解决Fortify漏洞:Insecure Randomness(不安全随机数)

    1. 解释 Fortify漏洞:Insecure Randomness(不安全随机数)指的是代码中使用了不安全或弱随机数生成器导致的安全漏洞.随机数在密码学应用.加密和解密等领域中经常被使用,如果生成 ...

  8. os.path.join() 路径拼接错误解决 “/“ 和 “\“

    几个基本函数: os.path.dirname(路径): 获取上一级路径 os.path.realpath(file): 获取当前文件的绝对路径 通过os.path.realpath(file)函数获 ...

  9. Fortify Path Manipulation

    1. 描述 在对文件进行操作(读,写,删除 ) 的过程中,未对文件路径进行有效的合法性校验,导致文件被任意下载,上传任意文件导致服务器被种植木马,getshell 2. 场景 任意文件下载 任意文件上 ...

最新文章

  1. 图文结合!一文搞懂 Redis 常用知识点!
  2. 《自己动手做交互系统》——导读
  3. SQL语言之DQL语言学习(九)多表查询/链接查询 SQL99学习
  4. VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)
  5. star rating
  6. 第一阶段冲刺周期10天的第6天进展报告
  7. java sub,Java 9子软件包跨模块拆分
  8. 市场需求分析报告及模板
  9. linux c Make file 的生成
  10. python实现百度贴吧自动签到
  11. 计算机关机后风扇还转,电脑关机后cpu风扇还在转怎么办?解决电脑关机后cpu散热器还在转...
  12. 【超详细】Windows平台安装 apache 2.4
  13. ServerSocket与Socket入门详解
  14. android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码
  15. 参与Gitlab开源库开发指南
  16. centos安装cerebro
  17. 第二个c程序,日语208音练习
  18. Golang源码探索----GC的实现原理(6)
  19. Docker搭建+项目实训(多次的作业的综合)
  20. 计算机更新80072f76,win10系统更新升级出现错误代码0x80072f76的解决方法

热门文章

  1. Java 小练习(图形面积计算器)
  2. 计算机的声音图标打不开怎么回事,win10电脑音量图标打不开怎么办
  3. 英文字母间隔很大怎么解决?全角半角的概念
  4. java去掉首尾字符_去掉字符串首尾指定的字符或空格
  5. 非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究
  6. 怎样删除oracle注册表信息
  7. Samba服务和FTP服务
  8. 基于Stm32的WiFi多功能LED
  9. 找不到 Microsoft Excel Driver ODBC 驱动程序的安装例程 解决方案
  10. 北京熊通科技 招聘FPGA研发工程师