我尝试了许多不同的方法fileInfo
、filestream
等…无法绕过File. Create(DirName
DirName=ConfigurationManager.AppSettings("DirectoryName")
Dim fileName As String = PatientLastName & "_" & PatientFirstName & "_" & CurrentPatEntityID & ".pdf"
For Each c In Path.GetInvalidFileNameChars()
If fileName.Contains(c) Then
fileName = fileName.Replace(c, String.Empty)
End If
Next
Dim stream As FileStream = File.Create(DirName & fileName)
stream.Write(FinalContents, 0, FinalContents.Length)
stream.Flush()
stream.Close()
stream.Dispose()
共1个答案
匿名用户
该漏洞似乎与路径遍历攻击有关。
路径遍历攻击旨在访问存储在 Web 根文件夹外部的文件和目录。通过浏览应用程序,攻击者会寻找存储在 Web 服务器上的文件的绝对链接。通过操作引用文件的变量,使用“点-点-斜杠(../)“序列及其变体,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置和关键系统文件,受系统操作访问控制的限制。攻击者使用“../“ 序列向上移动到根目录,从而允许在文件系统中导航。
这个描述来自OWASP。(进一步信息:https://www.owasp.org/index.php/Path_Traversal)
我假设PatientLastName,PatientFirstName变量在用户(攻击者)的控制下。这意味着我们不能信任这个变量。
还让我分享一些关于GetInvalidFileNameChars函数的信息。
The following characters are invalid in a path:
Char Hex Value
", 0022
<, 003C
>, 003E
|, 007C
for循环查找这些字符,因为我们不能在Windows操作系统的文件名中使用这些字符之一。但是使用反斜杠似乎没有障碍 ( \ ).
假设 PatientLastName 变量包含 “..\ ..\ ..\测试”。因此文件名变量类似于“..\ ..\ test_DATA_DATA.pdf“ .当您尝试使用 File.Create(目录名称)创建该文件时
为了缓解,您也可以将反斜杠替换为空( ../../ 是 .. 的编码形式。\ ..\ !也请考虑一下)。Fortify可以再次将此代码标记为易受攻击,但这次将是误报。
更多信息,请阅读OWASP文件系统文章(https://www.owasp.org/index.php/File_System )
相关问题
- HashSet如何提供恒定时间添加操作?
- 带有聚合管道的文本搜索-MongoDB/PHP
- JavaHashMap如何为get操作执行恒定时间查找O(1)?
- 如何在Gradle中将根项目添加为类路径
- 如何执行并发安全的映射对象操作?
- 如何在同一段上的两个读取操作在并发HashMap中同时工作?
- 如何单击网格窗格单元格并让它执行操作?
- 如何在PHP中通过ODBC为普适数据库设置编码?
- 改变笔画宽度后,如何知道SVG路径的位置和大小?
- 通过JMX访问Apache ActiveMQ会引发ConnectionMBean 5.10
- 通过内联程序集锁定内存操作
- 通过JMX访问Apache ActiveMQ会引发异常代理未找到5.10
- 通过JMX访问Apache ActiveMQ会引发异常
- 在ActiveMQ Artemis中通过JMX连接到代理时引发JMSException错误
- 重新划分后引发非确定性结果
- php中私有方法的继承和后期静态绑定
- PHP继承和受保护的成员可见性
- 增量是JavaScript中的原子操作吗?
- 关于RIDL漏洞和负载的“重放”
- 当使用具有AVX-512加载和存储的掩码寄存器时,是否会因对掩码元素的无效访问而引发故障?