diff --git a/src/common/core/modsecurity/files/coreruleset-v4/rules/RESPONSE-955-WEB-SHELLS.conf b/src/common/core/modsecurity/files/coreruleset-v4/rules/RESPONSE-955-WEB-SHELLS.conf
new file mode 100644
index 000000000..d8a2e4b70
--- /dev/null
+++ b/src/common/core/modsecurity/files/coreruleset-v4/rules/RESPONSE-955-WEB-SHELLS.conf
@@ -0,0 +1,548 @@
+# ------------------------------------------------------------------------
+# OWASP CRS ver.4.0.0
+# Copyright (c) 2006-2020 Trustwave and contributors. (not) All rights reserved.
+# Copyright (c) 2021-2024 CRS project. All rights reserved.
+#
+# The OWASP CRS is distributed under
+# Apache Software License (ASL) version 2
+# Please see the enclosed LICENSE file for full details.
+# ------------------------------------------------------------------------
+
+#
+# -= Paranoia Level 0 (empty) =- (apply unconditionally)
+#
+
+
+
+SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:955011,phase:3,pass,nolog,skipAfter:END-RESPONSE-955-WEB-SHELLS"
+SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 1" "id:955012,phase:4,pass,nolog,skipAfter:END-RESPONSE-955-WEB-SHELLS"
+#
+# -= Paranoia Level 1 (default) =- (apply only when tx.detection_paranoia_level is sufficiently high: 1 or higher)
+#
+
+# For performance reasons, most of the shells are matched using this rule.
+# This rule is intended for PHP web shells.
+SecRule RESPONSE_BODY "@pmFromFile web-shells-php.data" \
+ "id:955100,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'Web shell detected',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# r57 web shell
+SecRule RESPONSE_BODY "@rx (
r57 Shell Version [0-9.]+|r57 shell)" \
+ "id:955110,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'r57 web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# WSO web shell
+SecRule RESPONSE_BODY "@rx ^.*? - WSO [0-9.]+" \
+ "id:955120,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'WSO web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# b4tm4n web shell (https://github.com/k4mpr3t/b4tm4n)
+SecRule RESPONSE_BODY "@rx B4TM4N SH3LL.*" \
+ "id:955130,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'b4tm4n web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# Mini Shell web shell
+SecRule RESPONSE_BODY "@rx Mini Shell.*Developed By LameHacker" \
+ "id:955140,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'Mini Shell web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# Ashiyane web shell
+SecRule RESPONSE_BODY "@rx \.:: .* ~ Ashiyane V [0-9.]+ ::\." \
+ "id:955150,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'Ashiyane web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# Symlink_Sa web shell
+SecRule RESPONSE_BODY "@rx Symlink_Sa [0-9.]+" \
+ "id:955160,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'Symlink_Sa web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# CasuS web shell
+SecRule RESPONSE_BODY "@rx CasuS [0-9.]+ by MafiABoY" \
+ "id:955170,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'CasuS web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# GRP WebShell
+SecRule RESPONSE_BODY "@rx ^\r\n\r\nGRP WebShell [0-9.]+ " \
+ "id:955180,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'GRP WebShell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# NGHshell web shell
+SecRule RESPONSE_BODY "@rx NGHshell [0-9.]+ by Cr4sh\n$" \
+ "id:955190,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'NGHshell web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# SimAttacker web shell
+SecRule RESPONSE_BODY "@rx SimAttacker - (?:Version|Vrsion) : [0-9.]+ - " \
+ "id:955200,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'SimAttacker web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# Unknown web shell
+SecRule RESPONSE_BODY "@rx ^\n\n" \
+ "id:955240,\
+ phase:4,\
+ block,\
+ capture,\
+ t:none,\
+ msg:'Unknown web shell',\
+ logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}',\
+ tag:'language-php',\
+ tag:'platform-multi',\
+ tag:'attack-rce',\
+ tag:'paranoia-level/1',\
+ tag:'OWASP_CRS',\
+ tag:'capec/1000/225/122/17/650',\
+ ver:'OWASP_CRS/4.0.0',\
+ severity:'CRITICAL',\
+ setvar:'tx.outbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
+
+# Unknown web shell
+SecRule RESPONSE_BODY "@rx ^\n\nInput command :
\n