Skip to content

Commit 47296e4

Browse files
authored
Merge branch 'master' into http-technology-probing
2 parents 3d1d8ff + ed21aee commit 47296e4

13 files changed

Lines changed: 499 additions & 212 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
id: CVE-2026-41940
2+
info:
3+
name: CVE-2026-41940
4+
author: crowdsec
5+
severity: info
6+
description: CVE-2026-41940 testing - cPanel WHM auth bypass via stripped ob cookie
7+
tags: appsec-testing
8+
http:
9+
- raw:
10+
- |
11+
GET / HTTP/1.1
12+
Host: {{Hostname}}
13+
Cookie: whostmgrsession=%3aQSJN_sFdKZtCi2o_
14+
Authorization: Basic cm9vdDp4DQpoYXNyb290PTENCnRmYV92ZXJpZmllZD0xDQp1c2VyPXJvb3Q=
15+
- |
16+
GET / HTTP/1.1
17+
Host: {{Hostname}}
18+
Cookie: whostmgrsession=%3aQSJN_sFdKZtCi2o_%2C
19+
Authorization: Basic cm9vdDp4DQpoYXNyb290PTENCnRmYV92ZXJpZmllZD0xDQp1c2VyPXJvb3Q=
20+
- |
21+
GET / HTTP/1.1
22+
Host: {{Hostname}}
23+
Cookie: whostmgrsession=%3aQSJN_sFdKZtCi2o_%2Ctoto
24+
Authorization: Basic cm9vdDp4DQpoYXNyb290PTENCnRmYV92ZXJpZmllZD0xDQp1c2VyPXJvb3Q=
25+
cookie-reuse: true
26+
matchers:
27+
- type: dsl
28+
condition: and
29+
dsl:
30+
- 'status_code_1 == 403'
31+
- 'status_code_2 == 403'
32+
- 'status_code_3 == 200'
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
appsec-rules:
2+
- ./appsec-rules/crowdsecurity/base-config.yaml
3+
- ./appsec-rules/crowdsecurity/vpatch-CVE-2026-41940.yaml
4+
nuclei_template: CVE-2026-41940.yaml

.index.json

Lines changed: 46 additions & 7 deletions
Large diffs are not rendered by default.

.tests/pf-logs/parser.assert

Lines changed: 132 additions & 11 deletions
Large diffs are not rendered by default.

.tests/pf-logs/pf-logs.log

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ Sep 28 10:38:41 pfSense filterlog: 6,,,1000102434,em0,match,block,out,4,0x0,,64,
66
<134>1 2022-09-06T18:37:34+02:00 opnsense filterlog 69805 - [meta sequenceId="2633355"] 95,,,8a2005c53e3f5653fc9a2e2e81bde263,re0,match,pass,in,4,0x0,,117,35656,0,DF,6,tcp,52,96.235.167.197,10.0.0.200,61145,51918,0,S,349929896,,64240,,mss;nop;wscale;nop;nop;sackOK
77
<134>1 2022-09-06T18:51:28+02:00 opnsense filterlog 69805 - [meta sequenceId="2654146"] 10,,,02f4bab031b57d1e30553ce08e0ec131,re0,match,block,in,4,0x0,,47,59064,0,DF,6,tcp,60,154.6.147.87,37.120.48.198,48473,13680,0,S,3023053886,,7300,,mss;sackOK;TS;nop;wscale
88
<134>1 2022-09-06T19:00:06+02:00 opnsense filterlog 57126 - [meta sequenceId="2667099"] 98,,,881dd59a3e942966c90498ac104715a0,re0,match,pass,in,6,0x00,0x0ea87,51,udp,17,73,2008:8a0:702e:ce00:acc6:c7ee:fa01:2f8a,2c02:2454:ada:d900::1738,6881,51918,73
9+
<134>1 2022-09-06T19:00:06+02:00 opnsense filterlog 57126 - [meta sequenceId="2667099"] 98,,,64d253df-ef65-4b56-9df4-c03fc11b8ce4,re0,match,block,in,6,0x00,0x0ea87,51,udp,17,73,2008:8a0:702e:ce00:acc6:c7ee:fa01:2f8a,2c02:2454:ada:d900::1738,6881,51918,73
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: crowdsecurity/vpatch-CVE-2026-41940
2+
description: 'Detects cPanel & WHM authentication bypass (CVE-2026-41940) by identifying a whostmgrsession cookie with a stripped ob segment (no comma separator)'
3+
rules:
4+
- and:
5+
- zones:
6+
- COOKIES
7+
variables:
8+
- whostmgrsession
9+
transform:
10+
- lowercase
11+
- urldecode
12+
- trim
13+
match:
14+
type: regex
15+
value: '^:[a-z0-9_]+,?$'
16+
17+
labels:
18+
type: exploit
19+
service: http
20+
confidence: 3
21+
spoofable: 0
22+
behavior: 'http:exploit'
23+
label: 'cPanel WHM - Authentication Bypass'
24+
classification:
25+
- cve.CVE-2026-41940
26+
- attack.T1190
27+
- cwe.CWE-306

