久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

熊海CMS代碼審計(jì)漏洞分析

瀏覽:256日期:2022-06-06 15:09:10
目錄
  • 前言
  • 基本結(jié)構(gòu)
  • SQL注入漏洞
    • 第一處
    • 第二處
    • 第三處
  • XSS漏洞
    • 第一處
    • 第二處
  • CSRF漏洞
    • 第一處
  • 垂直越權(quán)
    • 第一處
  • 結(jié)語

    前言

    熊海CMS是由熊海開發(fā)的一款可廣泛應(yīng)用于個(gè)人博客,個(gè)人網(wǎng)站,企業(yè)網(wǎng)站的一套網(wǎng)站綜合管理系統(tǒng)。作為一個(gè)早期的系統(tǒng),里面代碼存在許多漏洞利用點(diǎn),且代碼量低適合作為代碼審計(jì)的入門挑戰(zhàn),本文就帶領(lǐng)大家對(duì)該系統(tǒng)存在的漏洞進(jìn)行分析。

    基本結(jié)構(gòu)

    這里我選擇使用小皮面板搭建在了本地,以便于調(diào)試錯(cuò)誤,首先我們看看系統(tǒng)的結(jié)構(gòu):

    ——admin     //后臺(tái)?件——css       //css?件——files    //功能函數(shù)?件——images   //圖?——index.php //主?錄?件——install   //安裝?件——seacmseditor  //編輯器——template      //模板?件——upload    //?件上傳?錄

    SQL注入漏洞

    第一處

    我們跳轉(zhuǎn)到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進(jìn)行對(duì)比,匹配后會(huì)執(zhí)行SQL語句,了解SQL注入漏洞的朋友可能會(huì)看出這里有一個(gè)單引號(hào)閉合漏洞,我們只需在參數(shù)前進(jìn)行構(gòu)造閉合單引號(hào),之后便可以成功執(zhí)行自定義的SQL語句:

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

    需要注意的是作為結(jié)果只返回給我們SQL語句正確與否,所以這里考慮使用錯(cuò)報(bào)注入。

    第二處

    admin/files/editlink.php這個(gè)路徑下有一段代碼:

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

    這里同樣存在一個(gè)GET傳參點(diǎn),我們可以傳入變量名為id的值,之后會(huì)執(zhí)行SQL語句查詢ID,若SQL語句有誤,進(jìn)行錯(cuò)報(bào),因?yàn)槭菃我?hào)閉合這里可以和第一處一樣使用錯(cuò)報(bào)注入。

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

    第三處

    /file/download.php這個(gè)路徑下的代碼:

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

    可以看到里面有addslashes函數(shù):

    這個(gè)函數(shù)會(huì)將預(yù)定義字符轉(zhuǎn)換加上反斜杠,所以我們無法進(jìn)行正常的單引號(hào)閉合,需要想辦法繞過,方法也很多,這里就簡單用寬字節(jié)注入繞過,具體使用方法可以參考我之前的文章:

    參考大佬的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."頁 - ";}

    我們也可以向上面一樣將語句傳進(jìn)變量里去。

    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."的內(nèi)容已經(jīng)成功刪除!");location.href="?r=wzlist"</script>";exit;

    可以看到代碼執(zhí)行刪除SQL語句時(shí)并沒有對(duì)代碼進(jìn)行檢測,刪除操作對(duì)應(yīng)下面的界面:

    我們先嘗試刪除然后進(jìn)行抓包,抓到了刪除時(shí)GET進(jìn)行的傳參:

    ?r=wzlist&delete=18

    之后換另一個(gè)瀏覽器訪問整個(gè)payload,結(jié)合該系統(tǒng)中的一個(gè)越權(quán)操作,將user改成admin,之后訪問,成功實(shí)現(xiàn)了跳過驗(yàn)證進(jìn)行了刪除操作。

    當(dāng)然這只是其中的一個(gè)點(diǎn),softlist.php也存在類似的CSRF漏洞。

    垂直越權(quán)

    第一處

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

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

    這里直接給user的cookie值設(shè)置成admin,即可跳轉(zhuǎn)管理員界面。

    結(jié)語

    今天給大家?guī)淼氖且粋€(gè)小型CMS的代碼審計(jì),當(dāng)然該系統(tǒng)的漏洞遠(yuǎn)不止文中提到的這些,總的來說還是挺簡單的,有興趣的小伙伴可以自己下載源碼去搭建系統(tǒng)

    以上就是熊海CMS代碼審計(jì)漏洞分析的詳細(xì)內(nèi)容,更多關(guān)于熊海CMS代碼審計(jì)的資料請(qǐng)關(guān)注其它相關(guān)文章!

    標(biāo)簽: PHP
    主站蜘蛛池模板: 鄢陵县| 章丘市| 黑水县| 湖口县| 潍坊市| 元阳县| 黔江区| 潼关县| 西乌珠穆沁旗| 洮南市| 白银市| 天峻县| 清丰县| 拜泉县| 河曲县| 泽库县| 浏阳市| 土默特左旗| 安新县| 咸阳市| 六枝特区| 遂昌县| 布尔津县| 乐业县| 宜昌市| 台北市| 星座| 深圳市| 宿迁市| 东方市| 潼关县| 娱乐| 肃宁县| 柳河县| 万全县| 靖江市| 永丰县| 城固县| 诸城市| 伊吾县| 临桂县|