【安全测试】Web应用安全之XSS跨站脚本攻击漏洞相关

7人阅读 评论(0) 收藏 举报
分类:

前言

以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了。

前几天我们收到了了一份标题为《XX账号昵称参数中存在存储XSS漏洞》的报告文档,来源是一个叫漏洞盒子的机构,看它的官方介绍,是一个互联网安全测试众测平台。

第一次在实际工作中遇到相关的问题,所以决定再系统的学习一下,此篇为学习记录。

XSS概念及分类

XSS 全称(Cross Site Scripting),直译过来就是跨站脚本攻击,是Web程序中最常见的漏洞。

有点类似于SQL注入,可以简单理解为“HTML注入”,把用户输入的数据当做脚本执行,进而达到想要的目的。而这种目的通常是恶意的,比如获取用户的Cookie,导航到恶意网站,携带木马等。

XSS攻击可以根据攻击发生的实时性分为以下几类:

反射型XSS(非持久性XSS)

简单说可充当执行脚本的恶意数据,由用户从“外部”输入,通过提交输入的方式“嵌入”到网页url中。

简单举例:
针对存在XSS攻击的某个网页输入框中输入“恶意数据”,并提交,通常,这类提交操作对应着一个get请求,当我们把这个请求发送给其他用户,并让用户在web浏览器中打开请求,这时就会把恶意数据当作脚本再次执行,比如发送cookie等信息到指定的邮箱等。

存储型XSS(持久型XSS)

类似反射型XSS,不同的是,其“恶意数据”本身就是包含在网页源码中、或者自动从服务器内部读取并“嵌入”网页中。

简单举例:
黑客在某个论坛写了一篇文章,并在文章中写入了用会充当脚本执行的数据,比如一段恶意javascript代码,这样所有浏览该文章的用户,都会自动在其浏览器中执行这段恶意代码。

非持久性XSS漏洞一般威胁的是用户个体,持久型XSS所威胁的对象可能是是大量的用户.

如何测试XSS漏洞

站在一个测试的角度,我们要怎么来对XSS漏洞进行测试呢?

方法一:

查看代码,查找关键的变量, 客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cookie. 例如在ASP的程序中,通过Request对象获取客户端的变量

<%
strUserCode =  Request.QueryString(“code”);
strUser =  Request.Form(“USER”);
strID =    Request.Cookies(“ID”);
%>

假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞

方法二: 

准备测试脚本:

"/><script>alert(document.cookie)</script><!--
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)

在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本,看能不能弹出对话框,能弹出的话说明存在XSS漏洞

XSS漏洞修复

原则:不相信客户输入的数据

XSS之所以会发生, 是因为用户输入的数据变成了代码。所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的”中括号”、“单引号”、“引号”之类的特殊字符进行编码。

攻击代码不一定在<script></script>,所以要做好以下措施:

将重要的cookie标记为http only,  这样的话Javascript中的document.cookie语句就不能获取到cookie了.  

只允许用户输入我们期望的数据。
> 例如:年龄的textbox中,只允许用户输入数字。   而数字之外的字符都过滤掉。

对数据进行Html Encode 处理
过滤或移除特殊的Html标签,  
> 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for

过滤JavaScript 事件的标签。  
> 例如 "onclick=", "onfocus" 等等。
处理建议

1、输入过滤:在用户输入的参数进行过滤,过滤掉’<’,’>’等符号,或者script,input,onerror等标签。
2、输出过滤:将用户输入内容作为页面内容的时候必须经过检测与过滤。使用HTMLEncode将以下特殊字符进行转码


参考资料:
https://github.com/yahoo/xss-filters

https://github.com/leizongmin/js-xss

http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html

http://blog.sina.com.cn/s/blog_13cc013b50102wm24.html

查看评论

Delphi中两个BUG的分析与修复

Delphi中两个BUG的分析与修复  在使用Delphi 7进行三层数据库开发时,遇到了两个小问题,通过反复试验,终于找出了Delphi 7中的两个小BUG并进行了修复(好像Delphi 6中也有相...
  • lifanxi
  • lifanxi
  • 2003-05-30 15:47:00
  • 1845

安全测试之XSS跨站脚本攻击

一、跨站脚本攻击的概念跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html...
  • quiet_girl
  • quiet_girl
  • 2016-01-28 13:52:16
  • 4266

Web安全测试之——XSS漏洞

XSS攻击:跨站脚本攻击(Cross Site Scripting),它是Web程序中最常见的漏洞。 XSS攻击是指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本...
  • ShiMengRan107
  • ShiMengRan107
  • 2017-04-19 14:56:28
  • 825

XSS(跨站脚本攻击)漏洞解决方案

昨天师傅通知我,上周提交的代码中发现了XSS漏洞,让我解决一下,作为小白鼠的我还是硬着头皮寻东问西的找人找解决方案,最终在公司两位前辈的指导下重写了代码解决了这个漏洞。现汇总如下: 首先,简单介绍一...
  • sdauzyh
  • sdauzyh
  • 2017-07-11 11:23:34
  • 1415

javaweb——解决XSS跨站脚本攻击的方法

1.编写一个过滤器处理转义字符,防止SQL注入package com.xinrui.flower.filter;import java.io.IOException;import javax.serv...
  • lzc4869
  • lzc4869
  • 2016-03-20 11:35:41
  • 2660

Java防止跨站脚本(XSS)注入攻击

转自:http://www.what21.com/programming/java/javaweb-summary/xss3.html Java防止跨站脚本(XSS)注入攻击 ...
  • laokaizzz
  • laokaizzz
  • 2016-11-08 17:47:15
  • 2762

ecshop XSS跨站脚本漏洞,直接搞进后台 你们懂的!

ecshop XSS跨站脚本漏洞,直接搞进后台 你们懂的! 2015 /5/17 9:47 215 沙发 漏洞标题 ecshop XSS跨站脚本漏洞,直接搞进后台 你们...
  • zhangfeng1133
  • zhangfeng1133
  • 2016-11-25 22:37:05
  • 1010

XSS跨站脚本漏洞修复建议- 如何防御CSS CrossSiteScript 跨站脚本攻击

XSS跨站脚本漏洞修复建议- 如何防御CSS CrossSiteScript 跨站脚本攻击 小心XSS跨站脚本漏洞 Web的安全问题越来越严重,漏洞总是在不停的出现,而我们以前一直在做的都是打...
  • yucaifu1989
  • yucaifu1989
  • 2017-03-14 15:14:02
  • 2423

XSS跨站脚本攻击(一)----XSS攻击的三种类型

一、简介 什么是XSS? 百度百科的解释: XSS又叫CSS  (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时...
  • u011781521
  • u011781521
  • 2016-12-27 22:32:21
  • 19895

XSS跨站脚本攻击原理及防护方法

概念:     XSS(Cross Site Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,...
  • lovechuanyu
  • lovechuanyu
  • 2014-10-28 14:16:43
  • 4952
    个人资料
    持之以恒
    等级:
    访问量: 1578
    积分: 293
    排名: 10万+
    文章存档
    最新评论