Mod-Security

Modsecurity : 從 SecRule 創建新的請求標頭

  • August 10, 2016

考慮以下從 Lua 腳本啟動的重定向 SecRule

SecRule &TX:SQLI "@eq 1" "id:'129793',phase:2,t:none,redirect:http://www.example.com/failed.html,msg:'SQLi Injection Payload Found',setvar:REQUEST_HEADERS:Blocked"

當變數tx.sqli被賦予一個值時,規則被啟動。重定向成功,但規則嘗試創建新的“已阻止”請求標頭。然而,創作並不成功。

調試器中的日誌輸出以下內容:

Could not set variable "REQUEST_HEADERS.Blocked" as the collection does not exist.

這顯然是不正確的。Modsecurity 如何創建新的請求標頭?

在 ModSecurity 中,大多數標準集合(包括 REQUEST_HEADERS)都是只讀的。因此,您將設置一個變數而不是 REQUEST_HEADER。

設置 REQUEST_HEADER 通常沒有意義。A RESPONSE_HEADER 我可以看到更多用途,但它同樣是只讀的,並且更改您需要使用標準 mod_headers 模組:

#Use ModSecurity to set an env variable
SecRule &TX:SQLI "@eq 1" "id:'129793',phase:2,set-env:BLOCK_RESPONSE"

#Use mod_header to set Header based on that env variable
Header set Blocked "True" env=BLOCK_RESPONSE

雖然老實說不確定如何或是否將重定向作為 ModSecurity 操作起作用,或者是否立即發生。

引用自:https://serverfault.com/questions/796088