OpenSNS RCE分析
字数 1048 2025-08-05 08:19:32

OpenSNS远程命令执行漏洞分析与利用

漏洞概述

OpenSNS是基于ThinkPHP3框架开发的一款社交网络系统,仅支持PHP5环境。该系统存在一个严重的远程命令执行(RCE)漏洞,攻击者可以通过精心构造的请求在目标服务器上执行任意PHP代码。

漏洞分析

漏洞入口

漏洞入口位于weibo/share/sharebox路径,通过GET请求提交query参数。该处存在变量覆盖漏洞。

漏洞触发流程

  1. 变量覆盖:通过query参数提交的数据会被解析并覆盖系统变量
  2. 模板渲染assign方法将$array数组存入$this->tVar['parse_array']中,用于后续模板渲染
  3. 模板处理:通过T函数获取模板文件,display方法进行渲染
  4. Widget调用:渲染过程中调用W函数,最终通过A函数调用weibo应用下的widget控制层
  5. 模型实例化:通过D函数实例化模型类,调用其公共方法

关键代码分析

// 通过D函数实例化模型类
D($method[0])->$method[1]($args, $schedule);

其中:

  • $method[0]:模型名称
  • $method[1]:方法名称
  • $args:参数数组
  • $schedule:可控参数

可利用点

  1. RCE利用:通过Common/schedule/runschedule中的_validationFieldItem方法

    • $val[4]可控为function
    • $val[6]不传值时$arg变为空数组
    • 通过array_unshiftcall_user_func_array实现代码执行
  2. SSRF利用:通过admin/curlmodel/curl模型

    • 可构造SSRF请求
    • 虽然无回显,但仍可利用

漏洞利用

RCE利用Payload

?s=weibo/share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id[method]=-%3E_validationFieldItem%26id[status]=1%26id[4]=function%26id[1]=assert%26id[args]=jiang=phpinfo()%26id[0]=jiang

SSRF利用Payload

?s=weibo/share/shareBox&query=app=Admin%26model=Curl%26method=curl%26id=http://127.0.0.1/

其他安全问题

后台任意文件下载

后台下载主题功能中,$aTheme参数可控,可导致目录穿越和任意文件下载。

后台任意文件上传

可上传包含恶意文件的ZIP压缩包,解压到Theme目录下。

后台任意代码执行

后台存在直接包含文件的功能,可导致代码执行。

防护建议

  1. 升级到最新版本或打补丁
  2. 对用户输入进行严格过滤和验证
  3. 限制后台访问权限
  4. 禁用危险函数如assertcall_user_func_array
  5. 对文件操作进行严格的路径检查

总结

OpenSNS的RCE漏洞源于变量覆盖和不当的函数调用机制,结合PHP5的特性可实现任意代码执行。该漏洞危害严重,建议用户及时采取防护措施。

OpenSNS远程命令执行漏洞分析与利用 漏洞概述 OpenSNS是基于ThinkPHP3框架开发的一款社交网络系统,仅支持PHP5环境。该系统存在一个严重的远程命令执行(RCE)漏洞,攻击者可以通过精心构造的请求在目标服务器上执行任意PHP代码。 漏洞分析 漏洞入口 漏洞入口位于 weibo/share/sharebox 路径,通过GET请求提交 query 参数。该处存在变量覆盖漏洞。 漏洞触发流程 变量覆盖 :通过 query 参数提交的数据会被解析并覆盖系统变量 模板渲染 : assign 方法将 $array 数组存入 $this->tVar['parse_array'] 中,用于后续模板渲染 模板处理 :通过 T 函数获取模板文件, display 方法进行渲染 Widget调用 :渲染过程中调用 W 函数,最终通过 A 函数调用 weibo 应用下的 widget 控制层 模型实例化 :通过 D 函数实例化模型类,调用其公共方法 关键代码分析 其中: $method[0] :模型名称 $method[1] :方法名称 $args :参数数组 $schedule :可控参数 可利用点 RCE利用 :通过 Common/schedule/runschedule 中的 _validationFieldItem 方法 $val[4] 可控为function $val[6] 不传值时 $arg 变为空数组 通过 array_unshift 和 call_user_func_array 实现代码执行 SSRF利用 :通过 admin/curlmodel/curl 模型 可构造SSRF请求 虽然无回显,但仍可利用 漏洞利用 RCE利用Payload SSRF利用Payload 其他安全问题 后台任意文件下载 后台下载主题功能中, $aTheme 参数可控,可导致目录穿越和任意文件下载。 后台任意文件上传 可上传包含恶意文件的ZIP压缩包,解压到Theme目录下。 后台任意代码执行 后台存在直接包含文件的功能,可导致代码执行。 防护建议 升级到最新版本或打补丁 对用户输入进行严格过滤和验证 限制后台访问权限 禁用危险函数如 assert 、 call_user_func_array 等 对文件操作进行严格的路径检查 总结 OpenSNS的RCE漏洞源于变量覆盖和不当的函数调用机制,结合PHP5的特性可实现任意代码执行。该漏洞危害严重,建议用户及时采取防护措施。