Iuhrey

一个常年被吊打的Web手 一个唱歌不好指弹垃圾的吉他手

关于xss的一些学习心得

前言

按照惯例,开头还是逼逼几句,本来这一篇我昨天就写好了,可是处理的时候不小心删了,所以就只能重新写一篇了,关于xss呢,很早之前就接触过但是一直没系统的学,只是为了做xss的题目而做题目所以这一次系统的归纳一下,也算是个备忘录吧。

何为XSS

XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。(摘自百度百科)
以上的说明呢,是官方的。不过根据我的理解来说,XSS攻击是攻击者把构造的恶意代码插入到网页源码中,通过跳转,执行事件等方式来达到获取信息,执行恶意代码等目的。

XSS攻击的分类

一般来说XSS攻击分为三种。
第一种是反射型XSS,反射性XSS只是简单地把用户输入的数据”反射”给浏览器,也就是说攻击者必须让攻击点击所构造的恶意链接才能给攻击者反馈消息或者执行非本人意愿的命令。这一种反馈是即时性的,也是一次性的,也就是即输即用,也叫做”非持久型XSS”
第二种是储存型XSS,储存型XSS会把攻击者所构造的恶意代码储存到后端的数据库中,只要有用户一旦浏览到恶意代码的页面便会执行攻击的代码,被窃取登入验证等信息,攻击者便可以假冒”代表”用户进行操作。
第三种是基于Dom的XSS,这一种XSS攻击和反射型差不多,也算是反射型的一种,这种类型的攻击一般是攻击者构造一些事件,或者调用js里面一些函数来实现的,所以具体来说这种和第一种区分不算太大。

XSS一些Payload

其实来说呢,xss的payload也不是类似sql注入一样固定的,xss的payload一般来说是变化多样,根据其html的代码来进行构造的。
这是最为基础,也是常用于测试的代码

1
2
3
4
<script>alert(1)</script>
```
这里面包含了标签,也包含了alert()函数,一般来说是可以测试出一些东西的。
还有例如这种的payload


1
2
这种是通过构造一个错误,触发onerror事件弹出alert(1)。   
还有类似这种


`
这种就是通过点击恶意链接,然后用户的信息就被窃取了。
以上只是几种简单的Payload,其余的类型实在是太过复杂了,多做题目才能有更多的经验

绕过技巧

这个就大致说一下吧,之后会在练习中讲解一些的。主要分为以下几种。
1 编码绕过根据网页过滤的代码,以及代码执行的环境进行合适的编码转化,例如他在后台过滤<>这个东西,那我们可以通过%3c%3e来绕过,也可以\0x3c来绕过。
2 字符限制一般网页会限制输入的长度,我们可以进行简化代码,也可以直接更改源码中的maxlength要素来修改字符长度上限。
3 使用标签灵活使用标签也是可以达到同样的效果的。
一些其他的方式也是需要在实战中进行磨练出来的,之后会写一篇XSS练习平台的wp,详细说一些思路。

本站总访问量