转自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. CS、IP和PC寄存器

    CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址) ...

  2. Jquery 组 tbale表格隔行变色

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  3. 软件工程_7th weeks

    内聚和耦合(学习笔记) 一.内聚 内聚是一个模块内部各成分之间相关联程度的度量.把内聚按紧密程度从低到高排列次序为: 1.偶然内聚:指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系 ...

  4. elk认证模块x-pack安装

    一.elasticsearch安装x-pack elasticsearch/bin/elasticsearch-plugin install x-pack ######## -> Downloa ...

  5. Delphi学习技巧

    我感觉学习最大的诀窍是, 尽快捕捉到设计者(Delphi VCL 的设计者.进而是 Windows 操作系统的设计者)的某些思路, 和大师的思路吻合了, 才能够融汇贯通, 同时从容使用它们的成果. 碰 ...

  6. CentOS常用包安装

    安装rz和sz命令: yum install lrzsz 安装unzip:yum install unzip

  7. cxf 方法添加注解

    /** * 登录 * @param uid * @param password * @return */ @POST @Path(value = "/login") public ...

  8. jenkins--使用命令行自动启动Jenkins的job

    Jenkins作为持续集成强大的开源工具,除了使用界面它还有强大的cli命令. 1 自动启动jenkins 的job: 启动不带参数的job: curl --user USER:PASSWORD JE ...

  9. spring boot 系列之五:spring boot 通过devtools进行热部署

    前面已经分享过四篇随笔: spring boot 系列之一:spring boot 入门 spring boot 系列之二:spring boot 如何修改默认端口号和contextpath spri ...

  10. python 模块 - 序列化 json 和 pickle

    1,引入 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval ...