Hackable:III
项目地址:https://download.vulnhub.com/hackable/hackable3.ova
是一个打包好的镜像文件
注意:导入 ovf 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

CTF
StegHide 隐写
访问其 80 端口的源代码信息,在其源代码信息中发现提示信息,根据提示信息猜测可能存在以下账户
1 | jubiscleudo |

扫描目录发现 login.php,访问直接显示了源码

在源码中可以看到有个 3.jpg,结合提示信息使用 steghide 提取图片隐写信息,得到
1 | porta:65535 |
Port Knocking
访问 /backup/ 目录,发现 wordlist.txt 文件

访问 /config/ 发现 1.txt 文件,文件内容是 Base64 加密的字符串
1 | MTAwMDA= |
解密后得到 10000
访问 /css/,发现 2.txt 文件,在文件中发现加密信息
1 | ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>------------------.... |
在解密网站 http://esoteric.sange.fi/brainfuck/impl/interp/i.html 进行解密

根据之前的提示信息我们尝试使用获得端口进行敲门
1 | # 端口顺序是文件名顺序 |
敲门后重新扫描发现开启 SSH 端口

弱口令
SSH
使用上面找到的字典爆破成功登录,jubiscleudo/onlymy

提权
敏感信息泄露
经过一番查找在 /var/www/html 目录下发现一个隐藏文件 .backup_config.php,读取该文件内容获取到 hackable_3 账户的密码

提权成功

LXD 提权
检查权限发现该用户在 LXD 组中

LXD 是一个以 root 权限运行的系统服务
关键的安全缺陷在于,任何属 于lxd 或 lxc 用户组的成员,都有权通过 Unix 套接字与这个 root 进程通信,并让它执行管理命令
系统不会去检查调用者的权限是否与其请求的操作相匹配
提权具体步骤如下:
导入一个容器镜像:首先,需要有一个容器镜像。这是运行容器的 “模板”
创建 “特权容器”:
命令
lxc init myimage ignite -c security.privileged=true创建了一个名为ignite的容器参数
security.privileged=true是核心。它告诉 LXD,这个容器是 “特权容器”init表示创建,myimage是源镜像
挂载宿主机的根目录:
命令
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true将主机的整个根目录/,以磁盘设备的形式挂载到了容器内的/mnt/root路径下lxc config device add表示动态设备添加,ignite要操作的容器名mydevice表示在 LXD 配置数据库中给这个 “设备” 起的内部别名disk表示添加一个磁盘/文件系统类型的设备source=/表示来源路径,这里是宿主机的根目录path=/mnt/root指定这个源路径在容器内部被挂载到什么位置recursive=true表示开启递归
获取并控制
/mnt/root:lxc start ignite启动容器lxc exec ignite /bin/sh在容器内启动一个/bin/shshell
去 https://github.com/saghul/lxd-alpine-builder.git 上下载镜像文件并上传到靶机

然后在依次执行如下命令,即可成功获得 root 权限
1 | # 导入镜像 |

成功拿到 flag
