WebGoat (A1) Injection Path traversal (目录遍历 / 路径遍历)

目录

一、欢乐的闯关

第2页

第3页

第4页

第5页

二、简简单单的脑图


一、欢乐的闯关

第2页

这关要求传个文件到目录C:\Users\Administrator\.webgoat-8.1.0\PathTraversal下面

传文件的点是圆形人头那边,理论上是用来上传用户头像的。从百度图片弄了一张小白的帅照,传上去看看什么效果。

从上图可见,文件上传后以Full Name的值命名,并存储在文件夹C:\Users\Administrator\.webgoat-8.1.0\PathTraversal\fancyele下,比我们的目标路径多一级目录fancyele。

那么可以尝试将Full Name改成../xiaobai.jpeg,然后点update,这样就可以把这张图片传到上级文件夹PathTraversal下

第3页

这关的要求和上一关一样,要传个文件到目录C:\Users\Administrator\.webgoat-8.1.0\PathTraversal下面。

但提示../会被删除。

看到删除,一下子就想到双写绕过,在Full Name处构造双写../的payload:..././baibai.jpeg</

### 关于 WebGoat路径遍历漏洞 (A3 Path Traversal Vulnerability) WebGoat 是 OWASP 提供的一个项目,旨在帮助开发者学习常见的安全漏洞及其修复方法。其中 A3 路径遍历漏洞是一个重要的教学模块。 #### 路径遍历漏洞的概念 路径遍历漏洞允许攻击者通过操纵文件路径参数访问受限目录之外的文件或目录。这种漏洞通常发生在应用程序未正确验证用户输入的情况下[^1]。例如,在 Web 应用程序中,如果用户可以控制请求中的某个字段来指定要读取的文件名,则可能利用该字段尝试访问敏感数据或其他未经授权的内容。 #### 示例场景 假设存在一个 URL 如下: ``` http://example.com/getFile?file=report.pdf ``` 此 URL 可能用于下载名为 `report.pdf` 的文档。然而,如果没有适当的安全措施,恶意用户可能会修改查询字符串为如下形式以试图获取其他文件: ``` http://example.com/getFile?file=../../../../etc/passwd ``` 这可能导致服务器返回 `/etc/passwd` 文件内容给攻击者,从而泄露系统配置信息。 #### 解决方案 为了防止此类攻击发生,开发人员应采取以下策略之一或多组合起来使用: 1. **白名单验证**: 对所有外部可控变量实施严格的正则表达式匹配或者其他方式限定其合法范围; 2. **根目录约束**: 将实际存储位置映射到特定子树之下,并确保任何操作都不会超出这个边界; 3. **规范化处理**: 使用编程语言内置函数标准化相对/绝对路径表示法后再做进一步判断; 4. **最小权限原则**: 配置 web server 或应用本身使其仅具备完成任务所需的最低限度资源访问权。 以下是 Python 实现示例代码片段展示如何有效防范上述风险: ```python import os.path def safe_file_access(base_directory, user_input_filename): normalized_path = os.path.normpath(user_input_filename).lstrip(os.sep) full_path = os.path.join(base_directory, normalized_path) if not full_path.startswith(base_directory): raise ValueError("Invalid file path") with open(full_path, 'r') as f: content = f.read() return content ``` 在此例子中,我们首先调用了 `os.path.normpath()` 方法去除多余的点号序列以及斜杠字符,接着移除了开头可能出现的操作系统分隔符以防万一。之后构建最终目标地址并通过检查确认它确实位于预期的基础目录之内才继续执行后续逻辑。 ### 结论 通过对用户提交的数据进行全面校验并合理设置工作环境下的各种限制条件能够显著降低遭受路径穿越威胁的可能性。遵循最佳实践指南有助于保护信息系统免受这类常见但危险的技术缺陷影响。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值