CTF实战9 XSS跨站脚本漏洞

重要声明

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

XSS产生的背景

Web 2.0出现以前,XSS跨站脚本攻击不是那么引人注目

但是在随着Web 2.0出现以后,配合流行的AJAX技术,XSS跨站脚本攻击的危害性达到了十分严重的地步

世界上第一个XSS跨站脚本蠕虫发生在MySpace网站,20小时内就传染了一百万个用户,最后导致该网站瘫痪

随着SNS社交网站、微博系统的出现,Web应用安全重心转移到用户账号安全上,XSS攻击成为当今最流行的一种攻击方式,同时也是Web应用面临的主要威胁

XSS攻击事件一

在2005年10月初,世界上第一个XSS蠕虫Sammy出现了,它利用著名网络社区MySpace.com的系统漏洞,以XSS的方式进行传播的Sammy蠕虫的作者在社区个人资料中插入XSS攻击脚本

当其他MySpace.com用户查看他的资料时,XSS攻击脚本就会运行,自动把Sammy的作者加为好友,同时Sammy本身也会被复制到浏览者的个人资料里面进行传播

不到20个小时,就有超过100万MySpace.com用户受到感染,造成网站一度瘫痪

MySpace.com为此不得不禁止所有用户在个人资料中加入任何脚本程序

2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉蒲团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为hellosamy的用户

XSS攻击事件二

2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如

"郭美美事件的一些未注意到的细节"

"建党大业中穿帮的地方"

"让女人心动的100句诗歌"

"3D肉蒲团高清普通话版种子"

"这是传说中的神仙眷侣啊"

"惊爆!范冰冰艳照真流出了"

等等微博和私信,并自动关注一位名为hellosamy的用户

首先,黑客通过对新浪微博的分析测试发现新浪名人堂部分由于代码过滤不严,导致XSS漏洞,并可以通过构造脚本的方式植入恶意代码

通过分析发现,在新浪名人堂部分中,当提交时,新浪会对该字符串进行处理,而由于应用程序没有对参数g做充足的过滤,且将参数值直接显示在页面中,相当于在页面中嵌入了一个来自于2kt.cnJS脚本

JS脚本是黑客可以控制的文件,使得黑客可以构造任意JS脚本嵌入到的页面中,且通过AJAX技术完全实现异步提交数据的功能,进而黑客通过构造特定的JS代码实现了受此XSS蠕虫攻击的客户自动发微博、添加关注和发私信等操作

然后,黑客为了使该XSS蠕虫代码可以大范围的感染传播,会通过发私信或发微博的方式诱惑用户去点击存在跨站代码的链接,尤其是针对V标认证的用户,因为此类用户拥有大量的关注者,所以如果此类用户中毒,必然可以实现蠕虫的大范围、快速的传播

最后,当大量的加V认证账户和其他普通用户中毒后,这些用户就会通过发微博和发私信的方式将该XSS蠕虫向其他用户进行传播,进而导致了该XSS蠕虫的大范围、快速的传播与感染

XSS概述

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击

它指的是恶意攻击者往Web页面里插入恶意HTML代码,当用户浏览该页面时,嵌入Web页面的HTML代码会被执行,从而达到恶意用户的特殊目的

XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性

XSS攻击中,一般有三个角色参与

攻击者

目标服务器

受害者的浏览器

XSS的危害

突破域限制

修改HTML代码

XSS蠕虫攻击

命令执行

获取客户端信息

结合CSRF攻击

获取系统管理后台权限

盗取账号

DDOS攻击

我们可以根据XSS工具的特性将XSS分为这么几种

反射型XSS

<反射型XSS>也称为<非持久型XSS>,其特征是直接在URL中输入恶意代码

这种XSS攻击的隐蔽性较差,一般的浏览器都可以识别并拦截

存储型XSS

<存储型XSS>也称为<持久性XSS>,这种攻击的特征是恶意代码是存储在数据库或者服务器上

一般存储型XSS的隐蔽性比较高,浏览器一般不会察觉和拦截,所以危害也是最大的

那么XSS一般会出现在什么地方?

XSS可能出现的地方

一般可以分为如下几种

