XSS漏洞详解

Xss漏洞介绍:

Cross-Site Scripting,简称为XSS或跨站脚本或者跨站脚本***。是一种针对网站或者应用程序的漏洞***技术,也是利用代码注入的一种。它允许恶意用户将代码注入网页,其他用户浏览网页时将会受到影响。
XSS***分为三类:反射型,存储型,DOM型

XSS漏洞原理及利用:

反射型XSS
反射型XSS又称非持久型XSS,***方式仅具有一次性。
***方式:gongji者通过包含XSS代码的恶意链接发送给受害者,当受害者访问该连接时,服务器接收该受害者用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给受害者用户的浏览器,浏览器解析这段包含XSS代码的恶意脚本,就会触发XSS漏洞,完成***。
利用
我们用dvwa来展示基础的XSS利用

在输入框中输入<script>alert(/xss/)</script>,点击submit即可弹出

存储型XSS
存储型XSS又称持久型XSS,恶意脚本将被永久的保存在服务器的数据库或者文件中。
***方式:多见与论坛,博客以及网站留言板。gongji者在发帖,留言的过程中,将恶意XSS脚本连同正常信息注入内容,随着帖子,留言板被服务器存储下来,恶意XSS脚本也将保存在服务器中,当其他用户浏览帖子或者留言时,恶意XSS脚本会在他们的浏览器中执行。
利用

在message框中输入<script>alert(/xss/)</script>,点击sign即可弹出xss

此时查看页面源代码

可以看到我们的恶意代码成功保存在服务器上
DOM型XSS
全称Document Object Model,使用DOM可以使程序和脚本能够动态访问更新文档的内容,结构及样式。
DOM型XSS是一种特殊类型的反射型XSS,基于DOM文档对象模型的一种漏洞。
***方式:用户请求一个经过专门设计的链接,由gongji者提交且包含恶意XSS代码,服务器的响应不会以任何形式包含***者的脚本,当受害者的浏览器处理这个响应时,DOM对象就会处理XSS恶意代码。
利用

图中DOM型XSS例子为再输入框里输入内容点击替换,会在“这里会显示输入的内容”替换为输入的信息

我们在输入框中输入<img src=1 onerror=alert(/xss/) /> ,点击替换,即可触发XSS



##这里为DOM型XSS漏洞源码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Test</title>
<script type="text/javascript">
function tihuan(){
document.getElementById("id1").innerHTML = document.getElementById("dom_input").value;
}
</script>
</head>
<body>
<center>
<h6 id="id1">这里会显示输入的内容</h6>
<form action="" method="post">
<input type="text" id="dom_input" value="输入"><br />
<input type="button" value="替换" onclick="tihuan()">
</form>
<hr>

</center>

</body>
</html>



单击替换时会执行tihuan()函数,而tihuan()函数是一个DOM操作,通过document,getElementById获取ID为id1的节点,然后将节点id1的内容修改成id为dom_input中的值。

XSS常用语句及编码绕过

XSS常用测试语句
<script>alert(/xss/)</script>
<img src=1 onerror=alert(/xss/) >
<svg onload=alert(/xss/) >
<a href=javascript:alert(/xss/) >
常见的XSS编码绕过有js编码,html实体编码,url编码
js编码
js提供了四种字符编码的策略
三位八进制数字,如果个数不够,在前面补0,例如"e"的编码为"\145"
两位十六进制数字,如果个数不够,在前面补0,例如"e"的编码为"\x65"
四位十六进制数字,如果个数不够,在前面补0,例如"e"的编码为"\u0065"
对于一些控制字符,使用特殊的C类型的转义风格(例如\n和\r)
html实体编码
命名实体:以&开头,以分好结尾
字符编码:十进制,十六进制ASCII码或者Unicode字符编码
url编码
使用XSS编码测试时需要考虑html渲染的顺序,针对多种编码的组合时,要选择合适的编码进行测试
常用绕过方式
双写绕过:基于“黑名单”的方式如调用str_replace函数将输入的<script>删除,可以构造语句:<sc <script> ript> alert(/ xss /)</ script>绕过
大小写混淆绕过:<ScRipt> alert(/ xss /)</ script>
报错绕过(利用img ,body 等标签的事件或者iframe 等标签的src 注入恶意的js 代码,我这里直接就简写成报错绕过了,因为基本都是靠报错来触发):<img src =1 onerror = alert(/ xss /)>

