PHP代码审计--百家CMS4.1.4项目实战(下)

这是百家cms的第二部分-代码审计

关于百家cms的安装配置及黑盒测试,可以参考上一篇文章:

PHP代码审计--百家CMS4.1.4项目实战(上)_HEAVM的博客-CSDN博客

四、百家CMS代码审计

4.1路由分析

通过渗透测试观察目录结构,发现该系统的所有功能点都放在system目录下,二每个功能点都对应两个文件夹class、template。class下存放的是每个功能的后端代码,template下是前端代码。由于是商城系统,该系统分为网页端和手机端,所以class、template目录下分别有mobile手机端代码、web网页端代码。

在此项目中,大佬已经把获取的参数过滤掉了

4.2、XSS漏洞代码审计

这里的act参数代表system文件夹下某个功能点,do代表功能点下具体的PHP文件,op则代表文件走哪个分支

如XSS漏洞存在url为:index.php?mod=site&act=manager&do=store&op=post&beid=1

代码位置则为下方位置:system文件夹下store.php文件里面post分支

在post分支里面看到snme、website、isclose等参数通过前端传入

在分析我们可以看到文中并没有对传入参数做任何的过滤,就直接插入到数据库了

而在前端展示数据的代码文件中(store_display.php),插入的数据也是没有经过任何的过滤就通过页面渲染在前端通过echo进行输出了,从而造成XSS漏洞

4.3、SQL注入代码审计

发现sql注入的漏洞目录位于:

/index.php?mod=site&act=manager&do=store&op=display&beid=1

使用burp确认sql查询的传入参数为sname

在store.php文件display分支中发现传入的sql查询参数sname没有经过任何过滤就直接拼接到了mysqld_selectall这个查询函数中,造成了sql注入漏洞。

4.4、任意删除漏洞

进入数据备份页面,点击删除,使用burp抓包,发现删除功能的url为

/index.php?mod=site&act=manager&do=database&op=delete&id=MTY1NTI3NTUwNl9teU4zRDVKVg%3D%3D&beid=1

所以删除功能的代码在manager目录下的database.php文件的delete分支中,且删除文件名的参数为:id

由下图代码可看到,$_GP['id']函数接收前端的文件名参数后,仅仅只是把文件名base64解密了一下,就直接拼接到删除文件路径下了,没有做任何的过滤限制操作,造成了任意文件删除漏洞。

Ps:这里的is_dir()函数判断了是否是目录,如果是目录就执行删除,这样就解释了为什么只能删除目录。

文件删除2

文件删除漏洞代码审计第一种方法就是黑盒找到漏洞的位置,然后再在代码中找到漏洞

第二种是直接全局搜索unlink()函数,因为php删除文件只有unlink()这一个函数

