muhttpd HTTP 伺服器中已發現一個漏洞 (CVE-2022-31793),主要用於路由器和存取點,該漏洞允許未經身份驗證的攻擊者透過發送特製的 HTTP 請求來下載任意文件,只要訪問權限滿足HTTP 伺服器運作允許(在許多裝置上muhttpd 以root 身分運作)。 例如,攻擊者可以透過密碼、無線存取設定、提供者的連線參數和私鑰來存取檔案。
該問題是由於處理請求中的路徑時發生錯誤導致的,該路徑允許存取Web伺服器根目錄之外的檔案。 此攻擊歸結為在開頭指定除句點、斜線和問題之外的任何其他字元的路徑。 例如,要下載/etc/hosts文件,只需發送請求“GET a/etc/hosts”或“GET a/etc/hosts”(printf“GET b/etc/hosts\n\n” | nc server港口) 。
造成這種行為的原因是,請求的檔案是透過命令「open(&req->filename[1], O_RDONLY)」開啟的,並且事先執行了chdir()函數跳到根目錄。 網路伺服器指定 `&req->filename[1]` 會導致路徑的第一個字元被忽略(開發者原本希望第一個字元始終為 `/`)。因此,當請求 `GET /etc/hosts` 時,伺服器會嘗試開啟相對路徑 `etc/hosts` 下的檔案;但如果在路徑開頭指定任何其他字元(例如 `GET a/etc/hosts`),則會完整處理後續路徑。
這個問題從 muhttpd 的第一個版本開始就存在,並在 1.1.7 版本中修復。 在使用 muhttpd 的裝置中,SaskTel 和 Arris 路由器已被確認有此問題。 這個問題也可能影響 AT&T、Frontier 和 Windstream 製造的設備。 當僅限制內部網路存取 HTTP 連接埠時,可以使用「DNS 重新綁定」技術從外部網路進行攻擊,該技術允許使用者在瀏覽器中開啟某個頁面時發送 HTTP 請求至無法透過Internet 直接存取的網路端口。
來源: opennet.ru
