1.原理
指攻击者利用网站程序对用户输入过滤的不足,输入可以显示在页面对其他用户造成影响的HTML代码工具,从而盗取资料,获得管理员信息等。
通俗来讲,xss跨站攻击就是寻找输入输出的地方,如url地址处的输入,留言板的输入,来进行js代码的注入,从而获取信息。
输入地点:get,post,header,文本编辑器,各类标签插入和自定义。
输出地点:用户资料,关键词,文件上传。
2.前置知识总结
1.cookie是显示在你客户端的验证信息,而session则是存储发服务器的信息。通过xss漏洞只能获取网站的cookie,而无法获取session。一些网站有时会是session验证,获取cookie也没用。
3.工具
1.各种xss平台
2.beef平台
3.FFDec flash文件的反编译软件
4.xss漏洞的分类
4.1反射型(非持久型)
反射型xss漏洞又名非持久型,其主要为一次性构造。
如:www.baidu.com/s=<script>alet(1)</script>
其便是典型的反射型xss漏洞,即输入即用。
反射型的漏洞因为无法储存,所以便要想办法让被攻击者进行当前页面的访问或者自己输入js代码进入。但人家也不是傻,难以让别人进行访问。
所以一般来说,反射型的漏洞十分鸡肋,厂商甚至不将其放在眼里。
4.2存储型(持久型)
存储型漏洞应该是xss跨站的主要形式。其主要利用网站中例如留言,评论等功能,将js语句写入数据库中,从而使之后访问的人都会执行代码。
存储型的xss漏洞可以通过beef进行监控,从而获取信息。
4.3DOM类型
DOM类型不同于其他类型,其输入代码完全由前端HTML代码编写。进行DOM类型的xss注入就类似于白盒测试,查看代码的编写方法,从而进行特定的xss注入。
4.4mxss型
mxss型的注入又称突变型注入,其是指本来正常的无法产生xss的代码,在经历网站的一些过滤等变成了xss。
简单的例子就是qq的预览功能,其内部是存在一个网页来对payload进行提取处理,这样也就有可能将无害的代码通过反编译等转化为xss。
但感觉这种还是一些大网站会有,也比较少。
4.5Flash Xss
flash文件的结尾是swf,其产生xss的原因其实有两个:
- getURL/navigateToURL 访问跳转
- ExternalInterface.call 调用js函数
因为flash文件是可以访问Js语句的,所以对于flash xss的利用,可以通过反编译swf文件的方法,来看是否有extermallnterface.call,并看其中时候有变量可以传入,从而进行xss注入。
4.6PDF xss
PDF的xss往往会和文件上传进行结合,当文件上传无法植入后门时,我们可以用pdf编译器来往pdf文件中植入js语句来传入,从而实行注入。
要注意的是,PDF xss是通过直连访问的方式进行代码的触发。
4.7UXss
uxss和其他的xss不同,别的Xss利用的是网站,目标是管理员,但uxss是利用了浏览器和浏览器的扩展插件进行xss注入。
就比如在老版本的edge浏览器中,对于一些js语句会进行过滤,但通过其翻译功能。可对语句进行重新编译,从而会执行xss注入。
4.8UTF-7 XSS,NHTML,XSS CSS,XSS,VBScript XSS
老版本的东西,现在基本上没了。
5.xss的绕过
主要:
对于xss的ctf题目,主要就是对cookie获取,而各种题目会有对js语句的筛选。对于这种题目,可以先测试测试,看是过滤了什么,然后做出相应的语句的改变。
主要的一个思路,就是通过js语句中的window.location.href将信息传到你的服务器上,从而对于cookie进行利用。
6.xss的防御方法
1.自定义函数,过滤script等关键字,达到防御的作用。
2.httponly来防止cookie的盗用
3.对于输入的长度等进行限制
4.csp防护
csp主要就是一个白名单策略,来设置哪些语句可以通过,从而防止xss
7. 总结
在当前阶段的学习,感觉就是对xss的一些基本漏洞类型,和一些简单的绕过进行学习。一些靶场和ctf的题目也是针对这个。
但实战中的xss漏洞很多就会有钓鱼网站等。
就比如xss结合msf,在你访问我的网站时,跳出个弹窗说什么flash版本过低,让你下载,而跳转的页面中就已经植入了木马。
等后期学多了,就还是要尝试这种实战的东西,现在知道的还是太少了。
标签:语句,xss,跨站,XSS,代码,js,漏洞 From: https://blog.csdn.net/ajjsjd/article/details/142234439