安全風險:
可能會在Web 服務器上上載、修改或刪除Web 頁面、腳本和文件。
可能原因:
Web 服務器或應用程序服務器是以不安全的方式配置的。
修訂建議:
如果服務器不需要支持WebDAV,請務必禁用它,或禁止不必要的HTTP 方法。
方法簡介:
除標准的GET和POST方法外,HTTP請求還使用其他各種方法。許多這類方法主要用於完成不常見與特殊的任務。如果低權限用戶可以訪問這些方法,他們就能夠以此向應用程序實施有效攻擊。以下是一些值得注意的方法:
PUT | 向指定的目錄上載文件 |
DELETE | 刪除指定的資源 |
COPY | 將指定的資源復制到Destination消息頭指定的位置 |
MOVE | 將指定的資源移動到Destination消息頭指定的位置 |
SEARCH | 在一個目錄路徑中搜索資源 |
PROPFIND | 獲取與指定資源有關的信息,如作者、大小與內容類型 |
TRACE | 在響應中返回服務器收到的原始請求 |
滲透測試步驟:
使用OPTIONS方法列出服務器使用的HTTP方法。注意,不同目錄中激活的方法可能各不相同。
許多時候,被告知一些方法有效,但實際上它們並不能使用。有時,即使OPTIONS請求返回的響應中沒有列出某個方法,但該方法仍然可用。
手動測試每一個方法,確認其是否可用。
使用curl測試:
curl -v -X OPTIONS http://www.example.com/test/
查看響應的 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
curl -v -T test.html http://www.example.com/test/test.html
看是否能上載來判斷攻擊是否生效。
找一個存在的頁面,如test2.html
curl -X DELETE http://www.example.com/test/test2.html
如果刪除成功,則攻擊有效。
解決方案:
如tomcat,配置web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>fortune</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
以上的代碼添加到某一個應用中,也可以添加到tomcat的web.xml中,區別是添加到某一個應用只對某一個應用有效,如果添加到tomcat的web.xml中,
則對tomcat下所有的應用有效。