SeacmsV10.7版程式碼審計筆記
阿新 • • 發佈:2021-01-11
data: 2020.11.9 10:00AM
description: seacms程式碼審計筆記
0X01前言
seacms(海洋cms)在10.1版本後臺存在多處漏洞,事實上當前最新版V10.7這些漏洞都沒有修復,網上已有10.1版本相關的分析文章,這裡就不再重複贅述。我們簡單分析下文章中未體現的幾個漏洞。
0X02分析
程式碼注入
在後臺admin_ping.php
中,看下程式碼:
<?php header('Content-Type:text/html;charset=utf-8'); require_once(dirname(__FILE__)."/config.php"); CheckPurview(); if($action=="set") { $weburl= $_POST['weburl']; $token = $_POST['token']; $open=fopen("../data/admin/ping.php","w" ); $str='<?php '; $str.='$weburl = "'; $str.="$weburl"; $str.='"; '; $str.='$token = "'; $str.="$token"; $str.='"; '; $str.=" ?>"; fwrite($open,$str); //直接寫入,未過濾 fclose($open); ShowMsg("成功儲存設定!","admin_ping.php"); exit; } ?>
程式碼中直接取$_POST['weburl']
和$_POST['token']
的值寫入php檔案,我們直接傳入";phpinfo();"
,看下結果:
任意檔案刪除
在admin_template.php
第114-133行:
elseif($action=='del') { if($filedir == '') { ShowMsg('未指定要刪除的檔案或檔名不合法', '-1'); exit(); } if(substr(strtolower($filedir),0,11)!=$dirTemplate){ //目錄限制,只判斷前11個字元 ShowMsg("只允許刪除templets目錄內的檔案!","admin_template.php"); exit; } $folder=substr($filedir,0,strrpos($filedir,'/')); if(!is_dir($folder)){ ShowMsg("目錄不存在!","admin_template.php"); exit; } unlink($filedir); ShowMsg("操作成功!","admin_template.php?path=".$folder); exit; }
程式碼中目錄限制知判斷前11位字元,利用../繞過限制,實現任意檔案刪除。
由於成功安裝程式後,安裝檔案被更名為index.phpbak
,故無法和重灌漏洞組合利用,只能造成對網站的破壞。
目錄遍歷漏洞
問題和任意檔案刪除類似:
else { if(empty($path)) $path=$dirTemplate; else $path=strtolower($path); if(substr($path,0,11)!=$dirTemplate){ //與上面同理 ShowMsg("只允許編輯templets目錄!","admin_template.php"); exit; } $flist=getFolderList($path);