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

Posted 南瓜__pumpkin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Mac配置CMS审计环境:ThinkCMFv2.2.3的主要内容,如果未能解决你的问题,请参考以下文章

网络安全审计之CMS代码审计

MAC OS系统下怎么运行织梦cms,怎么搭建php环境?10.9系统

代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)

代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)

60cms Cookies欺骗漏洞审计

php代码审计熊海cms1.0