此系统为程氏CMS-多元化内容管理系统,中国顶先的音乐门户内容管理系统,首发cnvd,最新版本已经是4.x漏洞环境:PHPStudy+MYSQL CSCMSV3.5 |
0X01 漏洞分析
问题出现在home.php文件中1014行得friendadd方法中如图 :
如图可以看到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但是请求过去之后如图: 如图返回得信息是个qq号,返回头来在审查下上下文发现1019行判断了来源地址所以我直接构造访问post地址得话必须得加来源地址http头也就是Referer这个http头参数加上之后然后访问如图: 发现已经可以正常返回,返回一个ok,由于query底层也有没有进行sql过滤造成了就造成了delete得SQL注入 构造以下payload如图: Payload为:111' or updatexml(1,concat(0x7e,(version())),0) or'# 其中在代码得1041行中不加type参数得话同样也是存在该问题这个是另一个select语句也是未过滤如图: 后台代码注入getshell其实就是配置文件写shell详情如下 问题文件在cs_Config.php里得Cache_IS这个常量中如图: 可以如图看到他是一选择框得形式来设置得但是在数据传送过程是用 0或1来判断,我们只需要在抓包得过程中来代码注入一下,在抓包过程中原来数据为: 0在他定义得cs_Config.php里文件则是 define(“Cache_Is”,0)那在0后边添加执行得代码得话则可以0,phpinfo()直接访问配置文件可以看到phpinfo()已经写进去了
|