转自https://larryxi.github.io/

0x00 背景

文章内容仅作学习参考,勿以恶小而为

0x01 任意文件删除

拿到一个cms进行安装后,首先比较喜欢看看其安装逻辑,查找有没有在安装流程中直接导致重装的可能性。由于系统是THINKPHP5开发的,所以可以定位到application/install/controller/Index.php为安装的控制器,其中的check函数根据install.lock来保证系统不会被二次安装,如下:

不能直接重装的话,就只能借助unlink等函数看能不能删除任意文件进行重装,定位到application/user/controller/Index.php中的编辑头像的逻辑touxiang函数,如下:

其中第119~127行调用了unlink函数,意思是上传头像后删除原来的头像图片,具体步骤为:用户在客户端上传完头像后,客户端还会向这个touxiang函数POST新头像的url,然后程序将新url和旧url进行对比,不同的话就把旧url对应的(头像)文件删除,把新url写入到数据库中。

其中POST的url是我们可控的,而且程序也没有对url做任何限制,这样我们就可以删除任意文件乃至重装漏洞了。

那么我们来实际验证一下,首先在网站上注册一个用户,在上传完图片后用burp截获到POST 新url的请求:

我们把新url的路径改为install.lock对应的路径再重放过去 ,这样新图片的url就更改了,如下:

所以当我们再POST一个新的url,旧的url文件就会被删除了:

Install.lock文件被删除,所以导致了重装:

当用户上传完图片后,内部逻辑直接更新数据库就好,何必要信任恶意的外来输入呢。

0x02 用户评论处xss

由于这个框架的注入不是太好找,那就来看看有没有xss漏洞,首先从application/config.php看到其默认是没有任何过滤的:

那么根据用户的操作来定向追踪一下可能存在xss的点,开发者对于修改资料和提交留言处都对输入进行了htmlspecialchars处理,但在用户评论处application/index/controller/Index.php中:

开发者直接将post的评论内容插入数据库,这里就有可能导致xss漏洞了。在评论后抓包看一下:

开发者只是依据前端来进行过滤,这样的效果甚微,我们还是可以注入xss。在后台页面会直接从数据库拿出前5条评论输出显示,这样我们在提交评论后就可以影响到后台了,证明如下图:

0x03 任意评论或收藏删除

基于逻辑来寻找漏洞的话,可以看看用户有哪些操作可能导致越权等常规的逻辑漏洞,因此在application/user/controller/Index.php中找到这么一段逻辑:

这里未验证身份就可以删除对应id的评论和收藏,而且也没做任何的权限验证,那我们循环跑一遍请求就可删除所有的评论和收藏了。下图中不加sessionid即可删除对应评论:

0x03 后记

在测试任意文件删除的时候,我本地环境有点问题就直接上官网去测了,一时手快就直接让官网重装了,扰乱了人家的运营有些尴尬,这种敏感文件的操作还是尽量本地或demo站测试比较好。

在审计出任意文件删除后看到一位大牛的博客http://balis0ng.com/post/dai-ma-shen-ji/2017-03-27 ,审计的同一套系统,比我早三天,也可以拿来学习。

虽说这个CMS是用THINKPHP5框架写的,但是开发者还是没有考虑太多的安全问题,在掌握了框架的一些应用规则后,代码审计的思路都是相通的,多实践才能多知晓。

