zoukankan      html  css  js  c++  java
  • bagecms的代码审计

    老的一个cms了,用来学习一下代码审计

    BageCMS 是一套基于 PHP 和 MySQL 的跨平台的内容管理系统

    在配合phpstudy安装后,进行代码审计,因为已经下载过源码了

    image-20210905111808413

    先扫一波

    image-20210905112058481

    上去就看见我们最爱的文件包含漏洞

    这个源码是在网站上搜的,当然可能会有人故意在里面加后门,然后利用谷歌语法进行网站的攻击

    1

    跳转到可疑的变量进行查看

    image-20210905151527316

    filename的参数是通过trim函数去掉空格来进行的

    并且后面对数据进行了base64加密

    $data['filename'] = XUtils::b64decode( $filename );
    XUtils是一个开发框架
    

    根据之前的liscen的txt文本提示的登录后台,使用r参数进行传递

    image-20210905152750823

    image-20210905154750042

    然后根据路径进行传递

    ?r=admini/Template/Update&filename=Li4vLi4vLi4vcHJvdGVjdGVkL2NvbmZpZy9tYWluLnBocA==
    

    这个poc的解读的意思是说在admini目录下(这个是因为调用admini就等于调用整个controllers模板块下的文件,然后我们可以指定调用模板,自己尝试如果要带TemplateController来进行也不行,必须去掉controller,当然也可以进行任意模块的调用)调用TemplateController.php的功能的函数行为为Update的参数的filename来进行任意读取文件,(中间出现一个错误,就是读取文件的向上翻不能多,也不能少,不然会报错)

    image-20210905155048614

    2

    当然有了任意文件读取,就可以登录后台进行后门的利用,其实也可以使用模块,利用admini的来进行template的操作模块,插入后门

    image-20210905160031864

    插入最常利用的页面地址

    image-20210905160436190

    image-20210905160624254

    总结

    这是最简单的两个了,还有很多,自己太菜了,其实尽量在index.php或者admini的管理后台下审计比较现实,因为其他的很难关联上url上

    关于第一个可以采取替换,从而取代敏感信息

    对filename进行替换
    $str="***";
    $safe_filename=preg_replace("/(../)/",$str,$filename);
    这个的意思是执行一个正则表达式进行替换
    意思是匹配filename的字符与/(../)/正则相关的进行替换成str变量的
    关于这个正则的意思就是对../进行处理
    是对字符的一种转义,所以括号里就是../
    ( )  标记一个子表达式的开始和结束位置
    最外面的//就是一个正则的基本包含内容
    

    第二个关闭模块的任意利用

    不允许创建或编辑模板在config里设置为N

    别人都在不停的努力,自己又怎么会停
  • 相关阅读:
    Photoshop操作指南
    Photoshop操作指南
    财经法规四-2
    财经法规四-1
    财经法规三-3
    财经法规复习三-2
    财经法规复习三-1
    财经法规复习卷一-2
    财经法规二-3
    财经法规二-2
  • 原文地址:https://www.cnblogs.com/chenyouxiu/p/15229990.html
Copyright © 2011-2022 走看看