pbootcms审计记录

admin 2023年3月11日23:32:30pbootcms审计记录已关闭评论69 views字数 1550阅读5分10秒阅读模式

环境搭建

利用 phpstudy 轻松搭建 pbootcms 环境,但是在搭建过程中,我们自己设定 phpstudy 的解析域名不行,需要获取授权码,除了到官网去申请外,我们也可以直接通过修改域名为 localhost 绕过。

pbootcms审计记录

因为默认是 SQLilte 数据库 直接就可以安装好,但是为了后面注入的我们将数据库改为 MYSQL 数据库

修改 config/database.php

pbootcms审计记录

将文件 static/backup/sql/pbootcms_v310.sql 导入到创建好的数据库中

pbootcms审计记录

我们可以通过任意的报错信息获取 pbootcms 的版本信息

pbootcms审计记录

漏洞复现

我们先对漏洞进行复现,之后再做一个整体的分析

我们向index.php 传参 http://localhost/index.php?1%27

pbootcms审计记录

我们发现直接爆出了 SQL 语句

尝试闭合

http://localhost/index.php?1%27)and(%271

pbootcms审计记录

构造数据包

``python
GET /index.php?1')and(sleep(5))and('1 HTTP/1.1
Host: localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

```

发现成功使得服务器沉睡五秒

pbootcms审计记录

是属于 SQL 盲注 再进一步的做具体验证

pbootcms审计记录

pbootcms审计记录

substr((select(database())),1,1)like'p' 为true 我们本身对应的数据库名为 pbootcms 所以证明SQL 注入无误

证实漏洞已经存在,我们就对漏洞进行一个分析

漏洞分析

静态逆向分析

为了找到漏洞代码的位置,我们直接从执行 SQL 语句的函数,添加断点,判断执行 SQL 的内容

这里我是直接打印出 SQL 语句并停止程序

\core\database\Mysqli::query

pbootcms审计记录

pbootcms审计记录

看到了 SQL 语句 就直接进行查询,全局搜索后发现调用来自于

\app\home\model\ParserModel::getSort

pbootcms审计记录

而注入的参数就是 \$scode

寻找 getSort 的调用,并查看其参数是否可控

pbootcms审计记录

最终在

\app\home\controller\IndexController::_empty

pbootcms审计记录

pbootcms审计记录

path 就是来自于路由器的匹配

动态正向调试

pbootcms审计记录

\app\home\model\ParserModel::getSort

pbootcms审计记录

\core\basic\Model::find

pbootcms审计记录

\core\database\Mysqli::one

pbootcms审计记录

\core\database\Mysqli::query

pbootcms审计记录

漏洞修复

在最新版本中这个漏洞已经被修复,我们跟进查看一下漏洞修复方法

apps/home/controller/IndexController.php::_empty

pbootcms审计记录

pbootcms审计记录

我们看到对路由进行了转义处理,如此一来对 SQL 注入的防护似乎达到的一劳永逸的效果,修复方式还是很不错,在入口处添加转义函数,对路由进行转义处理,从而避免掉 SQL 注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月11日23:32:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   pbootcms审计记录http://cn-sec.com/archives/1599465.html