Vulnhub靶机:EVILBOX_ ONE(很详细)

介绍

系列EvilBox(此系列共1台)
发布日期:2021年08月16日
**难度等级:**低→中
**打靶目标:**取得 root 权限 + 2 Flag
靶机地址:https://www.vulnhub.com/entry/evilbox-one,736/
涉及攻击方法:

  • 主机发现
  • 网络扫描
  • 强制访问
  • 参数爆破
  • 文件包含
  • PHP封装器
  • 任意文件读取
  • SSH公钥登录
  • 离线密码破解
  • 系统权限漏洞利用

信息收集

主机发现

netdiscover主机发现
对于VulnHub靶机来说,出现“PCS Systemtechnik GmbH”就是靶机。

sudo netdiscover -i eth0 -r 192.168.56.0/24

在这里插入图片描述

主机信息探测

nmap -p- 192.168.56.104
nmap -p22,80,8000 -sV 192.168.56.104

在这里插入图片描述

网站探测

打开就是一个ubuntu站点,看不出什么东西,下一步自然是目录扫描了。
在这里插入图片描述

目录扫描

常规的dirsearch扫描完毕后,发现存在一个目录/secret/
在这里插入图片描述

  1. 发现一个东东,是目录,可能是用户名。但是SSH试着爆破无果

在这里插入图片描述

  1. http://192.168.56.104/secret/ 看起来是一个目录

但是只扫描出这么个玩意,不由得让人怀疑是字典的问题,换个工具从新爆破一下目录
在这里插入图片描述

目录扫描字典

总结了过往经验中用过的目录扫描工具,以及它们的字典,如下

  1. /usr/share/wordlists/dirb/big.txt:字典行数 20469
  2. /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt:字典行数 220560
  3. /usr/share/dirb/wordlists/common.txt:字典行数 4614(dirb默认字典)
  4. /usr/lib/python3/dist-packages/dirsearch/db/dicc.txt:字典行数9741(dirsearch默认字典)

这里换用第一个字典试试,结果事情变得很有意思,同样的一个字典,一个工具能扫出结果,一个扫不出结果。

dirsearch -u http://192.168.56.104/secret -x 403 -w /usr/share/wordlists/dirb/big.txt
gobuster dir -u 192.168.56.104/secret/ -w /usr/share/wordlists/dirb/big.txt -t 100 -x php

在这里插入图片描述

在这里插入图片描述

经过反复查验,除了 evil.php 已经没有别的更多信息,但是这个页面是个空白页面,如下图:
在这里插入图片描述

那么,到此只有一种可能,这个php页面可能存在一些参数,只不过目前还看不到有哪些参数,如果能爆破出这个页面上的参数,应该还是可以继续往下搞的。但是现在既不知道这个页面有哪些参数名,更不知道这个页面接收哪些参数,怎么搞?

爆破页面参数

对于一个空白页面,如果想要爆破参数名和参数值的话,可以使用以下两款专业工具:BurpSuite、ffuf,我将分别演示这两种工具在国内环境下的使用方式。

Burpsuite爆破参数

  1. 手工添加参数名称和参数值,采用集束炸弹的方式来爆破

在这里插入图片描述

  1. 设置参数

在这里插入图片描述

在这里插入图片描述

  1. 开始爆破

这里比较幸运的爆破出来了,发现了漏洞
攻击包
在这里插入图片描述

响应包
在这里插入图片描述

ffuf

ffuf是一款用 Go 编写的快速 Web 模糊器,项目地址:https://github.com/ffuf/ffuf
使用参考:https://blog.csdn.net/u010062917/article/details/120473487

这里还要用到一个名为 SecLists 的字典,它在github有着40K的小星星,里面有很多优秀的字典。由于它不仅大,而且下载速度也堪比某网盘,因此如果你直接使用 git 或者 apt 命令想获取它是非常痛苦的。我是物理机挂上梯子下载的,由于ffuf提供了windows的版本,因此,我会选择在windows下来测试,而不是像网上那样拿着kali系统测试。项目地址:https://github.com/danielmiessler/SecLists

参数名可以在 SecLists 中找个字典,参数值可以手写一个字典,像下面这种就行:

