随着网络时代的飞速发展,网络安全问题越来越受大家的关注,而SQL注入的攻击也随着各种防注入的出现开始慢慢的离我们而去,从而XSS跨站脚本攻击也慢慢的开始在最近几年崛起,也应对了’没有绝对的安全’这句话。

XSS攻击:它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。

大家刚接触XSS的时候和我大概也差不多,都是在不断的在各种搜索栏,地址栏中或者注册栏中疯狂的使用

<script>alert('xss')</script>

之类的语句进行测试,从而得到的效果几乎80%都是

&lt;script&gt;alert('xss')&lt;/script&gt

出现这样的,或者是scriptalertxssscript再或者是scriptalert(‘xss’)script。在大家看来只要能输入的地方大多数都是这样输入的,其实这存在着一个问题。

例如,在dom输出的也许是:

<input type="text" value="搜索内容">

过滤了<>那么就完全没办法,使用

<script>alert('xss')</script>

之类的语句,怎么办?我们思考一下,在input标签中有一个触发和点击事件,我们也可以考虑下使用闭合value中的内容来增加一个点击事件,

好,我们 直接来看下例如:我们搜索的内容是aaaa,那么标签中应该是这样显示的:

<input type="text" value="aaaa">

我们来改一下aaaa。我们改为:

aaaa" onclick=javascript:alert('xss')

那么在:

<input type="text" value="aaaa">

中会出现的就是:

<input type="text" value="aaaa" onclick=javascript:alert('xss')>

当用户点击我们的搜索框的时候就会弹出一个XSS的对话框,这个只是测试,之后如何调用js获取cookie或者是钓鱼之类都是靠大家的想象力去做,再如 果,当程序员过滤了script或者是”怎么办?一般搜索的地方都会在一个script标签中出现,例如:新浪网知识人某问题搜索的地方,过滤了”经过测试发现没有过滤’,这个就是一个线索,然后在审核元素中发现在我们 搜索的时候新浪会在一个script标签中给一个这样的东西:

 <script>
function thisinit()
{$("syzs1").value = 50 - document.login.title.value.length;
$("syzs2").value = 3000 - document.login.description.value.length;
getTitleContent ('aaaa', '0');
getTitleClass('0');
autotenms();}
</script>

我们可以很明显的看到我们所搜索的aaaa出现在了这里面,我们现在来简单的构造一下,再构造之前和大家说一下一些关于javascript的东西, 在javascript中,当一行语句出现错误的时候其他一些js语句是无法执行的,//是js中的注释,首先教大家的是一种简单的方法。

getTitleContent ('aaaa', '0');

我们首先将这条语句先结束掉,然后在执行我们的js代码,我们直接来写 首先,aaaa’,’0′)这样,我们就已经结束了这条语句,程序会认为是一条完整的语句,这只是第一步,因为我们这些程序会变成这样getTitleContent (‘aaaa’,’0′)’, ’0′);这样说会报错的对吧,我们继续来写

aaaa','0');alert('xss')//aaaa

,这样程序就会变成了

getTitleContent ('aaaa','0');alert('xss')//aaaa,', '0');

我们来分析一下,首先程序先执行

getTitleContent ('aaaa','0');

然后执行alert,最后因为我们注释掉了

//aaaa,', '0');

所以后面的东西程序不会理会。这样,我们的程序就没有错了,xss自然就触发了。
说完这个,再说一种情况,如果程序过滤了//和;一号店的搜索地方就是这样的(前面日记中也有提到)搜索的地方也出现了一个script标签,这样的:

 <script>
trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"));
</script>

按照刚才我们的思路是这样写的对吧

trackerContainer.addParameter(new Parameter("internalKeyword","aaa"));alert('xss)//aaa"));

思路没错,但是人家过滤了//和;人家也想到了这一点,怎么办呢?其实在XSS中还有一种方法,就是+执行语句+这样一个东西,也就是连接符。例如

<script>
var b='123';
document.write('a'+b+'a');
</script>

在html中会显示a123a 我们看到的是字符串a和一个+b+和一个字符串a啊,怎么会出现123呢???因为我们的b是一个变量,里面赋值了字符串123,然后+b+是插入到我们 的aa中间,所以输出的是a123a。

好,我们知道了这个原理之后,我们就大概知道我们下面应该做什么了,也就是:

trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"+alert('xss')+"a"));

这样,我们应该在搜索的地方怎么写呢?我猜聪明的你们应该想到了,是这样的

aaa"+alert('xss')+"a

,这样写就写好了,也许眼睛尖的人会看到一个地方就是”a为什么要这样写? 这个很简单,因为本来程序将我们搜索的地方放在了”"中,如果我们再加一个”的话就变成了

trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"+alert('xss')+"a""));

