mod_security Основной набор правил OWASP не может обрабатывать символы Юникода (китайский) для modsecurity_crs_41_sql_injection_attacks.conf - PullRequest
0 голосов
/ 27 декабря 2018

Я унаследовал устаревший веб-сайт, который никто не хочет вносить в него большие изменения, такие как переустановка всего, обновление до более нового PHP / Apache и тому подобное.

Только недавно была введена единственная веб-форма для пользователей.представить данные.Бывает, что каждый раз при вводе китайских символов веб-сервер выдает ошибку 403.После проверки проблема заключается в правилах mod_security, которые блокировали публикацию HTTP.

Ошибка выглядит следующим образом:

[ср. 26 дек. 15:02:51 2018] [ошибка] [клиент xxxx] ModSecurity: доступ запрещен с кодом 403 (этап 2).Шаблон matc h "(^ [\" '\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98;]+|[\\"' \ xc2 \ xb4 \ xe2 \ x80 \ x99 \ xe2 \ x80 \ x98;] + $) "в ARGS: txt_name. [Файл" / etc / httpd / modsecurity.d / active_rules / modsecurity_crs_41_sql_injection_attacks.conf "] [строка" 64 "] [id" 981318 "] [rev" 2 "] [msg" Атака SQL-инъекций: Обнаружено общее тестирование инъекций "] [data" Сопоставленные данные: 'найдено в ARGS: txt_name: '"] [серьезность" КРИТИЧЕСКИЙ "] [версия" OWASP_CRS / 2.2.8 "] [зрелость" 9 "] [точность" 8 "] [тег" OWASP_CRS / WEB_ATTACK / SQL_INJECTION "] [тег" WASCTC / WASC-19 "] [тег" OWASP_TOP_10 / A1 "] [тег" OWASP_AppSensor / CIE1 "] [тег" PCI / 6.5.2 "] [имя хоста" dev.worldpeace.org.tw "] [uri" /light/light_step1.php "] [unique_id" XCOYG38AAAEAAAw-FoQAAAAA "]

Мы пробовали несколько вещей, таких как:

  1. Изменение правилот

"(^ [\" '´’‘;]+|[\"' ´' ';] + $) "

до

(^ [\ "'\xc2\xb4\xe2\x80\x99\xe2\x80\x98;]+|[\"' \ xc2 \ xb4 \ xe2 \ x80 \ x99 \ xe2 \ x80 \ x98;] + $)

Реализация unicode.mapping (загрузить с https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v2.7.7/unicode.mapping)

Затем обновить конфигурацию (modsecurity_crs_10_config.conf), используя

SecUnicodeMapFile /path/to/unicode.mapping 20127

или

SecUnicodeMapFile /path/to/unicode.mapping 950

Обновить правила:

с

t: urlDecodeUni

до

t:utf8toUnicode, t: urlDecodeUni

Источник: [https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/21]

Исправления работают до определенной степени, например, после использования исправления 1. некоторые символы могут выполнять HTTPсообщение.Но тогда некоторые другие китайские иероглифы не работают.

Я склонен отключить всю проверку SQL-инъекций, но есть ли что-то еще, что я могу попробовать?

Некоторая информация на сервере

ОС:

Linux ip-172-31-38-4 4.14.72-68.55.amzn1.x86_64 #1 SMP Fri Sep 28 21:14:54 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Установленные пакеты:

httpd.x86_64                       2.2.34-1.16.amzn1          @amzn-updates
httpd-tools.x86_64                 2.2.34-1.16.amzn1          @amzn-updates
mod_security.x86_64                2.8.0-5.27.amzn1           @amzn-main
mod_security_crs.noarch            2.2.8-2.5.amzn1            @amzn-main

Одно из первоначальных правил:

#
# -=[ String Termination/Statement Ending Injection Testing ]=-
#
# Identifies common initial SQLi probing requests where attackers insert/append
# quote characters to the existing normal payload to see how the app/db responds.
#
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(^[\"'`´’‘;]+|[\"'`´’‘;]+$)" "phase:2,rev:'2',ver:'OWASP_CRS/2.2.8',maturity:'9',accuracy:'8',capture,t:none,t:urlDecodeUni,block,msg:'SQL Injection Attack: Common Injection Testing Detected',id:'981318',logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',severity:'2',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"

Обновленное правило:

#
# -=[ String Termination/Statement Ending Injection Testing ]=-
#
# Identifies common initial SQLi probing requests where attackers insert/append
# quote characters to the existing normal payload to see how the app/db responds.
#
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(^[\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\x98;]+|[\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\x98;]+$)" "phase:2,rev:'2',ver:'OWASP_CRS/2.2.8',maturity:'9',accuracy:'8',capture,t:none,t:utf8toUnicode,t:urlDecodeUni,block,msg:'SQL Injection Attack: Common Injection Testing Detected',id:'981318',logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',severity:'2',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"
...