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

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

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

XSS分类及实例

1、反射性XSS

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

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

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

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

<img src='#' onerror=alert('xss')>

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

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

上传一个网页链接payload为<script>window.location="http://www.baidu.com"</script>提交后就会跳转网页,同理如果是个钓鱼网站,隐藏在url中,会直接跳转至钓鱼网站,带来危害。

2、存储型XSS

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

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

3、DOM型XSS

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

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

'><img src='#' onerror="alert('xss')">

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

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

XSS fuzz

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

安装完成

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

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

将抓到的包放入intruder模块

设置需要爆破的字段

设置payload

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

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

绕过方式

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

XSS防御

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

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

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

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值