转自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. mysql三级连查,左连

    需求:比如:学校里班级,班级里有学生.利用左连查出所有的信息 select <include refid="Base_Column_List_Left_Join"/>f ...

  2. Golang 函数

    创建函数 package main import "fmt" //有参数,有返回值 func demo(a int, s string) (int, string) { retur ...

  3. 用IntelliJ IDEA编译,编译之后提示 无效的标记: -release

    软件版本:ideaIU-2016.3.2 JDK:jdk-9.0.4_windows-x64_bin 开始的时候建立一个maven项目,发现编译的时候提示[无效的标记: -release],以为是项目 ...

  4. auto_increment 自增键的一些说明

    导致auto_increment变小的几种情况: 1. alter table xx auto_increment = yy; 2. truncate table 3. restart mysql 第 ...

  5. python箱型图

    #-*- coding: utf-8 -*- import pandas as pd catering_sale = '../data/catering_sale.xls' #餐饮数据 data = ...

  6. (一) 关于配置travis-ci持续集成python pytest测试的相关记录

    首先由于公司用上了高大上的travis-ci商用版,一直想试着学学弄弄看.现在要写openapi的相关测试,而且要在travis-ci上集成.我就想体验一下这个过程.所以自己弄了一个public的仓库 ...

  7. 《spark快速大数据分析》

    第一 概论 1.spark的特点 适用多种不同分布式平台的场景,包括批处理,迭代算法,交互式查询,流处理: spark提供了python,scale,java等接口 2.spark的组件 spark的 ...

  8. js 錯誤

    try{ //需要被檢測是否拋出錯誤 } catch(err) { //錯誤處理代碼 } try.catch成對出現 throw:拋出錯誤 當錯誤發生時,javascript引擎停止運行,并生成一個錯 ...

  9. JavaScript——数组

    数组是JavaScript中的常用类型,本文详述了数组的基本知识以及一些常用的数组方法,并对每种方法进行了详细解释 数组定义 用字面量直接定义 1 var arr=[0,0,0]; //注意,是方括号 ...

  10. docker资料---添加阿里docker加速镜像

    首先必须登录阿里云获得加速镜像地址: https://cr.console.aliyun.com/#/accelerator 基于centOS7 cp -n /lib/systemd/system/d ...