首页 > 其他分享 >vulnhub-EvilBox---One靶机的测试报告

vulnhub-EvilBox---One靶机的测试报告

时间:2024-09-30 21:53:33浏览次数:12  
标签:文件 私钥 登录 .. EvilBox --- vulnhub 爆破 ssh

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、信息搜集

①主机探测

②端口和服务探测

③扫描目录

2、进行渗透

①渗透网页

②渗透空白页

③测试evil.php的文件包含

3、Getshell

①查看ssh是否支持私钥登录

②获取私钥进行登录

③John爆破ssh私钥的key(第一个flag)

4、提权

①尝试常规方法

②Find命令查找可利用文件

③修改root密码提权(第二个flag,root权限)

四、结论


一、测试环境

1、系统环境

渗透机:kali2021.1(192.168.202.134)

靶  机:linux4.19.0-17-amd64 #1 SMP Debian 4.19.194-3(2021-07-18) x86_64(192.168.202.140)

2、使用工具/软件

Kali:nmap(信息搜集)、gobuster(扫描目录)、ffuf(爆破参数)、john(爆破ssh私钥的key)、ssh(连接靶机)

测试网址:http://192.168.202.140

靶机下载地址:https://www.vulnhub.com/entry/evilbox-one,736/

二、测试目的

靶机属于基础型的,用于培养渗透思路,拓展思路。

通过vulnhub-EvilBox---One的web站点的文件包含漏洞和系统存在的/etc/passwd文件可写入的系统漏洞,先后拿到两个flag和一个普通用户权限并提权root用户。

三、操作过程

1、信息搜集

①主机探测

探测主机,IP为:192.168.202.140

arp-scan -l

arp-scan 是一个网络工具,用于在局域网中发现主机。
-l 选项通常用于扫描本地网络。

②端口和服务探测

扫描主机端口和服务,发现开启了22端口和80端口,分别是ssh登录端口和web端口,下一步就渗透web网页

nmap -A -sT -p- 192.168.202.140

Nmap是常用的强大网络扫描工具,进行端口扫描、操作系统检测、服务版本信息

-A   启用高级扫描,包括操作系统检测、版本检测、脚本扫描和 traceroute。

-sT  TCP全连接扫描

-p-  扫描所有端口

工具页面解析:

    开放端口:

        22/tcp:SSH 服务开放,运行 OpenSSH 7.9p1,允许使用 SSH 进行远程登录。

        80/tcp:HTTP 服务开放,运行 Apache 2.4.38,显示 Debian 默认的网页。

    主机信息:

        MAC 地址:表明主机可能是虚拟机(VMware)。

        设备类型:一般用途的设备。

        操作系统:Linux 内核版本 4.15 - 5.8。

    网络:

        网络距离:主机距离扫描机器只有 1 跳,说明在同一网络或非常接近。

    TRACEROUTE:

        RTT:响应时间 0.31 毫秒,表示网络延迟很低。

③扫描目录

扫到目录后一定将子目录也扫一遍,防止漏信息

针对web资源进行寻找,扫到: robots.txt   目录:secret

​gobuster dir -u http://192.168.202.140/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp

Gobuster进行目录和文件爆破是一种高效和可靠的选择。有以下几个优势:go语言编写的,性能很高;支持自定义字典和文件拓展名;命令行选项设计简洁;通过 DNS 爆破进行子域名爆破,发现子域名;占用系统资源少;可拓展性

-u 指定爆破的url

-w 指定爆破字典

-x 指定爆破的文件后缀名

工具界面解析:

    URL:                             目标网站的地址。

    method:                         HTTP 请求方法,此处为 GET。

    threads:                         线程数,并发请求的数量,为 10。

    wordlist:                        字典文件,包含待测试的目录和文件名的列表。

    Negative status codes: 负面状态码,表示忽略返回 404 状态码的响应。

    User agent:                    用户代理,HTTP 请求的用户代理字符串。

    extensions:                  拓展名,测试的文件扩展名。

    timeout:                         超时,每个请求的超时时间。

对secret/目录继续扫,evil.php的size为0是空白页,没有目录了,那就爆破参数试试

​gobuster dir -u http://192.168.202.140/secret/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp

2、进行渗透

①渗透网页

主页是个apache的默认网页

那就找找刚刚爆破的目录和文件试试

robots.txt文件     H4x0r可能是个用户名,暂时不知道如何利用

②渗透空白页

针对空白页通常是进行参数爆破,找寻有无测试人员遗留下的可利用参数

使用工具ffuf

Fuzz一个可接收的参数

​ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.202.140/secret/evil.php?FUZZ=../index.html -fs 0

