熊海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
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...
随机推荐
- 懂了!国际算法体系对称算法DES原理
概念 加密领域主要有国际算法和国密算法两种体系.国密算法是国家密码局认定的国产密码算法.国际算法是由美国安全局发布的算法.由于国密算法安全性高等一系列原因.国内的银行和支付机构都推荐使用国密算法. 从 ...
- vi&vim 基本使用方法
vi/&vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅 ...
- [MIT6.006] 13. Breadth-First Search (BFS) 广度优先搜索
一.图 在正式进入广度优先搜索的学习前,先了解下图: 图分为有向图和无向图,由点vertices和边edges构成.图有很多应用,例如:网页爬取,社交网络,网络传播,垃圾回收,模型检查,数学推断检查和 ...
- 读 <The Lost Horizon> 感
读它有两个契机.一是小组英语 pre 讲香格里拉,二是高二有个男生课前演讲讲过<消失的地平线>,彼时他一脸陶醉向我们描绘场景和人物.现在我只记得他 PPT 的风景图特别美.他好像去 thu ...
- string.contains()
public class test { public static void main(String[] args){ System.out.println("abcde".con ...
- showengineinnodbstatus的解读
如何查看innodb的相关信息 ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory al ...
- 结合实战和源码来聊聊Java中的SPI机制?
写在前面 SPI机制能够非常方便的为某个接口动态指定其实现类,在某种程度上,这也是某些框架具有高度可扩展性的基础.今天,我们就从源码级别深入探讨下Java中的SPI机制. 注:文章已收录到:https ...
- LeetCode283移动零问题java高效解法
一.题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 1.必须 ...
- 云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server
上周由于园子后院起火,不得不调兵回去救火,出海记暂时停更,这周继续更新,"出海记"记录的是我们在 AWS 上建设博客园海外站的历程. 在这一记中记录的是我们基于 AWS 免费套餐( ...
- Hadoop大数据平台搭建之前期配置(1)
环境:CentOS 7.4 (1708 DVD) 工具:VMware.MobaXterm 一. 网络配置 1. 在VMware中安装虚拟机,此步骤不作赘述. 2. 镜像文件保留在固定目录下,网络适配 ...