Mac配置CMS审计环境:ThinkCMFv2.2.3


搭建和配置CMS项目

  访问开源社区gitee.com,搜索ThinkCMF,找到https://gitee.com/eded/thinkcmf?_from=gitee_search,下载ThinkCMF 2.2.3版本到本地。
  对文件夹进行重命名,复制到Mac的Web目录,先直接访问thinkcmfv2.2.3/index.php,效果如图所示。

cp -r thinkcmf2.2.3 /Library/WebServer/Documents/thinkcmfv2.2.3

在这里插入图片描述

  搞了好久,甚至重新下载了一份源码:https://gitee.com/liuyan814/thinkcmfx?_from=gitee_search。新的一份源码,把thinkcmf目录移动到网站根目录下,还是发生文件报错。
  把thinkcmf目录下的文件全部移动到网站根目录下,访问127.0.0.1/index.php,弹出安装向导。
在这里插入图片描述

  MySQL又搞了很久,有个坑:注意配置ThinkCMF数据库口令的时候,不要被置空。
在这里插入图片描述

在这里插入图片描述

ThinkCMF验证码加载失败

  登陆后台,发现验证码无法加载,应该是函数问题。访问/index.php,发现验证码也无法加载。使用PHPStorm打开index.php,查找项目代码,在themes/simplebootx/User/register.html文件里找到验证码的相关代码,但一时无法解决。

在这里插入图片描述
  尝试1-不可行:修改application/Api/Controller/CheckcodeController.class.php文件,在index()中添加ob_clean();,测试发现不可行。
  尝试2-可行:像软件逆向一样,寻找校验函数并修改即可。首先使用如下Python脚本寻找关键字“验证码错误”。通过查看PHP文件,最终在/application/Common/Common/function.php文件找到校验函数,只需要把/Library/WebServer/Documents/application/Common/Common/function.php1829行的return语句修改为return true;即可。(验证码只要不为空即可)
  这里寻找校验函数的时候犯了一个低级错误,调试修改的是Download目录下的文件,而不是网站根目录下的文件,耽误了时间。现在可以使用注册用户的功能,可以审计测试这部分的漏洞了。

# *-* coding:utf-8 *-*
import os 

def readFilePath(filePath, fileList):

    files = os.listdir(filePath)
    for file in files:
        if not os.path.isdir(filePath+"/"+file):            # 不是目录则打开
            fileList.append(filePath+"/"+file)
        else:
            fileList = readFilePath(filePath+"/"+file, fileList)      # 新的文件目录

        #print(file)
    return fileList

def strDetect(fileList):
    for file in fileList:
        with open(file, 'r') as f:
            try:
                fileText = f.read()
                if "验证码错误" in fileText:
                    print(file)
            except:
                pass
                # print("error")

if __name__ == "__main__":
    path = "/Library/WebServer/Documents"
    fileList = []
    fileList = readFilePath(path, fileList)
    strDetect(fileList)

在这里插入图片描述
在这里插入图片描述

  ThinkCMF的资源访问,如下是几个URL,可以看到通过index.php访问的都是application目录(称为一级目录)下的资源,其中g表示二级目录,根据m和a选择三级目录Controller下的处理文件。

后台登陆URL:/index.php?g=admin&m=public&a=login,
前台注册URL:index.php?g=user&m=register&a=index,
验证码URL:/index.php?g=api&m=checkcode&a=index
口令问题

  MySQL的口令忘了又改,报错信息:pycharm本地数据库,莫名出现一个错误,总会提示授权失败:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)。参考解决:https://blog.csdn.net/weixin_39599454/article/details/113304952。

  ThinkCMF后台admin的口令忘了又改,参考解决:https://www.cnblogs.com/xxx91hx/p/9243979.html。

  本地配置环境,默认设置口令与用户名相同以避免遗忘。

关于框架学习

  可以学,但必然不是ThinkCMF入手,因为它是对ThinkPHP的二次开发。考虑可以找身边的师傅推荐,或者从零学习写一个demo框架。


代码审计

  把项目代码与另外一个thinkcmf2.2.3的项目代码做比较,发现正在使用的这个项目应该是经过了修改,所以需要重新导入未修改过的thinkcmf2.2.3项目。(测试发现,还是当前的thinkcmfx项目可用,重新配置一遍)
  还是开发、研发更让人快乐a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值