1
2
3
a
b
c
!
@
#
$
%
^
&
*
(
)
_
+
-
=
`
~
{
}
|
[
]
\
:
"
<
>
?
;
'
,
.
/
*

开始爆破:

.\ffuf.exe -w D:\字典\SecLists-2022.2\Discovery\Web-Content\burp-parameter-names.txt:PARAM -w D:\字典\特殊字符.txt:value -u http://192.168.56.104/secret/evil.php?PARAM:value -fs 0

-fs 0:过滤掉空白的响应页面

如果你真的这样去测试,是测试不出来东西的。原因很简单,缺少像burpsuite那样综合性的参数值字典。我在网上翻了一下午,问了几个交流群,都没有得到答案。无论是 SecLists 还是 fuzzDicts ,我都没有找到针对参数值可以模糊测试的综合性字典。
如果你只是希望获取到不错的针对参数名的字典,其实, fuzzDicts 就已经足够。
在这里插入图片描述

在这里插入图片描述

没有出现结果,如果实战情况下我肯定是直接用bp,但是如果只能用 ffuf ,并且没有综合性字典的话,首先要考虑能不能读取一些文件,这个是目前最容易判断的漏洞

.\ffuf.exe -w D:\字典\SecLists-2022.2\Discovery\Web-Content\burp-parameter-names.txt -u http://192.168.56.104/secret/evil.php?FUZZ=../index.html -fs 0

在这里插入图片描述

这次有扫描结果了,发现可以使用参数command文件包含index.html,但是还不足以判定存在文件包含漏洞,通过下图,成功确认靶机确认存在文件包含漏洞
在这里插入图片描述

补充:区分文件包含与文件读取

我之前一直认为出现伪协议才是文件包含漏洞,导致漏洞类型判断错误在这里卡了很长时间,借着这台靶机重新搞清楚了二者的区别

“文件包含”是把所有格式的文件当作php文件去解析,“文件读取”不会去解析,原来是啥就是啥。也就是说,能解析叫文件包含,不能解析,只能读出文件,叫文件读取。
我这里拿 “Web for Pentester”靶场来举例说明。
读取普通文件

  1. 文件读取靶场(此处靶场起的名字是“目录穿越”)

在这里插入图片描述

  1. 文件包含靶场

在这里插入图片描述

读取需要解析的文件

  1. 文件读取靶场

在这里插入图片描述

  1. 文件包含靶场

在这里插入图片描述

文件包含漏洞

经过反复测试:

  1. 远程文件包含失败
  2. php://input写入一句话木马失败
  3. php://filter/write写入一句话木马失败

进行到这,只能使用原始的敏感信息收集了。

  1. 发现,除了root之后还有一个用户

在这里插入图片描述

  1. 其他敏感信息

手工是不可能的,谁知道用户家里有什么鬼东西(虽然最后知道用户家里有SSH的私钥,但是我这里还是要记录下更为通用性的方法)这里介绍 SecLists 中一个不错的字典“quickhits.txt”,它位于:SecLists-2022.2\Discovery\Web-Content\quickhits.txt
2.1 设置检测范围
在这里插入图片描述

2.2 引入字典爆破
在这里插入图片描述

  1. 获取到的敏感信息

3.1 /.ssh/authorized_keys
默认情况下,当你把一个客户端用户的公钥放到目标服务器上时,那么在目标服务器的“ssh”目录下就会有一个“authorized_keys”文件,这个文件会包含这个用户的公钥文件。(这个文件位置和文件名是默认的)
在这里插入图片描述

3.2 /.ssh/id_rsa
当存在/.ssh/authorized_keys时,默认情况下,私钥id_rsa应该在/.ssh/id_rsa,因为在生成公私钥对的时候,它们默认都是在.ssh目录下的,而生成的私钥名称默认就是id_rsa

一般用户的 .ssh 目录下会存在三个文件:
id_rsa : 私钥。
authorized_keys : 认证关键字文件。
id_rsa.pub : 公钥

在这里插入图片描述

文件包含、任意文件读取的影响

最开始,我是使用BurpSuite爆破页面参数的,得出靶机存在任意文件读取漏洞,如果按照任意文件读取漏洞来处理,能打穿这个靶场吗?当然可以,因为我还是可以看到敏感文件。
在这里插入图片描述

如果是使用 ffuf 测试的话,会得出靶机存在文件包含漏洞,这个漏洞是有可能直接 getshell 的。
综上所述,发现可以目录穿越时,可以通过加载一些可执行的页面文件来判断漏洞类型,进而选择下一步的攻击方式。

SSH连接

判断SSH连接方式

使用ssh mowree@192.168.56.104 -v(添加-v)来查看靶机支持哪些SSH身份认证

  1. 首先输入yes,接受它的指纹和密钥相关信息

在这里插入图片描述

  1. 首先可以确认靶机支持密码登录,其次,在上面发现了靶机支持公钥身份认证

在这里插入图片描述

补充知识(关于公钥身份认证):
作为服务器管理者,需要先在服务器上面生成一个公钥和私钥组成的密钥对,公钥放在需要进行登陆的目标服务器上,我可以使用私钥去登录服务器。在登录过程中,目标服务器会验证我的私钥加密信息,因为我的私钥解密信息只有我的公钥才能解密;公钥加密的信息只有私钥才能解密。通过这种方法,服务器就能验证我的身份。

SSH私钥连接

当准备连接的时候,发现我得填写私钥的密码。出现这个情况的原因是,在生成公私钥的时候,给私钥又加了一个密码,就好比你用密码保险柜来存储一大堆密码一样,因此,必须破解这个密码。
在这里插入图片描述

爆破私钥密码

  1. 使用 john 的一个脚本把私钥转换成 john 可识别的 ssh 密钥文件:

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

  1. 使用 john 爆破密码

john hash --wordlist=/usr/share/wordlists/rockyou.txt
在这里插入图片描述

提权

内核虽然存在问题,但是利用不成功。常规的 sudo 提权失败、suid 提权无望,那么接下来就是看看有哪些文件是当前用户有权限写入的,但是很奇怪,find 命令竟然什么都搜索不出来
在这里插入图片描述

既然如此,就放弃手工提权了,直接上提权脚本。
“PEASS-ng” 是一个在 github 上有着近10K小星星的项目,是一个可以用来在windows、linux、mac上进行提权检查的脚本。项目地址:https://github.com/carlospolop/PEASS-ng
结果发现对/etc/passwd具有可写权限,那这就简单了。
在这里插入图片描述

passwd提权

我这里想到的是生成一个用户,然后加入到 /etc/passwd 中,结果,失败了。
在这里插入图片描述

在这里插入图片描述

没关系,还有第二种方法,直接修改 passwd 文件

  1. 生成一个密码:openssl passwd -1
  2. 修改passwd文件,然后尝试登录

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值