【XSS爬坑之路一】初识XSS

2017-09-27  本文已影响0人  SunJ3t

XSS入门与介绍

1. XSS简介

XSS,跨站脚本攻击(Cross Site Scripting),是一种注入式攻击。为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

2. XSS成因

3. XSS的危害

4. XSS分类

  1. 反射型XSS:反射型跨站脚本(Reflected Cross-site Scripting),也称非持久型(Non-persistent XSS)、参数型跨站脚本。主要用于将恶意脚本附加到URL地址的参数中,只是简单地把用户输入的数据反射给浏览器,攻击者需要诱使用户点击该链接。

  2. 存储型XSS:存储型跨站脚本(Stored Cross-site Scripting),也称持久型(Persistent Cross-site Scripting。比反射型跨站脚本更具有威胁,并且可能影响到Web服务器自身的安全。攻击者先将恶意脚本代码上传或者存储到漏洞服务器中,只要受害者浏览了有该恶意代码的页面就会执行恶意代码。

  3. DOM XSS:DOM XSS从效果上来说是一种反射型XSS,但相比反射型XSS需要更进一步思考。通过修改页面的DOM节点形成的XSS。

5. 实例分析

1. XSS输出在HTML中的情况

这里是我自己搭建的环境,发现输出是直接输出在HTML中,并且没有过滤任何东西

xss_1_1 xss_1_2

那么我们直接构造

<script>alert(1)</script>

网页会解析这段代码,从而达到弹窗的效果

xss_1_3

2. XSS在input value中的情况

在对话框中输出,发现直接显示在下方框中

xss_2_1 xss_2_2

那么如果我们直接输入

<script>alert(1)</script>

这段代码就会被当作文本被输出

xss_2_3

那么我们需要把输出不放在input里,则可以通过闭合<input>
构造payload为

"><script>alert(1)</script>

成功弹框

xss_2_4

3. XSS输出在HTML属性中的情况

本来文本框中得到get参数,但是当我们闭合<input>为

"><script>alert(1)</script>

时,发现过滤了script标签

xss_3_1 xss_3_2

那么我们只能换一种弹框方式,构造payload为

"> <\img src="1" onerror="alert(1)"> 去掉img前面的\

成功实现弹窗,当然这里也可以构造成

" onclick="alert(1)"

这样当用户点击时则发生弹框

xss_3_3

4. XSS输出在script标签中的情况

发现输出的数据为get的参数,但是是通过javascript输出的

xss_4_1 xss_4_2

所以我们需要将<script>标签过滤,构造payload为

</script><script>alert(1)
xss_4_3

5. XSS输出在textarea中的情况

这是一个留言板,那么就只能用存储型XSS,那么我们需要向留言板中插入

<script>alert(1)</script>
xss_5_1

插入后,当其他人点击后,则会弹框。我们可以用这个留言板来获取他人的cookie信息,从而登录别人的帐号

xss_5_2

暂时就先学到这里,以后的学了再写出来

上一篇 下一篇

猜你喜欢

热点阅读