熊海CMS代码审计
熊海CMS安装
首先我们解压熊海CMS到www目录下,接着在phpstudy里进行创建网站指定根目录为我们解压的位置,接着我们创建相应的数据库,命令为xhcms,接着访问xhcms.com/install
开始安装
填写基本信息之后即可安装成功
代码审计
cms安装完毕之后我们就开始进行代码审计,首先我们还是使用seay进行基本的代码审计
文件包含
我们首先对第一个漏洞进行测试,该漏洞代码如下,可以明显的看到,从前端接收到文件名之后没有进行过滤就进行了文件包含,而且文件后缀直接就是PHP,帮我们省了不少事
我们直接就构造payload进行测试,为了测试需要,我们在网站根目录下创建一个代码为<?php phpinfo();?>
的php文件,接着在前端进行漏洞利用。
COOKIE欺骗
首先我们先熟悉一下基本的后台登录验证流程,这里我们在phpstorm里下断点进行调试
接着我们在后台登录界面随便输入一个账号密码进行登录测试,在index.php过了之后,就进入到了login.php文件内,这个文件就是我们登录验证的部分,在最开始还引用了一个conn.php的文件,这个文件时走了数据库连接的流程
接着判断了登录字段的值是否为空,如果不为空就进行数据库查询,接着根据数据查询的结果返回相应内容。
这里我们可以判断出登录的地方存在注入漏洞,这里我们简单测试一下登录框的报错注入,使用如下payload为用户名登录可以爆出当前数据库,其中and '1'='1
是为了闭合后一个单引号,点击登录后即可得到如下结果
admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
注入部分先告一段落,我们继续看登录流程,这次我们直接访问后台的index页面http://xhcms.com/admin/?r=index
,看其是如何验证的,首先这里我们在admin\index.php
位置断下,接着我们f7,最终进入到了files/index.php界面,这里我们可以看到引入了checklogin.php这个文件,我们跟进入看一下
进入checklogin.php文件,代码如下,经过我们分析可以知道,这里判断了cookie中是否存在user字段,如果user字段等于空,就跳转到登录界面
这里我们访问后台的index界面的时候,给自己随便添加一个cookie,然后访问?r=index
直接就进入后台
这次我们再次进行下断调试,在cookie判断位置没有再跳转到登录界面
接着就直接进入了后台界面,没有再进行任何判断
XSS漏洞
一般情况下,存储型xss漏洞常发生在评论的地方,我们在审计xss的时候,就首先在评论处进行测试,首先我们输入数据并抓包
根据请求包的数据和我们之前审计的经验可以知道,r=submit这个参数代会调用submit.php这个文件行处理,所以我们在phpstorm中找到对应文件,还有一个type=comment,根据这个字段我们确定具体代码位置
经过我们的简单分析,这里插入的大部分数据都没有过滤,仅仅做了是否为空或是否包含中文的判断,不过评论的数据进行了如下过滤
addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。
预定义字符是:
单引号(')
双引号(")
反斜杠(\)
NULL
strip_tags(string,allow) 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
然后就插入数据库,所以我们这里直接在评论界面进行xss测试,我们插入如下数据成功导致xss