【渗透技术】XSS跨站漏洞详解

XSS漏洞基础详解 3
JavaScript基础知识 3
XSS分类 5
反射型XSS 5
DOM型XSS 6
存储型XSS 6
XSS漏洞的挖掘和绕过 7
手工挖掘 XSS漏洞 7
工具挖掘XSS 9
Brutexssr使用 9
OWASP Xenotix使用 10
XSS绕过限制 12
常见预防XSS的代码以及绕过方法 12
绕过magic_quotes_gpc 15
编码 16
XSS漏洞的综合利用 18
COOKIE获取 18
反射型XSS的cookie获取 18
存储型XSS的cookie获取 20
JS留后门 22

1.认识XSS
XSS(cross-site script)跨站脚本自1996年诞生以来,一直被OWASP评为十大安全漏洞中的第二威胁漏洞。也有黑客把XSS当做新型的“缓冲区溢出攻击”,而JavaScript是新型的shellcode。
2011年6月,国内最火的信息发布平台“新浪微博”爆发了XSS蠕虫攻击,仅持续16分钟,感染用户近33000个,危害十分严重。
XSS最大的特点就是能注入恶意代码到用户浏览器的网页上,从而达到劫持用户会话的目的。
2.什么是跨站脚本
是一种经常出现在web应用程序的计算机安全漏洞,是由于web应用程序对用户的输入过滤不严而产生的。攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采用cookie资料窃取,会话劫持,钓鱼欺骗等攻击手段。
3.XSS脚本实例

xss test



这段代码使用alert函数来执行打开一个消息框,消息框中显示xss信息
使用xss弹出恶意告警框,代码为

xss输入也可能是html代码段,如果使网页不停的刷新,代码为

嵌入其他网站链接的代码为

3.XSS的危害
网站钓鱼,包括盗取各类的用户账号
窃取用户的cookie
窃取用户的浏览器会话
强制弹出广告页面、刷流量
网页挂马
提升用户权限,进一步渗透网站
传播跨站脚本蠕虫等。

JavaScript基础知识
1.JavaScript简介
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。[1] 
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。
2.document是一个对象,从JS一开始就存在的一个对象,它代表当前的页面(文档)
我们调用它的write()方法就能够向该对象中写入内容
既:document.write()
可以在html引用外部js代码

Js代码中写入
Document.write(“hello xss”);
3.JavaScript变量
定义变量
var变量名;
var x;
var a=1;
var b=”xss”
var c=True
var d=a+10
4.JavaScript流程
if –else控制语句
var a=20;
var b=10;
if(a>b){
alert(“a=20”);
}else{
Alert(“b=10”);
}
5.JavaScript函数
function x(a,b){
var c=a+b;
return c;
}
Var xx=x(1,2);
Conseole.log(xx);
6.事件
onclick属性
function x(){
alert(/xss/)
}

hello

XSS分类
反射型XSS
DOM型XSS
存储型XSS
反射型XSS
反射型跨站脚本也成作非持久型、参数型跨站脚本、这类型的脚本是最常见的,也是使用最为广泛的一种,主要用于将而已的脚本附到URL地址的参数中。
例如
http://www.123.com/123.php?user=”>
一般使用的将构造好的URL发给受害者,使受害者点击触发,而且只执行一次,非持久化
反射型XSS攻击流程

攻击场景:
假如http://test.com/xss1.php存在XSS反射型跨站漏洞,那么攻击者的步骤可能如下。
①test1是网站test.com的用户,此时正在登录的状态中。
②攻击者发现http://test.com/xss1.php存在XSS反射型跨站漏洞,然后精心构造JavaScript代码,此段代码可以窃取用户的cookie。
③攻击者将带有反射型XSS漏洞的URL通过站内信息发送给用户test1,使用各种诱导的方式让用户test1去打开链接。
④如果用户test1打开了带有XSS漏洞的URL,那么就会把自己的cookie发送到攻击者中。
⑤攻击者接受到用户test1的会话cookie,就可以直接利用cookie以test1的身份登录test.com网站中。
以上步骤,通过使用反射型XSS漏洞可以以test1的身份登录网站,这就是其危害。

DOM型XSS
传统类型的XSS漏洞(反射型或存储型)一般出现在服务器端代码中,而DOM XSS是基于DOM文档对象模型的一种漏洞,所以,受客户端浏览器的脚本代码所影响。
DOM XSS取决于输出位置,并不取决于输出环境,因此也可以说DOM XSS既有可能是反射型的,也有可能是存储型的,简单去理解就是因为他输出点在DOM。

存储型XSS
存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击,这就是存储型XSS。
在测试是否存在XSS时,首先要确定输入点与输出点,例如:我们要在留言内容上测试XSS漏洞,首先就要去寻找留言内容输出(显示)的地方是在标签内还是标签属性内,或者在其他地方,如果输出的数据在属性内,那么XSS是不会被执行的。
存储型XSS比反射型跨站脚本更具威胁性,并且可能影响到web服务器的自身安全。
此类XSS不需要用户点击特定的URL就能执行跨站脚本,攻击者实现将恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含恶意的代码的页面就会执行恶意代码。

XSS漏洞的挖掘和绕过

火狐中常用的XSS调试插件
Hackbar
Firebug
Tamper Data
Live HTTP Headers
Editor Cookie

挖掘方法:
手工挖掘
工具挖掘

完整下载地址:https://t.zsxq.com/yf6E6yZ

发表评论

电子邮件地址不会被公开。 必填项已用*标注