diff --git a/package/secubox/luci-app-mitmproxy/htdocs/luci-static/resources/view/mitmproxy/waf-filters.js b/package/secubox/luci-app-mitmproxy/htdocs/luci-static/resources/view/mitmproxy/waf-filters.js index 75d0cb35..4ae4ecc8 100644 --- a/package/secubox/luci-app-mitmproxy/htdocs/luci-static/resources/view/mitmproxy/waf-filters.js +++ b/package/secubox/luci-app-mitmproxy/htdocs/luci-static/resources/view/mitmproxy/waf-filters.js @@ -54,25 +54,25 @@ return view.extend({ }); var content = [ - // Header - E('div', { 'style': 'margin-bottom: 24px;' }, [ - E('h2', { 'style': 'font-size: 24px; font-weight: 700; margin: 0 0 8px 0;' }, '🛡️ WAF Filters'), - E('p', { 'style': 'color: var(--kiss-muted); margin: 0;' }, 'Web Application Firewall detection rules') - ]), - - // Summary Stats - E('div', { 'class': 'kiss-grid kiss-grid-auto', 'style': 'margin-bottom: 24px;' }, [ - E('div', { 'class': 'kiss-stat' }, [ - E('div', { 'class': 'kiss-stat-value', 'style': 'color: #3498db;' }, String(categories.length)), - E('div', { 'class': 'kiss-stat-label' }, 'Categories') + // Header with inline stats + E('div', { 'style': 'display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 24px;' }, [ + E('div', {}, [ + E('h2', { 'style': 'font-size: 24px; font-weight: 700; margin: 0;' }, '🛡️ WAF Filters'), + E('p', { 'style': 'color: var(--kiss-muted); margin: 4px 0 0 0; font-size: 13px;' }, 'Web Application Firewall detection rules') ]), - E('div', { 'class': 'kiss-stat' }, [ - E('div', { 'class': 'kiss-stat-value', 'style': 'color: #27ae60;' }, String(enabledCategories)), - E('div', { 'class': 'kiss-stat-label' }, 'Active') - ]), - E('div', { 'class': 'kiss-stat' }, [ - E('div', { 'class': 'kiss-stat-value', 'style': 'color: #e67e22;' }, String(totalRules)), - E('div', { 'class': 'kiss-stat-label' }, 'Rules') + E('div', { 'style': 'display: flex; gap: 24px;' }, [ + E('div', { 'style': 'text-align: center;' }, [ + E('div', { 'style': 'font-size: 28px; font-weight: 700; color: #3498db;' }, String(categories.length)), + E('div', { 'style': 'font-size: 11px; color: var(--kiss-muted); text-transform: uppercase;' }, 'Categories') + ]), + E('div', { 'style': 'text-align: center;' }, [ + E('div', { 'style': 'font-size: 28px; font-weight: 700; color: #27ae60;' }, String(enabledCategories)), + E('div', { 'style': 'font-size: 11px; color: var(--kiss-muted); text-transform: uppercase;' }, 'Active') + ]), + E('div', { 'style': 'text-align: center;' }, [ + E('div', { 'style': 'font-size: 28px; font-weight: 700; color: #e67e22;' }, String(totalRules)), + E('div', { 'style': 'font-size: 11px; color: var(--kiss-muted); text-transform: uppercase;' }, 'Rules') + ]) ]) ]), diff --git a/package/secubox/secubox-app-mitmproxy/files/srv/mitmproxy/waf-rules.json b/package/secubox/secubox-app-mitmproxy/files/srv/mitmproxy/waf-rules.json index f321e309..7c1d139d 100644 --- a/package/secubox/secubox-app-mitmproxy/files/srv/mitmproxy/waf-rules.json +++ b/package/secubox/secubox-app-mitmproxy/files/srv/mitmproxy/waf-rules.json @@ -147,7 +147,7 @@ "patterns": [ {"id": "xmpp-001", "pattern": "'\"\\x00]", "desc": "BOSH session hijack"}, + {"id": "xmpp-003", "pattern": "/http-bind.*'\"]", "desc": "BOSH session hijack"}, {"id": "xmpp-004", "pattern": "xmlns:xi=[\"']http://www.w3.org/2001/XInclude", "desc": "XXE via XInclude"}, {"id": "xmpp-005", "pattern": "\\s*,\\s*.*\\x00", "desc": "Asterisk Route header crash", "cve": "CVE-2023-37457"}, + {"id": "cve-ast-2022-42706", "pattern": "Via:.*branch=z9hG4bK.*\\u0000", "desc": "Asterisk Via header overflow", "cve": "CVE-2022-42706"}, + {"id": "cve-ast-2023-37457", "pattern": "Route:.*\\s*,\\s*.*\\u0000", "desc": "Asterisk Route header crash", "cve": "CVE-2023-37457"}, {"id": "cve-ast-2023-49294", "pattern": "INVITE.*m=audio.*a=rtpmap:\\d+.*\\s{1000,}", "desc": "Asterisk SDP buffer overflow", "cve": "CVE-2023-49294"}, {"id": "cve-ast-2024-35190", "pattern": "CSeq:.*[A-Z]{50,}", "desc": "Asterisk CSeq method overflow", "cve": "CVE-2024-35190"}, {"id": "cve-fpbx-2023-26566", "pattern": "/admin/ajax\\.php.*command=.*`", "desc": "FreePBX command injection", "cve": "CVE-2023-26566"}, {"id": "cve-kamailio-2020-27507", "pattern": "Via:.*received=.*\\[\\d{1000,}", "desc": "Kamailio overflow", "cve": "CVE-2020-27507"}, - {"id": "cve-opensips-2023-49323", "pattern": "Contact:.*;\\+sip\\.instance=.*\\x00", "desc": "OpenSIPS crash", "cve": "CVE-2023-49323"} + {"id": "cve-opensips-2023-49323", "pattern": "Contact:.*;\\+sip\\.instance=.*\\u0000", "desc": "OpenSIPS crash", "cve": "CVE-2023-49323"} ] }, @@ -181,11 +181,11 @@ "enabled": true, "patterns": [ {"id": "cve-prosody-2021-37601", "pattern": "xmlns=[\"'].*[\"']\\s*xmlns=[\"']", "desc": "Prosody namespace confusion", "cve": "CVE-2021-37601"}, - {"id": "cve-prosody-2022-0217", "pattern": "