blockers.json

Lines changed: 65 additions & 65 deletions
Large diffs are not rendered by default.

collections/crowdsecurity/appsec-virtual-patching.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ appsec-rules:
185185
- crowdsecurity/vpatch-CVE-2025-24582
186186
- crowdsecurity/vpatch-CVE-2025-15503
187187
- crowdsecurity/vpatch-CVE-2025-13956
188+
- crowdsecurity/vpatch-CVE-2026-41940
188189
author: crowdsecurity
189190
contexts:
190191
- crowdsecurity/appsec_base

parsers/s01-parse/firewallservices/pf-logs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pattern_syntax:
1111
PF_WORD: '%{USERNAME}'
1212

1313
# rulenr, subrulenr, anchorname, label | "0", interface, reason, action, dir
14-
PF_BASE: '%{INT:rule},(%{INT:sub_rule})?,(%{WORD:anchorname})?,(%{WORD:tracker}| 0),%{PF_WORD:iface},%{WORD:reason},%{WORD:action},%{WORD:direction}'
14+
PF_BASE: '%{INT:rule},(%{INT:sub_rule})?,(%{WORD:anchorname})?,(%{DATA:tracker}| 0),%{PF_WORD:iface},%{WORD:reason},%{WORD:action},%{WORD:direction}'
1515

1616
# tos, ecn, ttl, id, offset, flags, protonum, protoname, length, src, dst
1717
PF_IPV4_DATA: '%{BASE16NUM:ip4_tos},(%{INT:ip4_ecn})?,%{INT:ip4_ttl},%{INT:ip4_id},%{INT:ip4_offset},%{WORD:ip4_flags},%{INT:ip4_proto_id},%{WORD:ip4_proto}'

parsers/s02-enrich/crowdsecurity/plex-allowlist.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ whitelist:
55
reason: "Plex Allowlist"
66
expression:
77
- evt.Meta.http_status in ['200', '206', '403', '404'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/video/:/transcode/'
8-
- evt.Meta.http_status in ['200', '206'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/photo/:/transcode/'
8+
- evt.Meta.http_status in ['200', '206', '403', '404'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/photo/:/transcode/'
99
- evt.Meta.http_status in ['200', '400', '403'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/:/timeline'
1010
- evt.Meta.http_status in ['200', '403', '404'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/library/metadata/'
1111
- evt.Meta.http_status == '200' && evt.Meta.http_verb == 'GET' && evt.Meta.http_path == '/status/sessions'
1212
- evt.Meta.http_status == '404' && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/playQueues/'
1313
- evt.Meta.http_status == '403' && evt.Meta.http_verb == 'POST' && evt.Parsed.request == '/log' && evt.Parsed.http_args contains 'X-Plex-Product=Plex%20Cast&X-Plex-Version='
14-
- evt.Meta.http_status in ['200', '206'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/music/:/transcode/universal/session/'
14+
- evt.Meta.http_status in ['200', '206', '403', '404'] && evt.Meta.http_verb == 'GET' && evt.Meta.http_path startsWith '/music/:/transcode/universal/session/'

0 commit comments

Comments
 (0)