Я унаследовал устаревший веб-сайт, который никто не хочет вносить в него большие изменения, такие как переустановка всего, обновление до более нового 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 "]
Мы пробовали несколько вещей, таких как:
- Изменение правилот
"(^ [\" '´’‘;]+|[\"'
´' ';] + $) "
до
(^ [\ "'\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}"