[【通过】] cscms程式舞曲v3.5代码审计注入到getshell

[复制链接]
lingshao56 发表于 2018-9-4 17:21:52 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 109

CSCMSv3.5漏洞分析0x00 前言
       此系统为程氏CMS-多元化内容管理系统,中国顶先的音乐门户内容管理系统,首发cnvd,最新版本已经是4.x
漏洞环境:PHPStudy+MYSQL CSCMSV3.5

0X01 漏洞分析
问题出现在home.php文件中1014行得friendadd方法中如图 :

            图片1.png            
如图可以看到get_post传值过来得$user这个参数并没有任何过滤1027行中判断会员登陆与否,也就是只有会员登陆了才可以注入,1034行中判断$type参数是否为qx $type也是post传值过来得也就是说也是可控得当用户登陆后我们求url地址构造post 参数为user=111&type=qx,url地址为http://127.0.0.1/upload/index.php/home/friendadd但是请求过去之后如图:
图片2.png
如图返回得信息是个qq号,返回头来在审查下上下文发现1019行判断了来源地址所以我直接构造访问post地址得话必须得加来源地址http头也就是Referer这个http头参数加上之后然后访问如图:
图片3.png
发现已经可以正常返回,返回一个ok,由于query底层也有没有进行sql过滤造成了就造成了delete得SQL注入
    构造以下payload如图:
    图片4.png
  Payload为:111' or updatexml(1,concat(0x7e,(version())),0) or'#
图片5.png
其中在代码得1041行中不加type参数得话同样也是存在该问题这个是另一个select语句也是未过滤如图:
   图片6.png
      图片7.png
    后台代码注入getshell其实就是配置文件写shell详情如下
      问题文件在cs_Config.php里得Cache_IS这个常量中如图:
       图片8.png
          图片9.png
         可以如图看到他是一选择框得形式来设置得但是在数据传送过程是用 0或1来判断,我们只需要在抓包得过程中来代码注入一下,在抓包过程中原来数据为:
      图片10.png
         0在他定义得cs_Config.php里文件则是 define(“Cache_Is”,0)那在0后边添加执行得代码得话则可以0,phpinfo()直接访问配置文件可以看到phpinfo()已经写进去了
          图片11.png




   




评分

参与人数 2酒票 +8 收起 理由
Joseph + 3 感谢分享
管理05 + 5 欢迎加入90!

查看全部评分

 楼主 lingshao56 发表于 2018-9-4 17:24:58 | 显示全部楼层

正式成员|主题 |帖子 |积分 109

排版字体没搞好 各位见谅
chr7s 发表于 2018-9-4 17:59:43 | 显示全部楼层

正式成员|主题 |帖子 |积分 7

来看看表哥的审计思路
Joseph 发表于 2018-9-5 08:47:24 | 显示全部楼层

90Sec Team|主题 |帖子 |积分 1754

师傅优秀!
 楼主 lingshao56 发表于 2018-9-5 09:47:32 | 显示全部楼层

正式成员|主题 |帖子 |积分 109

RE: cscms程式舞曲v3.5代码审计注入到getshell


表哥见笑了,多和表哥学习
快速回复 返回顶部 返回列表