日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:Elasticsearch服務(wù)普遍存在一個(gè)未授權(quán)訪(fǎng)問(wèn)的問(wèn)題,個(gè)人最近剛好在幫某企業(yè)梳理這方面的資產(chǎn),但每次都是通過(guò)Goby掃描出來(lái)后再手動(dòng)訪(fǎng)問(wèn),比較麻煩。剛好看到Goby的內(nèi)測(cè)版推出了開(kāi)放式的插件功能,所以抱著試手的想法開(kāi)發(fā)了此款插件。希望通過(guò)此次分享,能幫助大家在插件市場(chǎng)愉快的玩耍。

?0x001 插件效果當(dāng)掃描出Elasticsearch未授權(quán)漏洞后,會(huì)在漏洞相關(guān)?以及資產(chǎn)詳情處顯示“Indices按鈕”,點(diǎn)擊即可展開(kāi)該es服務(wù)器的Indices信息:

在搜索框輸?關(guān)鍵字可以根據(jù)index名稱(chēng)進(jìn)?模糊搜索。

?0x002?構(gòu)建流程

官方的開(kāi)發(fā)文檔還是很好理解的,有提供開(kāi)發(fā)腳手架。下載→解壓到goby/extensions目錄,再運(yùn)行Goby掃描,一個(gè)demo就出來(lái)了。接下來(lái)就是改。核心集中在確認(rèn)入口點(diǎn)和API調(diào)用。

開(kāi)發(fā)文檔地址:github.com/gobysec/GobyExtension

1. 確定入口點(diǎn)

在選定ES做插件后,我把入口點(diǎn)選擇在了漏洞相關(guān)頁(yè)面,首先在./package.json中做以下配置: ... "main": "./extension.js", "contributes": { "views": { "vulList": [ { "command": "elastic", "title": "Indices", "visible": "elastic_visi" } ] } } ...

其中需要關(guān)注以下幾點(diǎn):

  • main: 插件的主入口文件路徑
  • contributes.views. vulList[0].command: 注冊(cè)命令的名稱(chēng)
  • contributes.views. vulList[0].title: 在按鈕中顯示的文字
  • contributes.views. vulList[0].visible: 這里也要填入注冊(cè)命令的名稱(chēng),主要作用是判斷按鈕是否在該漏洞顯示,回調(diào)函數(shù)應(yīng)該返回一個(gè)布爾型的值。
2. API調(diào)用./extension.js中做以下配置:function activate(content) { goby.registerCommand('elastic', (content) => { //這里的'elastic'和上文中contributes.views. vulList[0].command的值保持一致 let path = __dirname + "/index.html?hostinfo=" + content.hostinfo; //設(shè)置打開(kāi)新窗口的html文件路徑,并傳入當(dāng)前hostinfo信息 goby.showIframeDia(path, "Elasticsearch未授權(quán)漏洞利用", "600", "600"); //打開(kāi)一個(gè)600*600的iframe窗口,窗口標(biāo)題為'Elasticsearch未授權(quán)漏洞利用' }); goby.registerCommand('elastic_visi', (content) => { //這里的'elastic_visi'和上文中contributes.views. vulList[0].visible的值保持一致 return content.name === "Elasticsearch unauthorized" //對(duì)漏洞名稱(chēng)進(jìn)行判斷 });}exports.activate = activate;

小提示:漏洞名稱(chēng)可以直接在漏洞窗口進(jìn)行查找,點(diǎn)擊進(jìn)去之后復(fù)制名稱(chēng)即可。

3. index.html頁(yè)面開(kāi)發(fā)

官方插件中使用的是 layui 框架進(jìn)行開(kāi)發(fā),我這里使用的是 Vue ?+ ELement-ui。在使用框架方面Goby比較開(kāi)放,沒(méi)有限制,大家可以任意發(fā)揮。這里簡(jiǎn)單介紹一下我的開(kāi)發(fā)流程。首先需要處理傳過(guò)來(lái)的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后,就可以對(duì)目標(biāo)IP進(jìn)行自定義請(qǐng)求了:request({ //在utils中有對(duì)axios進(jìn)行簡(jiǎn)單封裝 method: 'get', url: 'http://' + this.getIframeQueryString("hostinfo") + "/_cat/indices", params: { format: "json" }})最后對(duì)拿到的數(shù)據(jù)進(jìn)行處理,顯示為表格樣式,整個(gè)插件就開(kāi)發(fā)完成了~

重構(gòu)后的目錄如下所示:

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輸出的目錄結(jié)構(gòu)如下: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. 測(cè)試

在Goby的extensions目錄下新建任意名稱(chēng)的文件夾,把goby-extension-elasticsearch/dist目錄下的文件移動(dòng)進(jìn)去即可。使用開(kāi)發(fā)版本Goby可以打開(kāi)DevTools進(jìn)行調(diào)試。

5. 打包

打包前把自己及插件的相關(guān)信息分別填到package.json、Readme.md、Changlog.md文件中。Readme.md信息會(huì)顯示在詳情中:

Changlog.md信息會(huì)顯示在更新日志中:

小提示:壓縮包和文件夾名稱(chēng)須保持一致,文件放置如下圖所示。

6.?發(fā)布

  • 注冊(cè)賬號(hào): https://gobies.org/user/register
  • 在Goby客戶(hù)端進(jìn)行登陸
  • 上傳插件
  • 審核通過(guò)后會(huì)收到郵件/微信通知,然后可以在Goby的擴(kuò)展程序中看到。

?0x003?小結(jié)Goby插件的開(kāi)發(fā)文檔寫(xiě)的非常清晰,我從閱讀文檔到插件開(kāi)發(fā)完成,剛好用了一上午的時(shí)間。不過(guò)也因?yàn)椴寮δ軇倓傞_(kāi)放,所以有一些不足。個(gè)人認(rèn)為插件所產(chǎn)生的流量不應(yīng)該直接從Client端直接發(fā)送到目標(biāo)服務(wù)器,應(yīng)該在server端(goby-cmd)進(jìn)行中轉(zhuǎn)。如果后續(xù)提供類(lèi)似的API的話(huà)就更完美了。由于當(dāng)時(shí)沒(méi)看到開(kāi)發(fā)版本,開(kāi)發(fā)過(guò)程中也沒(méi)有進(jìn)行調(diào)試,所以本篇文章也就沒(méi)有詳細(xì)介紹Debug過(guò)程。唯一出問(wèn)題的地方就是在打壓縮包得時(shí)候沒(méi)有新建目錄,直接散裝在壓縮包里了導(dǎo)致上傳失敗,不過(guò)goby團(tuán)隊(duì)小姐姐很快就幫我解決了這個(gè)問(wèn)題。對(duì)于本插件的迭代計(jì)劃,下一版打算在列出Indices信息后,點(diǎn)擊表格添加預(yù)覽詳細(xì)docs功能。如果表哥們對(duì)本插件有其他想法&需求,可以直接在我的項(xiàng)目中提issues。https://github.com/fazzzzzzz/goby-extension-elasticsearch

注:由于是Client端插件,所以即使設(shè)置外部Server或者代理,流量仍會(huì)從Client端發(fā) 出,可能存在流量不可達(dá)導(dǎo)致列不出indices的情況。

總結(jié)

以上是生活随笔為你收集整理的iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。