Ffuf是一个高效的目录和文件爆破工具,广泛用于Web应用程序安全测试。它支持通过各种方式进行模糊测试和发现隐藏路径。

-w 指定字典

-u 指定url,支持包括FUZZ 占位符在内的url,用于进行模糊测试

-fs 排除所有响应大小为 0 字节的结果

尝试命令执行,命令执行不成功

工具界面解析:

Method                      :   请求方法,这里是get

url                              :   是测试的url,这个和参数中的  -u 指定的url相同

wordlist                      :   字典文件,是指字典,字典将在FUZZ位置处爆破

follow redirects         :   跟随重定向,这里是false,服务器响应重定向(如 301 或 302 状态码),ffuf 将不会自动请求重定向目标。

calibration                  :   校准,这里不进行校准

timeout                      :超时,每个请求的超时时间为 10 秒。

Threads                     : 线程数,使用 40 个并发线程来加快测试速度。

matcher:response status        :   指匹配的响应状态码

filter                            :   指过滤掉特定大小的响应包,这里是0就是空页面

文件包含成功,发现一个参数command

③测试evil.php的文件包含

尝试包含/etc/passwd成功,发现一个用户mowree,这样就可以尝试ssh登录了

?command=../../../../../../etc/passwd

3、Getshell

①查看ssh是否支持私钥登录

思路是可以包含文件的话,包含私钥也许可行,不行的话就只有爆破了。

尝试ssh登录,-v查看一下登录的方式有没有私钥登录

ssh [email protected] -v

-v参数显示详细信息

发现支持私钥和密码两种登录方式

②获取私钥进行登录

如果目标主机在本机上生成ssh的公钥和私钥,公钥会存在本机上的,若目标主机没有将私钥进行删除,那么私钥仍在本机。

默认情况下ssh公钥和私钥保存位置(ssh-keygen生成的私钥和公钥):

公钥:~/.ssh/id_rsa.pub

私钥:~/.ssh/id_rsa

结合网页存在的文件包含漏洞,尝试包含ssh的私钥文件进行下载

http://192.168.202.140/secret/evil.php?command=../../../../../../home/mowree/.ssh/id_rsa

成功包含

将私钥文件网页导出,重命名id_rsa并赋权限600(600是ssh私钥的权限设置,不是这个权限私钥文件就无法使用);(复制的私钥使用不了,可以看下面正常的私钥,发现网页显示出来的格式不正确)

vim id_rsa
chmod 600 id_rsa

登录发现私钥登录时候需要key,这样就只能爆破了

③John爆破ssh私钥的key(第一个flag)

John是kali自带的一款强大的密码破解工具

爆破ssh私钥文件之前需要先使用ssh2john.py文件将私钥文件id_rsa转换为john可识别的脚本

/usr/share/john/ssh2john.py /root/id_rsa > /root/hash

John使用字典爆破,key为  unicorn

john /root/hash --wordlist=/usr/share/wordlists/rockyou.txt

成功登录并得到第一个flag:56Rbp0soobpzWSVzKh9YOvzGLgtPZQ

4、提权

①尝试常规方法

提权可以先查看计划任务、sudo配置、系统版本漏洞有没有不合理的设置,有没有可利用的地方,这个靶机没发现。系统漏洞打了一下,也没什么收获

crontab -l
sudo -l
uname -a

 

②Find命令查找可利用文件

没有的话可以用find命令寻找可利用的文件,如suid文件、Sgid文件、可写入的文件都是可利用的

找suid文件命令

find / -perm -4000 2>/dev/null

找sgid文件命令

find / -perm -2000 2>/dev/null

Find查找有写入权限的文件时,发现/etc/passwd竟然可写入

find / -writable 2>/dev/null

查看一下,果然是真的,那就可以利用了

③修改root密码提权(第二个flag,root权限)

/etc/passwd文件存的是账号信息,密码没有显示,但是在这个文件中可以指定密码。指定新密码后,/etc/shadow中的密码就会失效,这样就成功改密码了。

如上图, x的位置就是密码的占位符,将修改后的密码的密文放在此处并保存,即可完成修改密码

生成密码的密文方法:

使用openssl生成基于 MD5 的密码散列值(即 MD5 哈希值),创建加密的密码散列

openssl passwd -1

将生成的密文密码,放在/etc/passwd中root那行的x位置

成功登录root用户并在root目录下找到第二个flag:36QtXfdJWvdC0VavlPIApUbDlqTsBM

四、结论

