最近一直在学习代码审计的相关课程,也在找一些通用的CMS在练习,刚好在安全群里认识了一位志同道合的道友,于是就一起研究学习,前期还是不怎么太会,所以也一直两个人相互传授经验和交流,不过还好经过不断的奋战和努力终于出来了第一个洞,以下是相关步骤详情,请各位大佬批评指正:
1、这个CMS是PHP采用路由方式开发,前期总是找不到类和函数的调用地方,找了两天才有所发掘,找到sys/apps/controller/admin/backups.php文件的下图语句存在漏洞;
2、当url中存在restore_save时,即可绕过管理员登陆验证,直接访问网站后台数据库管理界面;
3、可备份数据库所有文件,并且下载访问http://127.0.0.1/admin.php/backups?restore_save在备份和下载时需要post:table=mc_admin和get:?restore_save同时传参;
4、备份成功后,下载时由于本人学艺不精,无法破解加密过程,但是可以通过还原备份时的路径获取dir的值,从而下载数据库备份文件;
5、访问http://127.0.0.1/admin.php/backups/restore/?restore_save;点击刚刚备份的数据库目录,打开burp抓包,点击还原
6、可以看到dir目录加密后的值已经出来
7、再访问http://127.0.0.1/admin.php/backups/zip/restore?restore_save
post传参刚刚抓到的post数据,也就是dir加密之后的值
get传参?restore_save即可下载刚刚备份的数据,影响巨大,可以整站数据打包下载
总结,无论是代码审计还是挖洞,都要有不抛弃不放弃的精神才能有所突破,这也是成长阶段必须的过程。加油!!!!(注:该漏洞已提交给厂商,目前已修复)