Catfish CMS漏洞集合的更多相关文章

  1. 代码审计之Catfish CMS v4.5.7后台作者权限越权两枚+存储型XSS一枚

    首先本地搭建环境,我所使用的是Windows PHPstudy集成环境.使用起来非常方便.特别是审计的时候.可以任意切换PHP版本. 本文作者:226safe Team – Poacher 0×01 ...

  2. [CMS漏洞]EmpireCMS_V7.5的一次审计【转载】

    i春秋作家:Qclover 原文来自:EmpireCMS_V7.5的一次审计 0x01 概述 最近在做审计和WAF规则的编写,在CNVD和CNNVD等漏洞平台寻找各类CMS漏洞研究编写规则时顺便抽空对 ...

  3. [JavaWeb]Shiro漏洞集合——代码审计

    Shiro漏洞集合 Shiro其实就是一组Filter,他会进行验证,鉴权,会话 Management,再把请求转到web过滤器.所以最好先去对Shiro有个整体性的了解. 复现环境:https:// ...

  4. FrameScan-GUI CMS漏洞扫描

    工具简介 FrameScan-GUI是一款python3和Pyqt编写的具有图形化界面的cms漏洞检测框架,是FrameScan的加强版.支持多种检测方式,支持大多数CMS,可以自定义CMS类型及自行 ...

  5. FrameScan CMS漏洞扫描

    工具简介 GithubL:https://github.com/qianxiao996/FrameScan FrameScan是一款python3编写的简易的cms漏洞检测框架,支持多种检测方式,支持 ...

  6. CMS漏洞检测工具 – CMSmap

    CMSmap是一个Python编写的针对开源CMS(内容管理系统)的安全扫描器,它可以自动检测当前国外最流行的CMS的安全漏洞. CMSmap主要是在一个单一的工具集合了不同类型的CMS的常见的漏洞. ...

  7. CMS漏洞

    例1, discuz!后台弱口令/暴力破解 1.http://club.lenovo.com.cn/admin.php

  8. 应用安全-CMF/CMS漏洞整理

    CMS识别 云悉 http://whatweb.bugscaner.com/batch.html CakePHP  CakePHP <= / Cache Corruption Exploit 2 ...

  9. 幕布V1.1.9最新版漏洞集合

    0X00 前言 幕布本人最早接触是在P神的知识星球里面看到P神推荐的,后来下了个用着还挺好用. 之前一直都放一些零零散散的笔记,最近整理的时候,一时兴起,本着漏洞源于生活的态度,遂对幕布的安全性做了些 ...

随机推荐

  1. Maven的课堂笔记4

    9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个setting ...

  2. ping命令返回的TTL值判断操作系统

    通过简单的ping命令,查看返回的TTL值来判断对方的操作系统 生存时间(TTL)是IP分组中的一个值,网络中的路由器通过察看这个值就可以判断这个IP分组是不是已经在网络中停留了很久,进而决定是否要将 ...

  3. python模块_pcharm导入包的问题

    1.添加pip包 2.导入项目需要由内置包(library root)

  4. YII2十三大特性

    第一(框架&项目) 1. 框架安装 2. 框架扩展安装 3. 项目初始化-->php yii init 4. 美化URL配置 'urlManager' => [ 'enablePr ...

  5. hbase中文内容编码转换

    /** * HBASE中文转换 */ @Test public void testHbaseStr() throws Exception { // Hbase UTF8编码 String conten ...

  6. Lodop打印控件输出页码(超文本和纯文本页码)

    Lodop打印控件打印超文本既可以手动分页,也可以自动分页,自动分页可阅读本博客的另一篇博文:Lodop打印控件 超文本自动分页 自动分页的时候,往往是不知道需要打印的内容到底分了几页,也就不可能预先 ...

  7. 画caffe训练loss曲线

    Linux下操作 1. 将loss值存储到lossInf.txt中 fName1='loss.txt' cat loss.log | grep "solver.cpp:218] Iterat ...

  8. BZOJ2821 作诗(分块)

    和区间众数几乎一模一样的套路. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include&l ...

  9. BZOJ5294 [BJOI2018] 二进制 【线段树】

    BJOI的题目感觉有点难写 题目分析: 首先推一波结论.接下来的一切都在模3意义下 现在我们将二进制位重组,不难发现的是2^0≡1,2^1≡2,2^2≡1,2^3≡2....所以我们考虑这样的式子 2 ...

  10. MT【39】构造二次函数证明

    这种构造二次函数的方法最早接触的应该是在证明柯西不等式时: 再举一例: 最后再举个反向不等式的例子: 评:此类题目的证明是如何想到的呢?他们都有一个明显的特征$AB\ge(\le)C^2$,此时构造二 ...