Fortify Audit Workbench 筆記 File Disclosure: Spring 文件泄露(Spring框架)

  • 2020 年 5 月 10 日
  • 筆記

File Disclosure: Spring 文件泄露(Spring框架)

Abstract

若通過用戶輸入構造伺服器端重定向路徑,攻擊者便能夠下載應用程式二進位碼(包括應用程式的類或 jar 文件) 或者查看受保護的目錄下的任意文件。

Explanation

在以下情況下,會發生文件泄露:

  1. 數據從一個不可信賴的數據源進入程式。
  2. 數據用於動態地構造一個路徑。
    例 1: 下面的程式碼會接受不可信賴的數據,並使用其構造伺服器端轉發所使用的路徑。
...
String returnURL = request.getParameter("returnURL");
return new ModelAndView(returnURL);
...

如果攻擊者使用請求參數提供與某個敏感文件位置相匹配的 URL,他們將能夠查看該文件。 例如,使用”//www.yourcorp.com/webApp/logic?returnURL=WEB-INF/applicationContext.xml” 將能夠查看該應用程式的 applicationContext.xml 文件。 一旦攻擊者掌握了 applicationContext.xml 的資訊,他們便能夠定位和下載 applicationContext.xml 中引用的其他配置文件,甚至類文件或 jar 文件。 這樣一來,攻擊者將能夠獲得與應用程式有關的敏感資訊,並以之為目標發動其他類型的攻擊。

Recommendation

請不要要使用不可信賴的數據請求伺服器端資源。 而應使用介於位置與路徑之間的間接方法。 請不要使用:

<a href="//www.yourcorp.com/webApp/logic?nextPage=WEB-INF/signup.jsp">New Customer</a>

而應使用:

<a href="//www.yourcorp.com/webApp/logic?nextPage=newCustomer">New Customer</a>

伺服器端邏輯應具有邏輯名稱與伺服器端路徑的映射(以邏輯名稱為鍵),在上例中,鍵 “newCustomer” 中存儲的路徑應為 “/WEB-INF/signup.jsp”。