Apache http 伺服器發現了一個新的攻擊向量,該向量在 2.4.50 更新中未修復,允許存取網站根目錄以外的檔案。此外,研究人員還發現了一種不僅可以讀取系統文件,還可以在某些非標準設定下在伺服器上遠端執行程式碼的方法。該問題僅出現在 2.4.49 和 2.4.50 版本中;更早的版本不受此漏洞影響。 Apache httpd 2.4.51 版本已迅速建立以消除此新漏洞。
新發現的漏洞 (CVE-2021-42013) 與 2.4.49 版本中的原始漏洞 (CVE-2021-41773) 基本相同,唯一的區別在於「.」字元的編碼方式不同。具體來說,2.4.50 版本阻止了使用「%2e」序列對句點進行編碼,但卻忽略了使用「%%32%65」序列對句點進行雙重編碼的情況。 服務器 將其解碼為“%2e”,然後解碼為“.”,即,用於返回上一個目錄的“../”字元可以編碼為“.%%32%65/”。
至於透過程式碼執行來利用漏洞,當啟用 mod_cgi 並使用允許執行 CGI 腳本的基底路徑時(例如,啟用 ScriptAlias 指令或在 Options 指令中指定了 ExecCGI 標誌),即可實現此目的。成功攻擊的必要條件還包括在 Apache 設定中明確提供對包含可執行檔案的目錄(例如 /bin)的存取權限,或對檔案系統根目錄「/」的存取權限。由於通常不提供此類存取權限,因此程式碼執行攻擊在實際系統中幾乎沒有用處。
同時,取得任意系統檔案內容以及執行 http 伺服器的使用者可讀取的 Web 腳本原始碼文字的攻擊仍然有效。若要實施此類攻擊,只需在網站上使用「Alias」或「ScriptAlias」指令來配置目錄即可(DocumentRoot 不夠),例如「cgi-bin」。
這是一個允許您執行“id”實用程式的漏洞利用範例。 服務器curl 'http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type: text/plain; echoda; groups=1(daemon)
漏洞利用範例可讓您顯示 /etc/passwd 和其中一個 Web 腳本的內容(要傳回腳本程式碼,必須將透過「Alias」指令定義的未啟用腳本執行的目錄指定為基底目錄):curl 'http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd'curl 'http://192.168.0.1/aliaseddir/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/usr/local/apache2/cgi-bin/test.cgi'
這個問題主要影響像 Fedora 和 Arch 這樣持續更新的發行版。 Linux 以及 Gentoo 和 FreeBSD 移植版。保守型伺服器發行版穩定分支中的軟體套件。 DebianRHEL, Ubuntu SUSE 系統不存在此問題。如果使用「require all denied」設定明確拒絕存取目錄,則不會出現此問題。
來源: opennet.ru
