Kohana < 3.3.0 任意代码执行漏洞
不得不说Kohna 官方对安全漏洞反应迟钝。 这个漏洞在上次 3.2.1 发布之前就已经有人报告了。 见: http://dev.kohanaframework.org/issues/4593 和 http://dev.kohanaframework.org/issues/4591 不过官方对此的处理并不是马上修复,而是把修复任务放到了下一个版本(3.3.0)中。
3.3.0 于 October 23 发布。 这次终于把这个漏洞给补上了(见 https://github.com/kohana/core/commit/e2bba180ad3923700a134ce358252a0e3238e3f1 )
漏洞的产生缘于 PCRE 的e (PREG_REPLACE_EVAL)修饰符。 此修饰符仅对preg_replace()生效。 Note: Only preg_replace() uses this modifier; it is ignored by other PCRE functions.
而Kohana core 中恰巧就用到了preg_replace和e修饰符。 在classes/kohana/url.php中,一句:
$path = preg_replace('~([^/]+)~e', 'rawurlencode("$1")', $path);
而$path变量是取自url的,因此,这个漏洞可谓非常严重。Kohana中有了这一句代码的存在,任何人都可以构造特殊的url执行任何php代码。
测试: $_SERVER['KOHANA_ENV'] = 'PRODUCTION';
访问:
http://my-domain.com/中文(${@file_put_contents(test.txt,hello)})
php会报错:
ErrorException [ 8 ]: Undefined variable: 3 ~ APPPATH\classes\kohana\url.php(115) : regexp code [ 1 ]
但是代码实际上是会执行的。 查看下,在根目录下成功生成了test.txt
不过我网站的代码我在很久以前就修复了。
All Comments (0)