modsecurity 將某些類型的 cookie 列入白名單
我看到在我們的伺服器上生成的 cookie 似乎來自站點中的第 3 方對象,並且在登錄或瀏覽站點時不會顯示自己。
cookie 是隨機的,但都以 Wm 開頭。所以其中一些可能是 wm_cm_12345-12345-12345-12345,其中一些可能是 wm-wtchd-22。我在想,如果他們是 Wm*,也許我可以讓他們不警覺。
如何將 Wm 開頭的 cookie 列入白名單?
以及您可能想要包含的任何其他想法,我如何將這些想法列入白名單?
謝謝
一個範例 cookie
TX:981243-Detects classic SQL injection probings 2/2-OWASP_CRS/WEB_ATTACK/SQLI-REQUEST_COOKIES:wm_rx_123456eabcdef7890_0edb4989-1523-ff12-ccab-beddddaaffccc. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 41, SQLi=9, XSS=): Last Matched Message: 981243-Detects classic SQL injection probings 2/2"] [data "Last Matched Data: \\x22:61"] [hostname "Somefoowebsite.com"] [uri "/images/nyancat.jpg"]
我所看到的另一個例子:
[30/Nov/2015:13:54:27 --0700] [bumblebeetune.com/sid#7fee134ee758][rid#7fee13b510d8][/nyancat.foo][2] Warning. Pattern match "(.*)" at TX:981243-Detects classic SQL injection probings 2/2-OWASP_CRS/WEB_ATTACK/SQLI-REQUEST_COOKIES:[30/Nov/2015:13:54:27 --0700] [bumblebeetuna.com/sid#7fee134ee758][rid#7fee13b510d8][/nyancat.foo][2] Warning. Pattern match "(.*)" at TX:981243-Detects classic SQL injection probings 2/2-OWASP_CRS/WEB_ATTACK/SQLI-REQUEST_COOKIES:wm_ct_877bb6e0e4744fd6a270f70f3e0c8a67_d464ab47-3cf0-fe3f-89d5-bd785f7bdcfa. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 18, SQLi=4, XSS=): Last Matched Message: 981243-Detects classic SQL injection probings 2/2"] [data "Last Matched Data: \x22:61"]. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 18, SQLi=4, XSS=): Last Matched Message: 981243-Detects classic SQL injection probings 2/2"] [data "Last Matched Data: \x22:61"]
你可以做你想做的事,你可以像這樣添加配置(詳見此處):
SecRuleUpdateTargetById 981243 !REQUEST_COOKIES:'/^wm.*/'
事實上,這已經內置在一些正常 cookie 中,該規則錯誤地將其標記為誤報(Google分析使用的 __utm 和類似分析軟體使用的 _pk_ref),正如您在查看原始規則的規則定義時所看到的那樣標記:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* “(?i:(?:["’
´’‘]\s*?\*.+(?:x?or|div|like|between|and|id)\W*?[\"'
´’’]\d)|(?: ^["’´’‘])|(?:^[\w\s\"'
´’’-]+(?<=and\s)(?<=or|xor|div|like|between|and\s)(?<=xor\s)(?<= nand\s)(?<=not\s)(?<=||)(?<=&&)\w+()|(?:["’´’‘][\s\d]*?[^\w\s]+\W*?\d\W*?.*?[\"'
´’’\d])| (?:["’´’‘]\s*?[^\w\s?]+\s*?[^\w\s]+\s*?[\"'
’’’])|(?:["’´’‘]\s*?[^\w\s]+\s*?[\W\d].*?(?:#|--))|(?:[\"'
’’’]. ?\s* ?\d)|(?:["’´’‘]\s*?(x?or|div|like|between|and)\s[^\d]+[\w-]+.*?\d)|(?:[()\*<>%+-][\w-]+[^\w\s]+[\"'
’’']$$ ^, $$))” “phase:2,capture,t:none,t:urlDecodeUni,block,msg:‘Detects classic SQL injection probings 2/2’,id:‘981243’,tag:‘OWASP_CRS/WEB_ATTACK/SQL_INJECTION’,logdata :‘匹配數據: %{TX.0} 在 %{MATCHED_VAR_NAME} 中找到: %{MATCHED_VAR}’,severity:‘2’,setvar:’tx.msg=%{rule.id}-%{rule.msg} ‘,setvar:tx.sql_injection_score=+1,setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:’tx.%{tx.msg}-OWASP_CRS/WEB_ATTACK/SQLI-%{matched_var_name}=%{ tx.0}’”
現在,如果您能計算出我們的那個正則表達式,那麼您就是一個比我更好的人,但是您可以在開始時看到它適用於哪些 cookie 的配置。
請注意,最好添加上述配置以動態修改規則,而不是編輯規則本身,因為升級您的規則將覆蓋任何編輯,而可以保留覆蓋(假設它們位於升級後仍然存在的單獨覆蓋文件中)。