php代码审计之PbootCMS漏洞审计

访客4年前黑客文章813

PbootCMS漏洞审计

一、环境准备

下载地址:https://gitee.com/hnaoyun/PbootCMS/releases/V1.2.1

解析域名:http://www.pboot.cms/

这个系统很方便默认情况下,直接下载下来什么都不用做即可使用。(前提是开启 php sqlite 扩展)

我们将其改为 mysql 数据库使用。

mysql 新建数据库,导入文件夹里的 sql 文件。

image-20210219114620813

image-20210219114645614

成功导入,然后修改数据库配置文件,

image-20210219114752285

后台默认账户密码

账户:admin

密码:123456

二、熟悉MVC

目录结构:

2.1 自定义路由

路由文件: PbootCMS\apps\common\route.php

image-20210219121510584

例如: http://www.pboot.cms/index.php/about/1

因为他的这个文件在系统的自定义路由上所以上面的路由解析以后就是

路由:

对应文件:

*** :

参数:

那个 home 是由 对应的入口文件,例如文中的index.php中的URL_BLIND

image-20210219121439798

我们自定义一个 *** 进行访问,

image-20210219122035977

添加自定义路由:

image-20210219122112807

成功访问:

image-20210219122125039

2.2 mvc动态路由

如果对于自定义路由没有的定义的路由,就会按照普通 mvc 模式来访问了。

比如:

路劲文件:

*** :

我们在 自己在添加一个自定义 *** 来访问,

访问:

三、内核分析

3.1 原生GET,POST,REQUEST

使用原生GET,POST,REQUEST变量是完全不过滤的

在控制器中进行测试,

可以看到没有任何过滤,

image-20210219124923984

所以使用原生变量获取 *** 就很有可能产生漏洞。

3.2 系统获取变量函数

路径:

*** :,,等

最后中一系列检测,再最后进行过滤:

可以看得到所有传过来的内容都会先过一个正则匹配过滤

会将 0x7e,0x27,0x22,updatexml,extractvalue,name_const,concat 将其替换为''

再进行防止 xss和sql注入的再次过滤。

但是在这里只进行了数组 value的过滤, key 并没有过滤。

可以双写绕过。

测试:

效果如图

image-20210219130239093

image-20210219130248750

3.3 数据库内核

测试查询数据,

新建一个数据表,

image-20210219180907967

在中,

在中

访问,即可查询,

image-20210219180839093

很明显,有sql注入:

image-20210219201638212

测试插入数据,

:

在中

image-20210219202611225

成功插入。

测试更新数据

:

在中

测试成功。

image-20210219210256395

测试删除数据

:

在中

image-20210219210727691

测试删除成功。

3.4 调试数据库内核

where *** 得到拼接 where 条件,无过滤

image-20210219223134680

select *** 最终得到

image-20210219223254138

整个db 类的底层都是类似的字符串拼接

四、留言处 insert sql注入

由于此 cms 只会对数组键值进行过滤而不会对键进行过滤,恰巧这里浏览处可以接收数组。

poc:

我们使用浏览器+phpstorm调试来探明注入漏洞的产生。(为方便测试,已修改源代码将验证码功能注释)

首先读取了数据库留言表字段,返回一个三维数组,数组为数据表名,分别即为,,,这里用处即为作为 post接收数据的 键

image-20210221132258112

这里即起到了作用,遍历二维数组的分别值接收 post 数据。

image-20210221132745418.png
将数据存储到 data 数组中,由于接受的 contacts 为数组,所以 data 也就变成了多维数组。

image-20210221133106804

接下来,我们对操作进行调试探索,按 F7

到了:

继续 F7 ,这里主要是函数比较关键。

判断 data 为空即返回

image-20210221133417704

这里用于判断是否 data 为多维数组,如果不是即相等,否则不相等。

所以,转到 else ,和用于拼接。

由于为数组,所以再次进行 foreach ,进行分别拼接键和键值。

image-20210221133803270

其余操作一直为 拼接,接下来跳出了 foreach,

然后拼接,之后出现数组,进入函数,构建 Sql 语句,获得

image-20210221134308400

即发生了注入,拼接了恶意sql语句

image-20210221134618323

五、前台首页sql注入

poc:

, index *** :

跟进

,

这里读取数据

这里接收了外部了外部所有的get参数然后判断了开头的前4个字符是否 ext_ 开头,如果符合就直接拼接进入$where2这个数组 然后带入数据库进行getList *** 与getSpecifyList查询,而底层是字符串拼接,过滤了value没有过滤key所以有注入

最终 sql 语句

六、搜索框sql注入

poc:

中 index ***

跟进

中 parserSearchLabel *** ,

这里将 恶意语句带入,

image-20210221152402336

接下来就是读取数据这里

这里接收了外部了外部所有的get参数然后就直接拼接进入$where2这个数组 然后带入数据库进行getList *** 查询,而底层是字符串拼接,过滤了value没有过滤key所以有注入.

相关文章

钟大华麻辣烫如何加盟?快速加盟好品牌赚钱

钟大华麻辣烫如何加盟?快速加盟好品牌赚钱

跟着餐饮行业的不绝成长,各人的糊口条件获得了极大的改进。此刻的饮食布局和饮食方法和本来的早就不在一样。此刻需要与时俱进的成长饮食行业,麻辣烫是公共消费者一直喜爱的美食产物,那么麻辣烫的成长也是在不断的...

多元新生文化受热追,扑通心动表彰大会成功“

12月6日晚,首届QQ音乐扑通心动表彰大会在上海圆满收官。作为大会压轴表演者的张艺兴,在大会结束后依然兴致满满,不仅在微博上晒出了自己与两把“表彰吉他”的合照——当晚他一人独得“扑通心动年度全能制作人...

微信春晚红包交税1亿元

微信春晚红包交税1亿元

央视春晚摇一摇我们发了5亿,交了1亿的税。单纯的C2C红包是不需要纳税的,因为非常小额。但是这个将来也不好说。 全国人大代表、腾讯公司董事会主席兼首席执行官马化腾表示,B2C的红包,比如央视春晚...

电热水器什么牌子好?教你选购技巧,千万别乱

电热水器什么牌子好?教你选购技巧,千万别乱

现在市面上的电热水器品种越来越多,品牌跟规格也随之增多,要想选购到好的电热水器,就需要对其有一定的了解,那么接下来就请跟随小编的脚步一起来了解下使用电热水器该注如何选购吧。 电热水器为储水式和即热式...

锦心似玉演员表,谭松韵上线真的很令人期待

今天就是米宵佳节,除了米宵晚会还有改编自吱吱小说《庶女攻略》的电视剧《锦心似玉》将在腾讯视频上线开播。 粉丝们早就翘首以盼,完全等不及了。 特别是钟汉良与谭松韵的铁粉,更是激动不已。 小...

先办事后付款的黑客联系方式(先做事后付款的黑客的联系方式)

一、先办事后付款的黑客联系方式(先做事后付款的黑客的联系方式) 1、先办事后付款的黑客,如果是真的黑客就不怕黑 客水平参差不齐,还是不要先付款的好,千万不要,他们本身就不是 良善 之辈。希望能帮到你...