iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件
前言:Elasticsearch服務普遍存在一個未授權訪問的問題,個人最近剛好在幫某企業梳理這方面的資產,但每次都是通過Goby掃描出來后再手動訪問,比較麻煩。剛好看到Goby的內測版推出了開放式的插件功能,所以抱著試手的想法開發了此款插件。希望通過此次分享,能幫助大家在插件市場愉快的玩耍。
?0x001 插件效果當掃描出Elasticsearch未授權漏洞后,會在漏洞相關?以及資產詳情處顯示“Indices按鈕”,點擊即可展開該es服務器的Indices信息:在搜索框輸?關鍵字可以根據index名稱進?模糊搜索。
?0x002?構建流程
官方的開發文檔還是很好理解的,有提供開發腳手架。下載→解壓到goby/extensions目錄,再運行Goby掃描,一個demo就出來了。接下來就是改。核心集中在確認入口點和API調用。
開發文檔地址:github.com/gobysec/GobyExtension
1. 確定入口點
在選定ES做插件后,我把入口點選擇在了漏洞相關頁面,首先在./package.json中做以下配置: ... "main": "./extension.js", "contributes": { "views": { "vulList": [ { "command": "elastic", "title": "Indices", "visible": "elastic_visi" } ] } } ...其中需要關注以下幾點:
- main: 插件的主入口文件路徑
- contributes.views. vulList[0].command: 注冊命令的名稱
- contributes.views. vulList[0].title: 在按鈕中顯示的文字
- contributes.views. vulList[0].visible: 這里也要填入注冊命令的名稱,主要作用是判斷按鈕是否在該漏洞顯示,回調函數應該返回一個布爾型的值。
小提示:漏洞名稱可以直接在漏洞窗口進行查找,點擊進去之后復制名稱即可。
3. index.html頁面開發
官方插件中使用的是 layui 框架進行開發,我這里使用的是 Vue ?+ ELement-ui。在使用框架方面Goby比較開放,沒有限制,大家可以任意發揮。這里簡單介紹一下我的開發流程。首先需要處理傳過來的hostinfo信息,可以直接copy官方文檔提供的代碼:
getIframeQueryString(name) { let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); let r =window.parent.document.getElementById("goby-iframe").contentWindow.location.search.substr(1).match(reg); if (r != null) { return decodeURI(r[2]); } return null;}拿到漏洞的IP后,就可以對目標IP進行自定義請求了:request({ //在utils中有對axios進行簡單封裝 method: 'get', url: 'http://' + this.getIframeQueryString("hostinfo") + "/_cat/indices", params: { format: "json" }})最后對拿到的數據進行處理,顯示為表格樣式,整個插件就開發完成了~重構后的目錄如下所示:
goby-extension-elasticsearch├── babel.config.js├── package-lock.json├── package.json├── public│?? ├── CHANGELOG.md│?? ├── README.md│?? ├── extension.js│?? ├── favicon.ico│?? ├── index.html│?? └── package.json├── src│?? ├── App.vue│?? ├── element-variables.scss│?? ├── main.js│?? ├── plugins│?? │?? └── element.js│?? └── utils│?? └── request.js└── vue.config.js編譯:
npm run build輸出的目錄結構如下:goby-extension-elasticsearch/dist├── CHANGELOG.md├── README.md├── css│?? ├── app.b2893489.css│?? └── chunk-vendors.2ac5db4b.css├── extension.js├── favicon.ico├── fonts│?? ├── element-icons.535877f5.woff│?? └── element-icons.732389de.ttf├── index.html├── js│?? ├── app.2279fc27.js│?? └── chunk-vendors.8cb53444.js└── package.json4. 測試在Goby的extensions目錄下新建任意名稱的文件夾,把goby-extension-elasticsearch/dist目錄下的文件移動進去即可。使用開發版本Goby可以打開DevTools進行調試。
5. 打包
打包前把自己及插件的相關信息分別填到package.json、Readme.md、Changlog.md文件中。Readme.md信息會顯示在詳情中:Changlog.md信息會顯示在更新日志中:小提示:壓縮包和文件夾名稱須保持一致,文件放置如下圖所示。
6.?發布
- 注冊賬號: https://gobies.org/user/register
- 在Goby客戶端進行登陸
- 上傳插件
- 審核通過后會收到郵件/微信通知,然后可以在Goby的擴展程序中看到。
注:由于是Client端插件,所以即使設置外部Server或者代理,流量仍會從Client端發 出,可能存在流量不可達導致列不出indices的情況。
總結
以上是生活随笔為你收集整理的iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python计算两个数乘积_如何用PYT
- 下一篇: python自定义函数实例计算1-n的偶