存储桶遍历漏洞利用工具

渗透技巧 6个月前 admin
223 0 0

朋友写的工具,解决存储桶浏览器不方便预览问题。

前言:

由于经常遇到存储桶遍历漏洞,直接访问文件是下载,不方便预览,且甲方要求证明该存储桶的危害,因此该工具应运而生。

想法

最开始

最开始是想通过油猴脚本去实现这个功能的。

// ==UserScript==
// @name         存储桶遍历漏洞-油猴脚本
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  存储桶遍历
// @author       jdr2021
// @match        *://*/*
// @grant        none
// ==/UserScript==


(function() {
    'use strict';

    const kkfileview = "https://file.kkview.cn/";
    const currentUrl = window.location.href;

    // 定义extractKeys函数
    function extractKeys(xml) {
        const parser = new DOMParser();
        const xmlDoc = parser.parseFromString(xml, 'application/xml');
        const keys = xmlDoc.getElementsByTagName('Key');
        const values = [];
        for (let i = 0; i < keys.length; i++) {
            values.push(keys[i].textContent);
        }

        return values;
    }

    // 编码为base64函数
    function encodeBase64(str) {
        return btoa(unescape(encodeURIComponent(str)));
    }

    // 检查页面是否包含ListBucketResult元素
    const listBucketResult = document.querySelector('ListBucketResult');

    if (listBucketResult) {
        // 获取ListBucketResult元素的XML字符串
        const xmlString = new XMLSerializer().serializeToString(listBucketResult);

        // 提取Key值
        const keyValues = extractKeys(xmlString);

        // 拼接Key值到当前页面的URL并输出到控制台
        if (keyValues.length > 0) {
            for (let i = 0; i < keyValues.length; i++) {
                const fullUrl = currentUrl + keyValues[i];
                const encodedUrl = encodeBase64(fullUrl);
                const kkfileviewUrl = kkfileview + "/onlinePreview?url=" + encodedUrl;
                console.log(kkfileviewUrl);
            }
        } else {
            console.log('No keys found');
        }
    }
})();


在控制台(console)的确是输出了所有的路径

存储桶遍历漏洞利用工具但结果就是好像没有什么比较有效的方法去实现一个按钮,去翻页这里所有的url的。


因此该思路也就夭折了。

再然后

就是想通过h5,去实现该功能。


也就是浏览器直接打开一个html,先通过fetch爬取资源,经过一系列处理后,利用iframe去加载kkfileview的地址。

并实现一个按钮去翻页。最后测试发现,一共出现了两种情况的bug。

  1. 由于是静态html,没有部署到服务器上,直接通过fetch发起请求时,浏览器会给你的origin设置成null,根据同源策略,你的访问是被拒绝的,因此你就无法访问到该存储桶。

2.当我尝试将该静态页面部署在github时,出现新bug了,有些存储桶是http协议的,而github是https协议,因此会产生一个新的错误。详情可见https://blog.csdn.net/weixin_54197236/article/details/132562326


这两种方法都有一个比较简单的解决方法,就是你要部署在服务器,但是我只想打开就能用,依赖越少越好,不依赖更好,但技术太菜,没办法解决,所以就放弃了前端。


最后的最后

我放弃折腾了,直接人生苦短,我爱java。


技术

使用javafx做图形化,kkFileView做文件预览接口。


使用

直接运行OSSFileBrowse-1.0-SNAPSHOT.jar


或命令行运行java -jar OSSFileBrowse-1.0-SNAPSHOT.jar存储桶遍历漏洞利用工具先点击加载按钮,此时会爬取存储桶上的全部资源,等待几秒后,左边的webView将会通过kkFilewView去渲染文件资源。


存储桶遍历漏洞利用工具按钮下一个将会切换到下一个存储桶资源、按钮上一个将会返回到上一个资源。


bug

bug已改,设置jvm启动的编码格式就可以了

java -Dfile.encoding=UTF-8 -jar OSSFileBrowse-1.0-SNAPSHOT.jar


很奇怪的一个bug,如果idea直接运行OSSFileBrowse,爬取某个存储桶上的文件是正常的。!如果我通过maven打包成jar之后,再去跑该存储桶,将会爬不到数据。


存储桶遍历漏洞利用工具存储桶遍历漏洞利用工具我太菜了,解决不了。感觉是编码问题。

注意

在config.properties中 修改allow.extensions的值,即可添加可支持的文件类型进行预览。


修改kkFileView_URL的值,即可将kkFileView修改成自己的kkfileview。默认是使用官方的kkfileview地址。存储桶遍历漏洞利用工具

最后


如果该项目对你有帮助,给一个小小的star吧。

项目地址:

https://github.com/jdr2021/OSSFileBrowse/


原文始发于微信公众号(goddemon的小屋):存储桶遍历漏洞利用工具

版权声明:admin 发表于 2024年5月25日 下午10:56。
转载请注明:存储桶遍历漏洞利用工具 | CTF导航

相关文章