HTML文档

包括了 标签

属性

Javascript

css

或者还可能出现在以下地方 多媒体、网页插件

Flash

Word

PDF

Siverlight

Applet

甚至在一些内嵌了浏览器的软件中,也可能会存在XSS

CS客户端软件

这里就没有分类了,就这么一种CS客户端软件,像大家熟悉的Steam这种类型的客户端软件

那么怎么挖掘XSS漏洞呢?

挖掘XSS漏洞

一般挖掘的时候要在能输入东西的地方都进行XSS输入测试

一般常见的如留言模块

如果是反射型的XSS,就要注意URL中的参数

而如果是存储型的XSS,就该注意文本框及其他任意可以填写内容的地方

下面我们演示一下两种常见的XSS的区别

反射型XSS简单演示

假如我们有这么一个网站,它会将我们的搜索内容都原封不动的返回显示在网页里面,我们就可以使用反射型XSS来攻击了

这里我们用OWASP中的WebGoat来演示这种攻击

上图可以看出有个搜索框,我们输入什么就会返回什么

那这样就满足了反射型XSS的特征,我们可以这样进行攻击

那我们试试输入这句恶意代码看看

<script>alert("XSS");</script>

这就是一个简单的演示

存储型XSS简单演示

我们假设有这么一个网站,是让人去留言的,系统会把留言存储在服务器上

我们还是用OWASP来演示

这里有个留言系统,我们留个言看看

我们测试了一下发现可以完整的把我们的留言保留在系统中

于是我们可以这样测试存储型XSS

输入

<script language="javascript" type="text/javascript">alert("Hatsune Say Store XSS");</script>

之后留言

然后我们点开这个XSS留言的链接

马上就会跳出一个窗口

然后现在这两种XSS就大概演示到这里

当然,XSS攻击博大精深,现实中一般不会有我们上面介绍的这么简单,其他还有Flash XSSDom XSS等等

这里只是抛砖引玉给大家一个对XSS的初步理解~

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-05-12

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

程序员保证能笑出腹肌

客户需求 vs 最终产品 ? requirements vs. implementation 程序员的一天 ? The Programmers life 寂寞...

3817
来自专栏大数据

Kafka详细的设计和生态系统

Kafka 的核心是经纪人,主题,日志,分区和集群。核心也包括像 MirrorMaker 这样的相关工具。前面提到的是 Kafka,因为它存在于 Apache ...

1.1K1
来自专栏别先生

个人笔记本安装多个jdk(jdk1.7,jdk1.8,jdk1.9,jdk10.0)出现的问题

1、个人笔记本已经安装jdk1.7,jdk1.8,(之前没有在意这个问题)。最近想学习jdk10.0,安装以后,环境变量变成了jdk10.0,就是cmd输入命令...

861
来自专栏FreeBuf

如何利用Microsoft Edge漏洞获取本地文件?

在2015年,微软发布了Edge浏览器。当它最初被开发时,它被命名为Project Spartan。

1162
来自专栏技巅

linux内核崩溃问题排查过程总结

5234
来自专栏小文博客

小文’s blog — win7最新升级win10教程

1673
来自专栏黑白安全

跨站点脚本(XSS)攻击

跨站点脚本(XSS)是一种常见的攻击媒介,可将恶意代码注入易受攻击的Web应用程序。XSS不同于其他网络攻击媒介(例如SQL注入),因为它不直接针对应用程序本身...

1011
来自专栏FreeBuf

反入侵之发现后门利用mount-bind将进程和端口信息隐匿

0x00. 前言 作为一名安全工程师,日常工作中会经常遇到网站遭遇入侵,甚至被植入后门,如何去发现后门,进而对入侵进行调查取证都是一名优秀的安全工程师必备功课,...

3716
来自专栏逸鹏说道

Stack Overflow 2016最新架构探秘

这篇文章主要揭秘 Stack Overflow 截止到 2016 年的技术架构。   首先给出一个直观的数据,让大家有个初步的印象。   相比于 2013 ...

3337
来自专栏菩提树下的杨过

mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

1、jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下...

2088

扫码关注云+社区

领取腾讯云代金券