在phpstrom按ctrl+shif+f 启动全局搜索unlink( ,

发现baijiacms\common.inc.php文件中的file_delete函数有unlink()方法,可以利用

然后在全局搜索“file_delete( ”, 查看那里调用了此函数,并且使用此函数执行了可控制参数。

最终找到了文件baijiacms-master/system/eshop/core/mobile/util/uploader.php

进入uploader.php文件,发现确实使用$_GPC['file']调用了可控参数。

再回去看看file_delete()函数利用unlink删除文件的的条件,发现是必须使$settings['system_isnetattach']不为空

全局搜索system_isnetattach发现该参数是从

baijiacms-master/system/manager/class/web/netattach.php文件中接收的

我们通过该目录路径,可以构造成其url为:

http://127.0.0.1:8081/baijiacms-master/index.php?mod=site&act=manager&do=netattach

http://127.0.0.1:8081/baijiacms-master/index.php?mod=site&act=manager&do=netattach

对应的功能点就是“附件设置”,`system_isnetattach`就是设置图片压缩比例,这里只要随意设置不为空就可以了。

由于此处文件删除是需要手动创建对应的前端页面,为了方便我们通过访问路由来实现文件删除。

在根目录下建一个test.txt,构造url访问

由于利用的函数在baijiacms-master/system/eshop/core/mobile/util/uploader.php文件的upload分支下,参数名为file.

url:

http://127.0.0.1:8081/baijiacms-master/index.php?mod=mobile&act=uploader&op=post&do=util&m=eshop&op=remove&file=../test.txt

ps:说实话,我有点没有搞懂这个url是怎么出来的。

成功删除文件

4.5、任意文件写入

在功能框上传文件使用burp抓包,获取文件路由位置为:

/baijiacms-master/index.php?mod=site&do=file&act=public&op=fetch&beid=1&url=234

由路由找到代码的位置,发现使用了fetch_net_file_upload()函数去读取写入文件,查看一下fetch_net_file_upload()函数详细信息。s

在baijiacms-master\includes\baijiacms\common.inc.php文件下找到了

fetch_net_file_upload()函数,发现在此函数中使用了file_get_contents()函数获取文件,并且没有对文件的路径进行任何过滤

4.6、命令执行漏洞

使用burp抓包,查看命令执行漏洞的目录路由为:

/baijiacms-master/index.php?mod=site&act=weixin&do=setting&beid=1

传入的文件参数名称为:weixin_verify_file

传入的文件参数名称为:weixin_verify_file

根据路由找到了代码发现使用在此函数中传入了文件:$file=$_FILES['weixin_verify_file'];

然后判断一下文件后缀名是否为txt格式,就是用file_save()函数处理文件,并且file_save()函数中参数:$file['name']的值就是上传文件名字:&whoami&.txt

然后我们查看一下file_save()这个函数,

跟进file_save()函数,该函数中传递过来五个参数

而在system函数中,$file_full_path参数拼接了我们上传的文件的文件名($file['name']的值)到执行路径中,所以我们通过&分割,就造成了命令执行漏洞。

我们再回头看看file_save()函数,要执行system命令,还需要判断

$settings['image_compress_openscale']参数不能为空,

这个参数,就是附件设置模块中的,图片压缩比例不能为空。

一般快速查找命令执行漏洞的代码审计方法

白盒就是搜索几个危险函数: exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec()

黑盒就是不断测试可弄输入参数,一般来说命令执行漏洞还是白盒测试比较方便,就是查找这几个危险函数,然后看函数里面有没有可以控制参数,参数有没有被过滤。

参考链接:

PHP代码审计之百家CMS4.1.4版本实战(下)之代码审计中的SQL注入&RCE&任意文件写入&任意文件删除等

https://xz.aliyun.com/t/10678

https://mp.weixin.qq.com/s?__biz=Mzg3MDU1MjgwNA==&mid=2247484280&idx=1&sn=9867290b6640418534318049899281be&chksm=ce8d46f3f9facfe57afb58b2c7ea286a25ee1dc7e8e225907035c28f72f365c084c8bab04781&scene=21#wechat_redirect

声明:

本文仅限于大家技术交流和学习,严禁读者利用本博客的所有知识点进行非法操作。如果你利用文章中介绍的技术对他人造成损失,后果由您自行承担,感谢您的配合,

作者创作不容易,请大家点赞收藏支持一下。谢谢各位读者大老爷。

PHP代码审计--百家CMS4.1.4项目实战(下)相关推荐

  1. PHP代码审计--百家CMS4.1.4项目实战(上)

    PHP代码审计--百家CMS4.1.4项目实战(上) 前提: 最近工作有点闲,就想着开始拓展技能了,学一下代码审计,入门就从php开始吧.这个百家CMS项目,我分为两部分测试,一.是渗透测试纯黑盒测试 ...

  2. [php-代码审计]百家cms4.14

    [php-代码审计]通读百家cms4.14 cms目录结构 先看是否存在install重装漏洞 看一下index.php正常流程 article模块,存在sql注入 util模块存在前台任意文件删除 ...

  3. 百度新闻源重大调整,百家号将成企业曝光下一个风口?

    3月20日,百度在站长平台发布公告,宣布取消百度新闻源制度,一时间成为站长圈的重磅新闻.对大部分企业来说,这个消息可谓喜忧参半.喜的是终于不用花大量资金在百度购买新闻源,帮企业SEO省钱:忧的是企业软 ...

  4. #uni-app 开发项目实战# 下拉刷新,上拉加载数据

    一.下拉刷新的思路: 第一步: 在pages.json里面, 找到想要设置下拉刷新的页面, 进行配置 加入-----"enablePullDownRefresh":true  &q ...

  5. 互联网日报 | 微信上线寄收快递服务;跟谁学推出“百家素养课”;宁德时代将发布百万公里续航电池...

    今日看点 ✦ 微信推出寄收快递服务,上线"微信寄快递"小程序 ✦ 阿里云首次公布再生长三大方向:做深基础.做厚中台.做强生态 ✦ 拼多多宣布加码618:补贴不设上限,启动" ...

  6. 账号类型_2019年头条、百家、大鱼、企鹅四平台哪种类型的账号最受欢迎?

    2019年已经离我们远去,过去一年新媒体行业发展状况如何? 易撰收集了2019年头条.百家.大鱼.企鹅4个主流新媒体平台账号发文数据. 并根据数据分析2019年全年新媒体领域发展情况,观察这4个平台的 ...

  7. 网易云音乐移动端项目实战(分解上)

    网易云音乐后台API服务搭建 步骤一 windows系统安装git //傻瓜式安装,可以一直next 步骤二 网易云音乐 NodeJS 版 API 下载好后,在vscode下新建一个文件夹 右击打开g ...

  8. 代码审计之百家cms

    文章目录 前言 一.本地项目部署 二.漏洞挖掘 1.准备 2.存储型XSS 3.SQL注入 4.任意路径删除 5.任意文件删除 6.远程文件上传 7.命令执行 三.总结 前言 百家cms微商城是一款免 ...

  9. 洲际酒店集团大中华区特许经营酒店已开业150家;百胜中国食物银行项目已覆盖超100家肯德基 | 美通社头条...

    要闻摘要:亚太区最佳科技中心排行:北京上海深圳进前五.洲际酒店集团大中华区特许经营酒店已开业150家.温德姆酒店集团推出新品牌Wyndham Alltra.百胜中国食物银行项目已覆盖超100家肯德基. ...

最新文章

  1. java 定义xml_java中web.xml定义详解
  2. 经典面试题(31):以下代码将输出的结果是什么?
  3. web开发中四种域的生命周期
  4. win10 mysql数据库中文乱码
  5. Java 获取昨天、当前、明天的时间
  6. 安装ipython(一分钟读懂)
  7. linux 安装wordpress
  8. 干货|一文看懂BLE低功耗技术-附主流BLE芯片厂商介绍
  9. socket -- epoll模型
  10. 融合黄金正弦混合变异的自适应樽海鞘群算法
  11. 第四章 子载波均衡和导频矫正
  12. 用python搭建邮箱,自动收发邮箱
  13. python爬虫GUI工具,tkinter网易云歌单歌曲下载器
  14. 在VMware Server上安装Windows Home Server“ Vail”
  15. 黑桃符号java怎么打印出来_java入门基础(四)
  16. 剖析kubernetes集群内部DNS解析原理
  17. 批量检测百度云分享链接有效性方法
  18. 不用代码免费采集网站内容_看一遍就能上手的火车头采集图文全流程教程
  19. 华硕服务器怎么装系统教程视频,华硕怎么安装linux系统教程视频
  20. 计算机技术在法学方面的应用,现代计算机技术为法学带来了什么-西安交通大学教师个人主页.PDF...

热门文章

  1. response Headers与request Headers字段详解
  2. 独家 | 这张骑马的宇航员图片是AI感知世界的一个里程碑(附链接)
  3. 人脸识别相关的数据集汇总
  4. 线阵ccd模块LCAMV8-S11639-01/S11638高灵敏线阵图像传感器模组、驱动板
  5. Cadence Orcad Capture创建多部分Symbol及Homogeneous及Heterogeneous图文教程及视频演示
  6. php++think命令报错,think命令行
  7. html抓取网址某链接,URL 筛选小工具 提取网页中的链接地址
  8. vue列表的单独展开收起和全部展开收起
  9. objectArx --- ADS篇
  10. @Autowired的原理简识