在渗透测试系列教程中介绍了XSS漏洞的原理和利用方法,实际上 XSS 网络钓鱼 也是一种高效的攻击手段。
网络钓鱼是一种诈骗手段,主要利用受害者的心理弱点、好奇心等心理陷阱来进行诈骗,属于社会工程学的一种。
传统的网络钓鱼通过复制目标网站,再利用其他方法使用户与假网站进行交互来实现攻击,这种情况下,钓鱼网站与真实网站是相互独立的,尽管钓鱼网站会极力做到与真实网站尽可能相似,但还是会有细微的不同。
其过程如下:
一般是仿制某网站的登陆页面,以盗号最为猖獗的QQ为例,现在网络上QQ登录仿站很多,下载下来部署在黑客服务器上,访问如图
也许不是QQ最新的源码,但是相似度很高了
看一下源代码,内部如何实现钓鱼的
可以看到,其他部分其实跟正常的网站一样,只不过在表单提交这里,将表单信息提交给了黑客脚本。
分为四步,下面一一解答
①确认了提交了user和pass字段以后,打开一个fish.txt文档
②将user(账号)、pass(密码)组合起来
③将账号密码的组合写入fish.txt,然后关闭fish.txt
④跳转到正常QQ官方链接
这是一个最简单的记录信息脚本,没那么多花里胡哨。此时假如通过某种手段让用户访问该页面输入账号密码登录,后台就会自动记录账号密码
输入账号密码
页面会跳转到官方页面
黑客服务器上保存到了用户的账号密码
这是一次典型的传统网络钓鱼攻击,其手段往往是发送钓鱼邮件等方式欺骗用户直接访问假网站,现在有点安全意识的用户很容易识别这类攻击。
传统网络钓鱼方式现在新闻比较多,大家也很少会去点击邮箱里来路不明的链接,但是如果与XSS结合,网络钓鱼就有点防不胜防了,在访问知名权威网站时跳转的登录框,用户信任度会高很多,举个极端的例子,假如腾讯官网存在XSS漏洞被用来钓鱼,有多少人会上当呢?
我们利用dvwa靶场中的存储型XSS页面演示一下
1、构造恶意脚本xss.js
构造恶意js脚本
该脚本一共三步
①创建一个body体
②创建一个iframe标签,iframe标签作用相当于在网页内再开辟一个新网页,可以包含其他网站的页面
③配置iframe标签的属性,使其覆盖整个页面
④在iframe标签里显示仿造的网页
2、在XSS页面插入payload
该语句的作用是从黑客服务器加载xss.js脚本并执行
该语句会从黑客服务器加载xss.js并执行
攻击成功,网址没变但是内容替换为仿站
F12查看一下源代码,原网页依然存在,但是已经被iframe标签覆盖
js脚本在网页中创建了一个iframe标签,该标签的尺寸是100%页面大小,覆盖了原网页
可以看到,XSS钓鱼的隐蔽性很高,通常会挂在一些存在XSS漏洞、知名度、权威度较高的网站,上钩的可能性被大大提高。
1、XSS跨框架钓鱼(Iframe Phishing)
上述例子就是XSS跨框架钓鱼,通过iframe标签嵌入远程域的一个仿冒页面实施钓鱼
2、XSS重定向钓鱼
这种钓鱼方式是把当前页面重定向到一个钓鱼网站上,实现比较简单
利用document.location.href方法将网页重定向
网页跳转
注意网址发生了改变,可能被细心的用户发现,但是相比传统钓鱼隐蔽性高了不少,毕竟是大网站跳转过去的
3、HTML注入钓鱼
类似iframe钓鱼,不同点是这里直接注入一大段HTML/javascript代码,在网页上构建一个登录框实施钓鱼,原理是一致的,可以自己探索下。
4、Flash钓鱼
Flash钓鱼甚至不需要网站存在XSS漏洞,只需要把构造好的flash文件放到黑客服务器,然后在目标网页上用、引用flash即可,不过flash的安全性一直饱受质疑,chrome等各大浏览器近些年也宣布不会再继续支持flash。