目录
xss漏洞原理
由于服务器对用户提交的数据过滤不严,导致浏览器把恶意JS代码返回给服务器执行,实现对客户端攻击的目的。
xss类型
DOM型
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
反射型
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
存储型
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
防御手段
1、对输入和URL参数进行过滤(白名单和黑名单)
2、使用字符串js编码转换成实体html编码方法
3、对输出内容进行编码或转义
xss game靶场练习
Ma Spaghet!
题目要求
1.在页面上弹出alert(1337)
2.不能进行点击交互
3.不能使用https://sandbox.pwnfunction.com/?html=&js=&css=
4.使用Chrome浏览器
解题方法
由于JS源码中有URL进行get接收参数,无参数则默认Somebody为参数。所以我们在参数中使用JS语句中的标签,并在标签中的属性里输入alert(1337)提交给浏览器进行执行。
解题结果
<svg onload=alert(1337)>