渗透测试之XSS(跨站脚本攻击)

XSS(Cross Site Scripting)跨站脚本攻击,为区别于CSS改首字母为X。XSS攻击使一种注入攻击,攻击者在网页中插入精心构造的JS(Javascript)代码,当用户浏览网页时便会触发恶意代码。

XSS带来的危害:窃取用户身份凭证cookie信息、控制用户浏览器功能点,强制发表文章,强制转账、获取受害者浏览器信息(浏览记录、主机信息、真实ip、开放端口等)、控制受害者浏览器向其他网站发起恶意请求、传播蠕虫病毒。

XSS分类及实例

1、反射性XSS

    通常出现在需要提交的表单的场景,将恶意代码提交给后端,执行。受害者通常是通过点击带有恶意代码的url从而被攻击,但这类攻击的实现前提是受害者需要主动点击链接。

渗透测试之XSS(跨站脚本攻击)_第1张图片

我们就可以通过这个点提交恶意代码。如果而已代码较长提交框有限制,有两种方式解决。1、因为是get方式提交,我们可以直接在url进行修改传参。2、修改提交框的maxlength值。

渗透测试之XSS(跨站脚本攻击)_第2张图片

提交后出现弹窗,执行成功

渗透测试之XSS(跨站脚本攻击)_第3张图片

除行内引入的方式还可以采用事件引入,对应的payload为

渗透测试之XSS(跨站脚本攻击)_第4张图片

触发弹窗,说明提交的脚本被执行(如果这里是一串恶意代码,那么危害会很大)

渗透测试之XSS(跨站脚本攻击)_第5张图片

如果有正则匹配alert不能用,我们可以用其他弹窗方式(prompt、confirm),或者大小写混写的方式进行绕过。

上传一个网页链接payload为提交后就会跳转网页,同理如果是个钓鱼网站,隐藏在url中,会直接跳转至钓鱼网站,带来危害。

2、存储型XSS

    通常出现在有留言板的场景,数据回传至后端并保存在服务器中,如果将恶意代码上传并存储在后端,受害者只要浏览该页面就会受到攻击,不需要主动点击或输入任何内容。

渗透测试之XSS(跨站脚本攻击)_第6张图片

上传payload,成功后只要访问该页面就会触发上传的代码

渗透测试之XSS(跨站脚本攻击)_第7张图片

渗透测试之XSS(跨站脚本攻击)_第8张图片

3、DOM型XSS

通常以点击一个按钮的方式出现,与反射型XSS和存储型XSS有很大的区别在于不传给后端。

渗透测试之XSS(跨站脚本攻击)_第9张图片

渗透测试之XSS(跨站脚本攻击)_第10张图片

由网页的源码可以看到,传入的内容被拼入字符串,包裹在a标签里,这时候想要执行上传的东西就需要闭合a标签,payload如下

'>

渗透测试之XSS(跨站脚本攻击)_第11张图片

这种方式为还较小,不能像存储型直接将恶意代码存储在网页上(平等刺伤每一个人)仅仅可以任意执行js代码。

通过Xss平台还可以获取到用户的Cookie值,这样漏洞的危害就很大了。

XSS fuzz

在burpsuite插件市场中找到XSS Validator并且安装

渗透测试之XSS(跨站脚本攻击)_第12张图片

安装完成

渗透测试之XSS(跨站脚本攻击)_第13张图片

安装好之后,可以更换payload也可以不换,Grep Phrase后的字段为成功标志,可以按照自己情况修改。

渗透测试之XSS(跨站脚本攻击)_第14张图片

设置完毕后,在需要fuzz的地方进行抓包。

渗透测试之XSS(跨站脚本攻击)_第15张图片

将抓到的包放入intruder模块

渗透测试之XSS(跨站脚本攻击)_第16张图片

设置需要爆破的字段

渗透测试之XSS(跨站脚本攻击)_第17张图片

设置payload

渗透测试之XSS(跨站脚本攻击)_第18张图片

将我们设置的成功匹配加入

渗透测试之XSS(跨站脚本攻击)_第19张图片

设置完成后,开始攻击,successful为1的就是有效的payload。

绕过方式

js支持unicode编码,所以可以采用Unicode对payload进行编码,但是不可以对script标签编码

XSS防御

将Cookie设为HTTP-Only(浏览器将阻止Javascript访问Cookie)

对输出的信息使用实体化编码(通常代码中有很多特殊符号,特殊符号经过实体化编码后就失效了,从而防止恶意代码的执行)

加正则判断,不允许提交常见的函数以及特殊符号

你可能感兴趣的:(渗透测试,xss,前端)