Fortify漏洞之Path Manipulation(路径篡改)
继续对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(路径篡改)相关推荐
- Java防御路径操作(Path Manipulation) 的正确姿势
路径操作(Path Manipulation)的漏洞,简言之就是在路径中包含有一些特殊字符(- 或者 / 等),导致可以访问到期望目录之外的文件. 比如路径地址是/usr/local/myapp/.. ...
- Java关键字fymd,JAVA程式碼一直被foritfy檢出有path manipulation
我開發的JAVA程式碼在給Fortify檢測後,一直被查出有path manipulation- 上網查大都是教人用文字白名單過濾,但我有兩個path manipulation問題, 一是isr= n ...
- python os.path 模块 路径文件名 新建文件夹 文件 路径 是否存在
os.path 模块主要用于获取文件的属性. 以下是 os.path 模块的几种常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(pa ...
- python标准库模块路径_Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单...
而到了Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单.甚至可以说pathlib已经可以完全替代os.path,它完全采用面向对象的编程方式,因为P ...
- 【python初级】os.path.isfile(path)判断路径是否为文件
[python初级]os.path.isfile判断路径是否为文件 背景 示例 背景 os.path.isfile(path)判断路径是否为文件. import os help(os.path.isf ...
- C++:实现量化Path generation路径生成测试实例
C++:实现量化Path generation路径生成测试实例 #include "pathgenerator.hpp" #include "utilities.hpp& ...
- 解决Fortify漏洞:Insecure Randomness(不安全随机数)
1. 解释 Fortify漏洞:Insecure Randomness(不安全随机数)指的是代码中使用了不安全或弱随机数生成器导致的安全漏洞.随机数在密码学应用.加密和解密等领域中经常被使用,如果生成 ...
- os.path.join() 路径拼接错误解决 “/“ 和 “\“
几个基本函数: os.path.dirname(路径): 获取上一级路径 os.path.realpath(file): 获取当前文件的绝对路径 通过os.path.realpath(file)函数获 ...
- Fortify Path Manipulation
1. 描述 在对文件进行操作(读,写,删除 ) 的过程中,未对文件路径进行有效的合法性校验,导致文件被任意下载,上传任意文件导致服务器被种植木马,getshell 2. 场景 任意文件下载 任意文件上 ...
最新文章
- 图文结合!一文搞懂 Redis 常用知识点!
- 《自己动手做交互系统》——导读
- SQL语言之DQL语言学习(九)多表查询/链接查询 SQL99学习
- VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)
- star rating
- 第一阶段冲刺周期10天的第6天进展报告
- java sub,Java 9子软件包跨模块拆分
- 市场需求分析报告及模板
- linux c Make file 的生成
- python实现百度贴吧自动签到
- 计算机关机后风扇还转,电脑关机后cpu风扇还在转怎么办?解决电脑关机后cpu散热器还在转...
- 【超详细】Windows平台安装 apache 2.4
- ServerSocket与Socket入门详解
- android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码
- 参与Gitlab开源库开发指南
- centos安装cerebro
- 第二个c程序,日语208音练习
- Golang源码探索----GC的实现原理(6)
- Docker搭建+项目实训(多次的作业的综合)
- 计算机更新80072f76,win10系统更新升级出现错误代码0x80072f76的解决方法