1.xss的成因
xss主要是针对于js语言的漏洞,利用js语言解析攻击代码进行,从原理上来说,只要是js可以的操作,都可以做到
2.xss的条件
输入之后,页面会再次输出这个xss代码,造成xss漏洞
3.xss的分类于解释
1.常见的xss类型
反射型(非持久型):
攻击者提交数据,页面知识展示该js代码,并且触发,没有把这个js代码保存下来,攻击需要受害者点击攻击者构造好的网络地址,这是比较困难的,一般会配合钓鱼使用,在有些网站这个都不能当做一个漏洞提交,因为这个造成的危害是非常有限的
存储型(持久型):
攻击者提交js代码,服务器保存了这个js代码,再展示出这个代码造成攻击,一般会出现在需要展示的评论,留言板等等,这个造成的危害比较大,因为只要有人点击了相关的网站就会触发js代码,造成攻击
DOM型:
数据的输入与输出都在前端利用js进行,很大程度上我们可以直接看到代码
2.其他类型
mxss(突变型):
网站在对于输入的内容会进行一定的过滤,再进行输出,我们输入的js代码不存在攻击性,但是经过网站过滤输出后这个js代码激发的攻击性。具体可以查看大佬写的:mXSS攻击的成因及常见种类-CSDN博客
uxss(通用型):
浏览器的某些插件导致了js代码的执行
flashxss:
flash文件.swf中可能会引用到js代码,我们也可以尝试查看,用软件jpex工具去反编译swf查看是否调用js代码,寻找漏洞
pdfxss:
在pdf制作当中有一个动作选项,我们可以在里面写js代码,然后提交文件到服务器,当有人查看这个pdf文件的时候就会触发pdf代码,条件就是,服务器查看pdf的时候要直接打开没有过滤,也不是直接下载文件
4.xss的利用
1.需要用到的工具
xss平台XSS平台-仅用于xss安全测试专用 (xssaq.com)
BeEF-xss(这个最好安装到自己的服务器上面,因为这个是要和外网访问去配合的):可以做到cookie获取,指向跳转,社工钓鱼,配合漏洞
2.权限维持
再有web权限的情况下,我们需要持续位置我们的权限
1.无防护的状态下:xss平台可以实时获取cookie以维持权限
2.有防护状态且无法获取密码:表单劫持--上传js代码利用xss漏洞进行转发远程网站,远程进行劫持
3.钓鱼攻击
按照受害者的状态可以大致分成两种:直接触发和xss漏洞利用触发,直接触发需要一些社工手段,xss漏洞触发利用beef跳转
比如flash钓鱼,我们给受害者发送一个网页,说有好看的内容,假设受害者非常喜欢看蛇蛇,他直接点开了我们设计好的网站,我们要求他去下载一个flash安装包,当然这个安装包也是我们设计好的,里面带有我们的后门,我们可以把这个网站弄成很正规的样子,受害者就开始下载,我们就利用后门上线,xss利用情况也就是受害者点了设计的网站,但是他不去下载安装包,我们用beef偷偷给他安装上的方式
4.浏览器网马
利用xss结合beef后诱惑性语句触发
相关漏洞有:MS14-064,cve-2019-1367,cve-2020-1380
5.修改管理员密码
利用存储型xss写入更改密码的js代码,当然这需要你提前知道怎么写,如果这个网站利用了框架的情况下更容易达成,数据库存储js代码,管理员查看数据库,修改密码
js也可以劫持网页的源代码
5.xss绕过与防御
总体思路:上传js代码->受害者点击->利用js代码把受害者信息发给远程主机->远程主机保存
主要利用:网页跳转+数据传输+保存文本
过滤方式:标签过滤,特殊字符过滤,空格等等
常用的防护手段:
1.过滤特殊字符
2.HTTP_Only设置
php5以上可以设置,通过js 脚本无法获取cookie
3.csp:content-security-policy
利用白名单制度,防止引用外部信息,就算发现了漏洞也无法利用
4.内容长度限制,实体转义
6.案例
以后再写,等我慢慢补