今天在群里看到了一个师傅再问有没有人做过帝国CMS的后台Getshell,我之前也是没做过的,于是就下了一个尝试着做了下,那个师傅给我说了出现漏洞的是一个文件上传的地方,根据师傅的提示我就开始操作了。
搭建有两种方法
1.搭建到自己的服务器上,在宝塔界面设置网站的目录指向
2.使用phpstudy集成环境,将下载的cms放到www
目录下,然后访问localhost/cms/upload/e/install
开始安装。
根据师傅的提示,我便开始在网站上寻找上传文件的地方,终于找到了导入系统模型的一个上传点,大致看了一下,发现只让上传.mod
后缀的文件
然后我开始在代码文件夹里全局搜索.mod
然后去尝试能否有可以利用的点。发现了class
目录下moddofun.php
上图我标注了两点,第一点就是我们在前端看到的那个后缀只能为.mod
的限制代码,重要的在第二点上,我们可以看到上传文件处使用make_password(10)对时间进行加密然后在和后面的.php
进行拼接作为上传文件的文件名,这样一来我们就没办法的得到上传的木马文件名也就没有办法利用了。
我们接着往下面浏览代码
看到了我标记的那一处代码,这样一来直接包含了我们上传的文件,我们只要在上传的文件中添加可以创建文件的代码,就可以成功绕过上面的文件名限制。然后上传后缀名为.mod
的文件
经过上面的分析,我总感觉不那么真实,这比我打CTF做代码审计的时候感觉还要简单一点,这里说一下载上传的文件里添加可以创建文件的代码。介绍一个PHP的file_put_contents()
函数,作用是把一个字符串写入文件中。PHP file_put_contents()学习地址
我们来进行第一次尝试,构造payload
<?php file_put_contents("ly0n.php","<?php phpinfo(); ?>"); ?>
重命名为ly0n.php.mod
,并上传。
我们可以看到在admin
目录下出现了ly0n.php
的文件我们访问下,成功
我们在进行第二次尝试,上传一句话马,然后使用蚁剑连接
<?php ?>"); ?>
成功导入。使用蚁剑连接
成功Getshell!!