Kindeditor特定情况可能会导致全盘浏览的漏洞

因为例子很少,开始想了下不是他们的漏洞,后面想了下,后面没有检查好用户的正常配置内容导致,还是提下吧

因为例子很少,开始想了下不是他们的漏洞,后面想了下,后面没有检查好用户的正常配置内容导致,还是提下吧。

下载地址:

貌似是最新版本的。

测试语言:PHP
测试漏洞文件:/kindeditor/php/file_manager_json.php
默认配置(第16行):


$root_path = $php_path . '../attached/';

当/attached/文件夹不存在(被删)或者被改名为一个不存在的目录时,如网上的一个例子:

$root_path = $php_path . '../../../upload/';

这个CMS下面的目录根本就没得这个目录,所以就造成了漏洞。

怎么造成了漏洞的呢?我们分析下。

PHP Code复制内容到剪贴板
  1. /**  
  2.  * KindEditor PHP  
  3.  *  
  4.  * 本PHP程序是演示程序,建议不要直接在实际项目中使用。  
  5.  * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。  
  6.  *  
  7.  */  
  8.   
  9. require_once 'JSON.php';   
  10.   
  11. $php_path = dirname(__FILE__) . '/';   
  12. $php_url = dirname($_SERVER['PHP_SELF']) . '/';   
  13.   
  14. //根目录路径,可以指定绝对路径,比如 /var/www/attached/   
  15. $root_path = $php_path . '../../../upload/';   
  16. //根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/   
  17. $root_url = $php_url . '../../../upload/';   
  18. //图片扩展名   
  19. $ext_arr = array('gif''jpg''jpeg''png''bmp');   
  20.   
  21. //目录名   
  22. $dir_name = emptyempty($_GET['dir']) ? '' : trim($_GET['dir']);   
  23. if (!in_array($dir_namearray('''image''flash''media''file'))) {   
  24. echo "Invalid Directory name.";   
  25. exit;   
  26. }   
  27. if ($dir_name !== '') {   
  28. $root_path .= $dir_name . "/";   
  29. $root_url .= $dir_name . "/";   
  30. if (!file_exists($root_path)) {   
  31. mkdir($root_path);   
  32. 赞(0) 打赏
未经允许不得转载:0133技术站首页 » 入侵防御