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

目录

一、测试环境

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 mowree@192.168.202.140 -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文件是有可写入权限的,这样是可以利用的,利用这个系统文件可以更改密码,达到提权的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ccc_9wy

觉得写的好的话就赏杯奶茶喝吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值