Отладка инициированных совпадений правил modsecurity - PullRequest
0 голосов
/ 11 июля 2020

TL; DR:

Как отладить попадание в правила , чтобы идентифицировать часть запроса, запускающую правило?.

ситуация

У меня есть сайт, работающий в среде с modsecurity и Free OW ASP ModSecurity Core Rule Set (CRS) , идея которого мне действительно нравится. Я потратил много времени на установку тех же плагинов и конфигурации, запущенных на моем компьютере разработчика, и у меня возникла проблема с отладкой. c. что дает html, которое либо отображается в браузере, либо отправляется по электронной почте.

Проблема в том, что у меня все еще есть данные, которые запускают разные правила OW ASP, что приводит к 403, что является в лучшем случае раздражает и не очень удобен для пользователя.

Попытка отладки

Например, я получаю такой результат в журнале:

[Sat Jul 11 20:12:47.827894 2020] [:error] [pid 9504:tid 2352] [client 127.0.0.1:53355] [client 127.0.0.1] ModSecurity: Warning. Pattern match "(?i)(?:\\\\W|^)(?:javascript:(?:[\\\\s\\\\S]+[=\\\\\\\\(\\\\[\\\\.<]|[\\\\s\\\\S]*?(?:\\\\bname\\\\b|\\\\[ux]\\\\d))|data:(?:(?:[a-z]\\\\w+\\\\/\\\\w[\\\\w+-]+\\\\w)?[;,]|[\\\\s\\\\S]*?;[\\\\s\\\\S]*?\\\\b(?:base64|charset=)|[\\\\s\\\\S]*?,[\\\\s\\\\S]*?<[\\\\s\\\\S]*?\\\\w[\\\\s\\\\S]*?>))|@\\\\W*?i\\\\W*?m\\\\W*?p\\\\W*? ..." at ARGS:sluttekst. [file "C:/udvikling/xampp/apache/conf/extra/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "259"] [id "941170"] [msg "NoScript XSS InjectionChecker: Attribute Injection"] [data "Matched Data: \\x22data:image/png; found within ARGS:tekst: <p><span style=\\x22font-size: 14px;\\x22><span style=\\x22font-family: verdana,geneva,sans-serif;\\x22>her er der noget tekst som er fremtr&aelig;dende. Omr&aring;der obliver v&aring;de.Privat. Kvalitet b&oslash;r v&aelig;rds&aelig;ttes, hvis du vil.<br />\\x0d\\x0a<br />\\..."]  [hostname "devpc.local"] [uri "/z.php"] [unique_id "XwoBH4TwpS3bcEzonWuZAwAAji0"], referer: https://depc.local/z.php

Поскольку шаблон усеченный, я нашел файл конфигурации в локальной apache config ( REQUEST-941-APPLICATION-ATTACK-XSS.conf ) и скопировал строку, которая была сопоставлена ​​

<p><span style=\\x22font-size: 14px;\\x22><span style=\\x22font-family: verdana,geneva,sans-serif;\\x22>her er der noget tekst som er fremtr&aelig;dende. Omr&aring;der obliver v&aring;de.Privat. Kvalitet b&oslash;r v&aelig;rds&aelig;ttes, hvis du vil.<br />\\x0d\\x0a<br />\\...

... вместе с тем, что я предполагаю, это шаблон регулярного выражения ...

(?i)(?:\W|^)(?:javascript:(?:[\s\S]+[=\\\(\[\.<]|[\s\S]*?(?:\bname\b|\\[ux]\d))|data:(?:(?:[a-z]\w+\/\w[\w+-]+\w)?[;,]|[\s\S]*?;[\s\S]*?\b(?:base64|charset=)|[\s\S]*?,[\s\S]*?<[\s\S]*?\w[\s\S]*?>))|@\W*?i\W*?m\W*?p\W*?o\W*?r\W*?t\W*?(?:\/\*[\s\S]*?)?(?:[\"']|\W*?u\W*?r\W*?l[\s\S]*?\()|\W*?-\W*?m\W*?o\W*?z\W*?-\W*?b\W*?i\W*?n\W*?d\W*?i\W*?n\W*?g[\s\S]*?:[\s\S]*?\W*?u\W*?r\W*?l[\s\S]*?\("

... в такой инструмент, как regexr.com, чтобы увидеть фактическое совпадение. Но не тут-то было.

Неоптимальный обходной путь

Я уже взял один такой редактор и преобразовал отправителя в кодировку base64 перед отправкой на сервер, а затем base64decoding это снова ... Я не хочу делать это для всех редакторов, которые у меня есть ...

Куда отсюда?

Я бы предпочел отфильтровать весь недопустимый код ( Я уже выяснил, что скандинавский символ å htmlencoded в &aring; перехватывается плагином REQUEST-932-APPLICATION-ATTACK-RCE, поэтому мне нужно будет убедиться, что они отправляются как символы UTF-8)

1 Ответ

1 голос
/ 04 сентября 2020

здесь можно обойти следующую идею:

  • настроить CKeditor для работы / принятия ограниченного набора HTML тегов с использованием встроенного ACF,
  • занести все в белый список html теги, определенные в ACF CKeditor в CRS еще раз,
  • убедитесь, что веб-сервер использует UTF-8,
  • пусть modsecurity блокирует что-либо еще.

Это теория, реализация последует когда-нибудь ... Мне, однако, не нравится идея передачи / повторения modsecurity logi c в ACF, еще один уровень в стеке.

...