• CRMEB多端多语言系统文件上传0Day代审历程


    Git仓库:

    https://github.com/crmeb/CRMEB
    
    • 1

    简介:

    两天攻防中,某政局子公司官网后台采用的CRMEB开源商城CMS,挺奇葩,别问怎么总让我碰到这种东西,我也不知道,主打的就是一个魔幻、抽象。最后通过审代码,绕过历史漏洞修复的补丁(文章内容可能有点少,没办法,这个代审快到了我只用了5秒)

    水就完事儿了……
    
    • 1

    0x01、历史nDay漏洞探测:

    别问,问就是谷歌(小型国内CMS百度也行,大型CMS更建议谷歌,配合团队漏洞库):

    在这里插入图片描述

    注:优先看能getShell的nDay漏洞 最开始以为没有能直接GetShell的历史漏洞,后来才发现第一条搜索结果里这个任意文件下载指的是对服务端进行文件下载,以此getShell

    尊重版权,不再复述该nDay漏洞作者代审流程,链接在此:

    https://blog.csdn.net/heartself/article/details/127522470

    实际环境中该CMS为最新版本,经粗略复测该漏洞已修复,php落地失败!!!

    0x02、代码审计0Day

    1、审原漏洞修复是否可绕过

    1.1、寻找功能点(根据nDay作者代审文件函数)

    工程代码中,唯一一处存在临时落地文件包裹在抛异常的位置
    (try代码异常则运行不到unlink删除临时文件代码)

    在这里插入图片描述

    这个位置如原作者做说,通过设置appid为空,即可抛异常(数据库事务中直播间商品是要和小程序appid绑定,appid空则异常抛错跳过unlink继续执行)。

    跟进downloadImage下载函数,寻找漏洞修补代码:

    在这里插入图片描述

    可以看到,直接判断后缀是否为小写的php\js\html,我们可以通过大小写直接绕过。
    同样可以通过再上传解析文件处理也可以。

    至于目录构造方式,同样可以继续向下跟踪至getImageExtname函数:

    在这里插入图片描述

    1.2、二营长,开炮

    着实没想到修补方案这么der,完全可以黑盒绕过,费不着代审。

    根据nDay作者流程走,服务端部署文件后缀改成Php就可以了!

    在这里插入图片描述

    0x03、然后

    昨晚我做了个梦,梦到Songqb吃[便便],我劝他他不听,他TMD还打我

  • 相关阅读:
    【C进阶】之多文件编程
    Redis数据结构:集合
    【 C++ 】unordered_map和unordered_set的介绍和使用
    Python趣味入门12:初遇类与实例
    智牛股项目--02
    kswapd0 引起 CPU高占用解决方法
    [039]量化交易] DataFrame、Series数据结构访问
    软件工程第七周
    Win10 + Ubuntu 双系统完美避坑删除 Ubuntu 教程
    java计算机毕业设计网上书店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 原文地址:https://blog.csdn.net/weixin_43526443/article/details/132694087