XSS漏洞的修复

过滤输入的数据
对输出到页面的数据进行相应的编码转换

原文地址:https://blog.51cto.com/superwolf/2354588

时间: 2024-10-06 00:22:35

XSS漏洞详解的相关文章

android WebView详解,常见漏洞详解和安全源码

这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView 的使用,下篇讲述 WebView 的漏洞和坑,以及修复源码的解析. 下篇:android WebView详解,常见漏洞详解和安全源码(下) 转载请注明出处:http://blog.csdn.net/self_study/article/details/54928371. 对技术感兴趣的同鞋加群 54

android WebView详解,常见漏洞详解和安全源码(下)

上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http://blog.csdn.net/self_study/article/details/55046348 对技术感兴趣的同鞋加群 544645972 一起交流. WebView 常见漏洞 WebView 的漏洞也是不少,列举一些常见的漏洞,实时更新,如果有其他的常见漏洞,知会一下我-- WebView

Android LaunchAnyWhere (Google Bug 7699048)漏洞详解及防御措施

开始 近日,Google修复一个组件安全的漏洞LaunchAnyWhere(Google Bug 7699048).这个漏洞属于Intend Based提取漏洞,攻击者利用这个漏洞,可以突破了应用间的权限隔离,达到调用任意私有Activity(exported为false)的目的. 该漏洞影响Android 2.3至4.3固件. 漏洞分析 在分析这个漏洞之前,需要先介绍两个东西. Account管理机制 从Android2.0开始,系统引入了Account管理机制,详细使用说明见Android官

Android FakeID(Google Bug 13678484) 漏洞详解

开始 继上一次Masterkey漏洞之后,Bluebox在2014年7月30日又公布了一个关于APK签名的漏洞--FakeID,并打算在今年的Blackhack上公布更详细的细节,不过作者Jeff Forristal在文中已经给出了不少提示,另外申迪的<FakeID签名漏洞分析及利用>也做了相关介绍.由于其中涉及的知识点较多,所以有部分朋友估计还没有看明白,所以我打算写一篇更加详细漏洞分析解说. 基础概念 在分析之前,有几个基础概念需要普及一下的: APK包中的MF.SF和RSA文件 完成签名

DWVA-关于反射型xss的漏洞详解&lt;xss reflected&gt;

反射型xss low级别 代码如下: 1 <?php 2 3 header ("X-XSS-Protection: 0"); 4 5 // Is there any input? 6 if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 7 // Feedback for end user 8 echo '<pre>Hello ' . $_GET[

CSRF(跨站请求伪造攻击)漏洞详解

Cross-Site Request Forgery(CSRF),中文一般译作跨站点 请求伪造.经常入选owasp漏洞列表Top10,在当前web漏洞排行中,与XSS和SQL注入并列前三.与前两者相比,CSRF相对来说受到的关注要小很多,但是危害却非常大. 通常情况下,有三种方法被广泛用来防御CSRF攻击:验证token,验证HTTP请求的Referer,还有验证XMLHttpRequests里的自定义header.鉴于种种原因,这三种方法都不是那么完美,各有利弊. 二 CSRF的分类 在跨站请

文件包含漏洞详解

文件包含漏洞 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间.这意味着您可以创建供所有网页引用的标准页眉或菜单文件.当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接). 产生原因:文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码. PHP中文件包含函数有以下四种: require(

【代码审计】变量覆盖漏洞详解

一.漏洞介绍 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击 二.漏洞函数 变量覆盖漏洞大多数由函数使用不当导致,经常引发变量覆盖漏洞的函数有:extract(),parse_str()和import_request_variables() 1.extract() 目前最常见的就是这个函数,使用频率最高,导致的漏洞也最多  extract(array,extract_rules,prefix)  参数 描述 array 必需.规定要

Web应用安全之文件上传漏洞详解

什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这样的攻击.文件上传为什么会是漏洞呢?文件上传本身是没有问题的,问题是文件上传后看服务器怎么来处理,怎么来解析这个文件.如果说服务器处理的模式不够安全,那么就会导致严重的后果,也就是上传了恶意的可执行文件以后,服务器端对此文件进行执行. 文件上传后导致的安全问题 上传的文件是web脚本语言,服务器的w