用户
搜索
  • TA的每日心情
    慵懒
    昨天 15:33
  • 签到天数: 167 天

    连续签到: 5 天

    [LV.7]常住居民III

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    121

    主题

    311

    帖子

    2128

    魔法币
    收听
    0
    粉丝
    23
    注册时间
    2017-7-24

    幽默灌水王突出贡献春秋文阁i春秋签约作者i春秋推荐小组积极活跃奖春秋游侠秦

    发表于 2018-12-14 22:53:46 39134

    小白认真学审计ing

    0x00 前言

    在CVE列表中订上了这个cms,想要自己玩一下,然后把自己没有做好的地方进行一个复现。增长一下见识。

    0x01 黑盒测试

    1.观察一下

    测试前,先观察一下整个网站。

    发现就只有首页,存档,订阅,这些简单的功能。
    这里就应该去后台去看一看。

    这个是登陆页面

    然后是后台页面

    2. 黑盒测试

    2.1 后台登录界面

    首先要盯着的东西就是这个,第一次我们成功的登录了之后,这里发现一个bug。
    就是,只要登录成功一次之后,之后登录了之后就不会再对密码进行验证了。这里判断很有可能是没有对Cookie进行过期处理。
    我们来抓包进行测试

    这个是发送包

    这个是返回包
    从返回包可以看到,这里是对我们的账号和密码进行了判断,如果不正确的话,就返回了一个空的表单需要重新提交账号密码。
    这里发现,发送的不是一个数据包,而是两个
    提交了本地的Cookie
    重放一下

    这里看到就成功的登录进去了。

    我们删除Cookie再次尝试。

    登录失败。
    所以这里的逻辑可能不是登录引起的,而是通过判断Cookie引起的。
    这应该是一个小漏洞。等下白盒测试看看。

    2.2.撰写文章

    第二个看到的就是这个地方。

    日常xss测试。

    查新新的文章。

    可以看到这里成功的捕获存储型xss一枚。这里是标题进行了实体的转换(我猜的),然后是内容没有做一个过滤或者是转义。
    我们再提交一个标签看看

    发现标签也被过滤了。

    2.3 页面

    发现这个cms的页面和功能是真的非常简单的。我们又盯上了这个页面部分。

    我们来构造一个这样的payload。
    然后保存一下。

    查看页面

    成功的存储型xss一枚到手。估计就是对输入的内容没有进行转义导致的。

    2.4 设置

    这个是一个设置页面。我们先来观察一下。

    发现这里修改密码部分没有进行重复校验,很有可能存在CSRF。
    来试一下。
    使用bp抓包,然后生成一个csrf页面。

    我们创建好了之后,进行点击。

    点击之后的效果。

    那么这里是存在CSRF的。至于怎么利用就要自由发挥了。

    黑盒,我太菜了。。。找不到了。。。

    0x02 白盒测试

    我们来进行白盒测试吧。
    开seay,然后自动审计一下。

    我先写的复现cve,突然觉得自己审计啥呀,先看看大佬们的思路还是超级棒的。

    0x03 CVE

    白盒太菜了,所以就跟着大佬们找到的CVE进行复现一下,宽展自己的思路。
    CVE
    完成
    CVE-2018-18892
    CVE-2018-18891
    CVE-2018-17039
    CVE-2018-16298
    CVE-2018-16233
    CVE-2018-15899
    CVE-2018-10424
    CVE-2018-10423
    CVE-2018-10296
    CVE-2018-10227
    CVE-2018-1000638

    CVE-2018-18892

    MiniCMS 1.10 allows execution of arbitrary PHP code via the install.php sitename parameter, which affects the site_name field in mc_conf.php.
    看介绍说这个是一个代码执行的漏洞。
    第一次看到这个漏洞的时候感觉到的大佬还是厉害,这种都能找到。可能还是太菜了。

    在复现的过程中,发现作者给出来的payload已经不行了,所以只好自己分析。

    分析

    在看到这个cve的时候,就在想,这个漏洞是通过什么思路来找到的,个人认为这个还是很重要的。
    所以这里看一看。
    这里有两个思路,第一个就是从头到尾看一遍。第二个就是有关键字。关键字可能就是我们学习时候的收集和经验了。
    猜测找到这个cve的作者可能就是通过关键字来找的吧。
    本来以为复现这个很容易的,但是突然发现。那个文档写的很坑。

    从我这里的思路来看吧。

    首先是看一下安装的文件。

    因为这个cms不是mvc模式的话,可能看起来要简单一点。
    我们再来看一下界面。

    相对应的找到这里的代码。

    这里可以看到这有一个函数就是file_put_contents
    这个函数的作用就是把字符串写入一个文件。
    具体可以看这个资料。
    这里突然想,是不是可以利用这个东西来进行写个一句话木马啥的,然后菜刀就可以提权啥的。
    http://php.net/manual/zh/function.file-put-contents.php
    然后看到这里的通过_post获取数据,数据没有进行过滤。所以这里可以构成一个代码执行漏洞。
    先来看看这个cve作者的payload。


    再来看一下这个config文件的存储位置。

    看到这里可以成功的执行了phpinfo这个函数。
    这里捕获的关键字就是file_put_contents,有这个关键字出没的地方可以详细看一下。
    值得看的地方就在var_export这个函数,不知道是php的问题还是其他的问题,var_export这个函数会主动对一些符号进行过滤处理。
    这里做一个测试。
    测试代码:

    测试效果:

    可以很清楚的看到被转义了。
    所以看到var_export基本就差不多了。
    这个cve的作者提到了。

    这里,这里很明显是通过该了var_export处理,所以没有办法利用'进行过滤,所以这里是不存在命令执行的。

    CVE-2018-18891

    分析

    这个CVE就是一个可以删除任意文件的漏洞。
    使用seay审计,开自动审计。

    然后就可以看到这里。

    我们这里对这个函数进行溯源。

    这里可以看到通过来delete获取文章的参数,将参数传到delete_post

    这里看到delete_post这个函数还需要一个变量。我们进行溯源分析。

    这里看到是通过get来进行传参的。

    这里执行成功的前提就是我们有越权,或者说这里删除文件之前没有对权限进行判断。
    我们找到它进行权限判断的地方。
    这个head.php文件。

    这里就是对token的认证。
    然后这里可以看到在188行才调用了head.php文件。

    然后delete是在这个调用上面,所以会导致这个文件删除漏洞。

    payload就是mc-admin/post.php?delete=0p0zen&state=delete

    收获

    现在有了这样的思路,就是看删除内容的时候可以主要看一下它的权限问题。

    CVE-2018-18890

    这个大佬把文件不存在漏洞爆出了绝对路劲也提交CVE了。

    原来这种爆出绝对路劲的也算是一个CVE。

    CVE-2018-17039

    这个cve说的是在登录页面有一个echo页面。
    通透看了一遍,也没有明白是什么意思。所以只能慢慢分析一下。
    漏洞的出现位置是这里。但是怎么利用是真的没有弄懂。

    先来看一下$_SERVER['REQUEST_URI']的含义
    $_SERVER['REQUEST_URI']取得当前URL的 路径地址
    www.baidu.com/aaaa/bbb/index.php?id=1
    这里获取的就是/aaaa/bbb/index.php?id=1
    我尝试了半天,总是发现$_SERVER['REQUEST_URI']在firefox中被转义。

    然后突然发现作者写了ie浏览器不会被URLencoded。

    CVE-2018-16298

    这个漏洞应该算是比较平常的漏洞了。但是我太菜了,找不到呀,哭。

    使用seay代码审计系统自动审计,没找到。

    使用rips

    我们来看看这个echo的地方。

    首先确定的是这里的输出是没有过滤的。
    向上溯源。

    发现这里是输入的地方,在输入的时候也没有进行过滤。
    好了,这里基本就是存在xss了。
    从输入到输出,都没有过滤的时候,就很有可能存在漏洞了。我咋就找不到呢。。。。还是见的少了。

    正好还有其他的参数也一起看一看
    这个date参数

    首先是输出的时候。没有进行转义。

    然后就是输入的地方,没有进行过滤。

    成功xss。

    我不知道如果是参数不同的话,那么算不算是不同的cve。

    CVE-2018-16233

    直接使用rips进行分析。

    首先这里找到输出的地方,没有尽心输出的转义。

    这里是获取id的地方,也没有看到输入的时候进行过滤。

    继续看一下中间变量。


    然后在看,突然发现。

    这里获取这个东西,然后之后输出了,说的简单一点就是,和我们的输入没关系。
    所以ip这个参数不存在xss。
    但是可以出现爆出物理路劲的错误。

    然后接着看。

    这里属性使用htmlspecialchars进行过滤了。
    然后再看看输入的地方。

    按照作者的思路应该是这样的,但是,我一直以为只要过滤了一个地方就算是进行成功修复漏洞了。突然发现原来使用bp绕过这一层的时候,原来还是算xss,而且还是cve,长见识了。

    那么这里就可以使用bp进行过滤,或者可以利用重新表单来进行提交。

    CVE-2018-15899

    这个就是对page.php的一个xss,这里和post一摸一样。不知道为什么当时那个大佬不对post.php的漏洞进行提交cve呢。可能是大佬觉得不在意吧。

    见CVE-2018-16298

    CVE-2018-10424

    按照大佬的复现。

    成功了,但是我们要做的就是知道这个漏洞是怎么找到的。
    首先知道查看在这里。

    这里需要明白的就是为什么,这里只取了127.0.0.1而没有后面的。
    找了半天的资料突然发现。

    这里有一个/,导致从相对路劲变成了绝对路劲。
    所以产生了漏洞。

    CVE-2018-10423

    这个漏洞和CVE-2018-18890真的不一样吗?????
    不懂大佬们的操作。

    CVE-2018-10296

    这个cve漏洞,就是我们之前黑盒测试的标题的地方的xss。
    先看看标题。
    首先来说输入的地方

    然后再来看看这里输出的地方

    这里是被htmlspecialchars过滤了。所以没有形成xss。

    来看看内容部分。

    内容部分没有发现有经过htmlspecialchars过滤。

    这里调用函数。

    然后就造成了xss攻击。

    CVE-2018-10227

    来看看这个cve,我复现的时候没有成功,说我的ie没有权限。

    加入payload,使用bp拦截。

    成功xss

    来看看思路。
    先来看输入的位置,输入使用bp进行绕过。

    然后看看输出的地方。
    先追溯到head.php

    这里可以看到输出的title没有进行过滤。

    这里就很神奇了。title没有过滤,name过滤了。

    CVE-2018-1000638

    这个就是和CVE-2018-15899一样的,这里就不分析了。

    参考文章:
    https://github.com/AvaterXXX/MiniCms/blob/master/Command Execution.md(超级坑)
    https://github.com/AvaterXXX/MiniCms/blob/master/Authentication and Information Exposure.md#authentication-vulnerability
    https://github.com/bg5sbk/MiniCMS/issues/24
    https://github.com/bg5sbk/MiniCMS/issues/21
    https://github.com/bg5sbk/MiniCMS/issues/15

    论如何学习,我们来聊一聊经验呀784278256
    不错学习了,慢慢看
    使用道具 举报 回复
    很不错的一个文章,感谢分享
    使用道具 举报 回复
    表哥牛逼啊 求带带
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册