Skip to content

Commit e0eddd4

Browse files
committed
Curated rule: detect a reachable PHP application via index.php
Adds a read only rule that flags a site as a live PHP runtime to track for patching. It requests index.php and reports only when that returns a real page that differs from the control (a path that cannot exist), so a site that answers the same catch all page for everything does not trip it, and a site that answers not found for index.php is not called PHP. This is an informational inventory and reachability signal. It does not identify the PHP build and does not confirm any CVE; confirming a memory safety CVE would need the actual serving build, which a safe request cannot establish.
1 parent 7564563 commit e0eddd4

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"id": "misconfiguration-php-index-reachable",
3+
"class": "misconfiguration",
4+
"safety": "read",
5+
"severity_floor": "info",
6+
"title": "PHP application is reachable (index.php is served)",
7+
"summary": "GET /index.php returns a real page rather than the not found page, so a PHP front controller is served here. This marks the site as a PHP runtime to track for patching. It does not identify the PHP build or confirm any CVE.",
8+
"needs": [],
9+
"probe": [
10+
{
11+
"request": {
12+
"method": "GET",
13+
"path": "/index.php"
14+
}
15+
}
16+
],
17+
"confirm": {
18+
"control": "A path that cannot exist, so the site's not found answer is known.",
19+
"differential": "status==200 and body_differs(control)",
20+
"retest": 2
21+
},
22+
"reproduce": "curl -s -o /dev/null -w '%{http_code}\\n' https://host/index.php (200 means a PHP front controller is served here; a 404 means it is not)",
23+
"remediate": "This is an inventory signal, not a vulnerability. If this PHP application is internet facing, make sure its PHP runtime is on a vendor patched release and the host is tracked in your patch inventory.",
24+
"references": [],
25+
"mappings": {
26+
"cwe": "CWE-200",
27+
"owasp": "A05:2021"
28+
},
29+
"rulesets": [
30+
"php"
31+
]
32+
}

0 commit comments

Comments
 (0)