渗透web网页时,扫描目录扫到的子目录也要扫一遍,不漏掉子目录的信息。渗透size=0的空白页面时主要是进行参数的爆破,空白页面可能是开发人员遗留的测试页面没有删除。因为空白页面没有什么数据,所以考虑有没有参数可以利用,主要是远程命令执行和文件包含,这里的漏洞点就是文件包含。

Ssh生成的公钥和私钥在本机是有默认目录保存的,这里的漏洞点是启用了私钥登录,但本地的私钥仍然留着,没有删除,恰好有文件包含的漏洞可以包含到这个文件,于是ssh私钥就泄露了。

Getshell后查看文件发现/etc/passwd文件是有可写入权限的,这样是可以利用的,利用这个系统文件可以更改密码,达到提权的目的。

标签:文件,私钥,登录,..,EvilBox,---,vulnhub,爆破,ssh
From: https://blog.csdn.net/2301_79698171/article/details/142631558

相关文章

  • 题解 CF1785D - Range = √Sum
    link\(\texttt{Describe}\)构造有\(n\)个数的序列,满足以下条件:\(\foralli\in[1,n]\)并且\(1\lea_i\le10^9\)。对于任何的\(1\lei,j\len(i\nej)\),\(a_i\nea_j\)。\((\max_{i=1}^{n}a_i-\min_{i=1}^{n}a_i)^2=\sum_{i=1}^{n}a_i\)。......
  • javascript-Web APLs (一)
    WebAPl基本认知变量声明const优先,如果变量会改变,就用letconst声明的值不能更改,而且const声明变量的时候需要里面进行初始化l但是对于引用数据类型,const声明的变量,里面存的不是值,不是值,不是值,是地址比如://错误写法constgirlfriend=[]girlfr......
  • csp-s模拟7
    这次状态不是很好,冲着T1磕了4个小时,后仨题看都没看。。。A.median去他丫的容斥,考虑排序,一个数作为中位数的方案数就是他左边有俩不同类型的数和右面有俩不同类型的数的总和枚举哪些类型左边哪些右边,对每一位计算贡献就可以了,要提前预处理出来个数。(有没有好心人看看我代码哪......
  • 强化学习-python案例
    强化学习是一种机器学习方法,旨在通过与环境的交互来学习最优策略。它的核心概念是智能体(agent)在环境中采取动作,从而获得奖励或惩罚。智能体的目标是最大化长期奖励,通过试错的方式不断改进其决策策略。在强化学习中,智能体观察当前状态,选择动作,并根据环境反馈(奖励和下一个状......
  • 高级java每日一道面试题-2024年9月30日-算法篇-LRU是什么?如何实现?
    如果有遗漏,评论区告诉我进行补充面试官:LRU是什么?如何实现?我回答:LRU(LeastRecentlyUsed)是一种常用的缓存淘汰策略,用于在缓存满时决定哪些数据应该被移除。LRU算法的基本思想是:当缓存达到其容量上限时,最近最少使用的数据会被优先淘汰。这种策略假设最近使用的数据在......
  • 高级java每日一道面试题-2024年9月30日-服务器篇[Redis篇]-Redis持久化有几种方式?
    如果有遗漏,评论区告诉我进行补充面试官:Redis持久化有几种方式?我回答:Redis是一个高性能的键值存储系统,常用于缓存、消息队列和实时数据分析等场景。为了保证数据的持久性,Redis提供了两种主要的持久化方式:RDB(RedisDatabaseBackup)和AOF(AppendOnlyFile)。这两种方......
  • Java学习第七天--面向对象
    目录1.学什么 2.类2.1类的组成2.2类与对象的关系3.对象内存图 4.成员变量和局部变量5.this关键字6.构造方法6.1构造器6.2格式:6.3执行时机:6.4构造方法作用6.5构造方法注意事项6.5.1构造方法的创建6.5.2构造方法的重载6.5.3推荐的使用方式7.封装7.1合理隐藏,......
  • C--联合和枚举
    欢迎各位看官!如果您觉得这篇文章对您有帮助的话欢迎您分享给更多人哦感谢大家的点赞收藏评论感谢各位看官的支持!!!一:联合体1.1:联合体类型的声明首先:像结构体一样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的......
  • CNN模型实现CIFAR-10彩色图片识别
    关于深度实战社区我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万+粉丝,拥有2篇国家级人工智能发明专利。社区特色:深度实战算法创新获取全部完整项目......
  • 小游戏-三子棋
    目录一、头文件(game.h)二、主程序(test.c)三、调用函数程序(game.c)一、头文件(game.h)#defineRow3#defineCol3#include<stdio.h>#include<stdlib.h>#include<time.h>//头文件中声明函数//棋盘初始化voidchessboard_initialize(charboard[Row][Col],......