程序就自然而然的出错了。

同样,一号店,乐视,多玩,中国知网,都存在这样的漏洞

[via@习科]

[转]以新浪为例浅谈XSS的更多相关文章

  1. 浅谈xss原理

    近日,论坛上面XSS满天飞,各处都能够见到XSS的痕迹,前段时间论坛上面也出现了XSS的迹象.然后我等小菜不是太懂啊,怎么办?没办法仅仅有求助度娘跟谷歌这对情侣了. 能够说小菜也算懂了一些.不敢藏私, ...

  2. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

  3. 以List为例浅谈C#的学习方法

    前言:关于学习方法的讨论其实是个比较模糊的概念,对于List的介绍的资料其实已经很多了,但是一般是介绍List本身,我打算分享的是,以温故List为例,来获取新知识的这么一个过程.这里的新知识也不是什 ...

  4. 以用户注册功能模块为例浅谈MVC架构下的JavaWeb开发流程

    JavaWeb应用开发,撇开分布式不谈,只讨论一个功能服务应用的开发,无论是使用原生的Servlet/JSP方案,还是时下的SSM架构,都有一套经过工程实践考验的最佳实践,这综合考虑了团队协作.项目管 ...

  5. 浅谈xss攻击

    近期学习过程中提到xss攻击的问题,便想要了解一下,总结如下: XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, ...

  6. 浅谈XSS

    最近在做项目中的漏洞修复工作,在短时间内接触到很多关于web开发需要防范的漏洞,例如SQL injection , XSS, CSRF等等,这些漏洞对web开发的项目来说的破坏还是比较大的,其实在网上 ...

  7. 浅谈XSS攻击原理与解决方法

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人 ...

  8. 浅谈xss漏洞

    0x00 xss漏洞简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法, 那么很可能就存在XSS漏洞. 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Scr ...

  9. [C#]6.0新特性浅谈

    原文:[C#]6.0新特性浅谈 C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间.所以现在再来聊一聊新版本带来 ...

随机推荐

  1. phpcms后台管理

    phpcms从网上下载就好了,记住这个要安装在Wamp中的www文件下 从网页输入网址进入后台控制 输入密码账号,即进入后台控制界面: 后台管理有自带的网页模板把他换成自己的模板: 修改站点:   把 ...

  2. Linux安装redis及redis的php扩展。

    ------ redis安装,启动服务,开机启动,打开redis客户端 ------ yum install -y redis systemctl start redis systemctl enab ...

  3. 深入浅出学习HTTP协议

    之前学习javaWeb只是大致了解了一下,今天重点介绍下http请求,当是复习吧! 一.http基础概念 1.什么是http协议? HTTP是Hyper Text Transfer Protocol( ...

  4. iOS开发 - Swift实现清除缓存功能

    前言: 开发移动应用时,请求网络资源是再常见不过的功能.如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见. 但是时间长了,离线缓存会占用大量的手 ...

  5. ST-1之乱码bug

    我印象最深刻的一个错误就是乱码.上学期末做web期末作业时候,我就遇到了好多乱码问题.乱码问题并不是程序本身的逻辑错误,但是却让程序的可用性非常的差.只有输入英文时才能判断结果的正确与否.而且编译器又 ...

  6. 白话C#语法新特性之元组

    1.元组(Tuples) 元组(Tuple)在4.0 的时候就有了,但元组也有些缺点,如: 1)Tuple 会影响代码的可读性,因为它的属性名都是:Item1,Item2.. . 2)Tuple 还不 ...

  7. Android GreenDAO3.0——介绍

    引言 最近,学东西比较零散,各种知识混杂,于是记下学习记录,免得又忘了. 官方网址:http://greenrobot.org/greendao/documentation/introduction/ ...

  8. HotSpot的算法实现

    1.枚举根节点 可达性分析中从GC Roots节点找引用,可作为GC Roots的节点主要是全局性的引用与执行上下文中,如果要逐个检查引用,必然消耗时间.另外可达性分析对执行时间的敏感还体现在GC停顿 ...

  9. .Net程序员学用Oracle系列(26):PLSQL 之类型、变量和结构

    1.类型 1.1.属性类型 1.2.记录类型 2.变量 2.1.变量类型 2.2.变量定义 2.3.变量赋值 3.结构 3.1.顺序结构 3.2.选择结构 3.3.循环结构 4.总结 1.类型 在&l ...

  10. jQuery操作之效果

    jQuery操作之效果 效果操作一共分五类:1.基本,2.滑动,3.淡入淡出,4.自定义,5.设置 show(),hide(),toggle() 代码如下: html代码: <p style=& ...