专栏首页信安之路XSS学习笔记【一】

XSS学习笔记【一】

本文主要内容:

  • 三种类型的XSS原理
  • 三种类型的XSS实验演示

XSS的分类

  • 非持久型

非持久型XSS也称反射型XSS。具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果。那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻处理这段恶意代码,并返回执行结果。如果服务端对这段恶意代码不加过滤的话,恶意代码就会在页面上被执行,攻击就成功了。举个例子,一般的网页是有搜索框的对吧,如果攻击者搜索一段带有html标签的字符串,搜索的结果就会以该形式显现在页面上,或者至少页面上会包含用户搜索的字符串,而如果我们提交一段精心构造的字符串时,并且服务端没有对其做任何处理时,XSS漏洞就产生了。

  • 持久型

持久型XSS也称存储型XSS。我们在浏览网页时都见过论坛、留言板之类的地方吧。他们有一个共同的特点就是每个用户都能提交自己的文本,并且都能被其他任何人看到。那么,当攻击者提交一段恶意脚本作为内容时,并且服务端不加过滤的话,这段恶意脚本会持久的存在在这个页面上,从而使每个访问这个页面的用户都会执行这段恶意代码。

  • 基于DOM的XSS

这种XSS攻击方式不同于非持久型XSS。非持久型XSS是通过在链接上添加js动态脚本来达到攻击的目的,而基于DOM的XSS则是在链接上添加一个带参数的DOM元素,将要执行的脚本语句写入这个DOM的特定事件中,通过触发事件来达到执行这段脚本语句的目的。

实验演示

本实验环境为:apache 2.4.4,php 5.4.16,mysql 5.6.12,chrome 59,ie 11,win7

1. 非持久型XSS

首先我们写一个客户端client.html和服务端server.php,如下图所示:

客户端代码:

客户端界面:

服务端代码:

构造链接:

http://localhost/server.php?search=%3Cscript%3Ealert(/test/)%3C/script%3E

简易非持久型XSS在IE11下的显示结果:

简易非持久型XSS在chrome下的显示结果

可以看到我们的代码'alert(/test/)'在IE 11下已被成功执行,而在chrome下则被浏览器拦截,无法执行,但是我们也可以通过一些字符串构造的方法绕过浏览器自带的安全防护。在下期的文章中我们会深入探讨这些方法。

2. 持久型XSS

要演示持久型XSS,这里我们先做了一个简易的留言板,服务端对提交的数据不进行任何编码,提交的数据直接存进数据库,前端用ajax从服务端读取数据。 当我们提交一条

<script>alert(/test XSS/)</script>

时,这条记录就会被显示在页面上,从下图可以看到我们的代码已执行成功。以后每个访问此页面的用户都会自动执行此代码。

持久型XSS演示:

3. 基于DOM的XSS

那么为了方便,我直接沿用了上面演示非持久型XSS的客户端和服务端,只不过我这里的请求链接变成了

http://localhost/server.php?search=%3Cimg%20src=1%20onerror=alert(/test/)%3E`

如下图所示: 在IE11上还是能够正常执行:

在chrome下则被浏览器拦截:

如果想隐藏的稍微好点,我们可以在图片中写一句样式style="height:0;width:0",这样连图片的影儿都看不到了。


总结

经过了上面的三个实验演示,我们可以总结出三种XSS攻击方式的隐蔽性和有效性从强到弱是:持久型XSS>基于DOM的XSS>非持久型XSS。

另外,我们在实验中也碰到了XSS被浏览器拦截的情况,并且在实际情况中,服务端也会对我们提交上来的数据做一些编码处理,导致有时我们的XSS攻击并不是那么的有效,在下期文章中我们会对绕过诸如此类的安全防护做进一步的研究探讨。

本文分享自微信公众号 - 信安之路(xazlsec),作者:晚风

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 轻松理解 X-XSS-Protection

    首先我们来理解一下什么是“X-XSS-Protection”,从字面意思上看,就是浏览器内置的一种 XSS 防范措施。

    信安之路
  • 前端Hack之XSS攻击个人学习笔记

    此篇系本人两周来学习 XSS 的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程...

    信安之路
  • 与http头安全相关的安全选项

    由于HTTP是一个可扩展的协议,各浏览器厂商都率先推出了有效的头部,来阻止漏洞利用或提高利用漏洞的难度。了解它们是什么,掌握如何应用,可以提高系统的安全性。 下...

    信安之路
  • XSS基础

    XSS大家一定不陌生,上章咱们就用到XSS来抓取token,XSS到底是什么呢?这里给大家从基础开始讲解

    天钧
  • 从零开始学web安全(1)

    一直对web安全很感兴趣,却一直只是略懂一点。决定从现在开始学起web安全的知识,更新起web安全系列的文章。文章内容为作者自己边学边写的,不对之处多谢各位大大...

    IMWeb前端团队
  • XSS原理详解

    目标:前端脚本解析器,比如浏览器的javascript解析引擎、IE中的VBScript解析引擎。

    行云博客
  • 跨站的艺术-XSS入门与介绍

    什么是XSS? XSS全称跨站脚本(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写...

    云鼎实验室
  • XSS分析及预防

    XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。在WEB前端应用日益发展的今天,XSS漏洞尤其容...

    欲休
  • XSS注入

    XSS(Cross Site Scripting),由于与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此一般缩写为XSS。X...

    小老鼠
  • xss备忘录

    黑白天安全

扫码关注云+社区

领取腾讯云代金券