安全测试 web应用安全测试之XXS跨站脚本攻击检测

简介: 安全测试 web应用安全测试之XXS跨站脚本攻击检测

web应用安全测试之XXS跨站脚本攻击检测


 

说明

意在对XSS跨站脚本攻击做的简单介绍,让大家对xss攻击有个初步认识,并能够在实际工作当中运用本文所述知识做些简单的、基础性的XSS攻击检测。

定义

XSS攻击:类似sql注入,简单说,通过“HTML注入”,把用户输入的数据当作脚本执行。进而达到想要的目的,这种目的通常是恶意。

分类

反射型XSS(非持久型XSS):

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

 

简单举例:

针对存在XSS攻击的某个网页输入框中输入“恶意数据”,并提交,通常,这类提交操作对应着一个get请求,当我们把这个请求发送给其他用户,并让用户在web浏览器中打开请求,这时就会把恶意数据当作脚本再次执行

 

存储型XSS(持久型XSS)

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

 

简单举例:

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

 

DOM Bsed XSS

通过修改页面的DOM节点型的XSS,效果上来说也是发射型XSS

举例:

略,参靠下述实验

XSS检测

实验1

构造testxss.php,内容如下

 



说明:

$xss = empty($_GET['xss_input']) ? '':$_GET['xss_input']; #使用前做判断,防止报类似如下错误:

Notice: Undefined index: xss_input  in xxx\xx.php on line xxx 报错

 

$_GET 变量是一个数组,元素索引和元素值分别是由 HTTP GET 方法发送的变量名称和值。

$_GET 变量用于收集来自 method="get" 的表单中的值。

 

请求上述testxss.php文件,并在打开页面的输入框中输入测试数据

 

输入测试数据: “shouke”,提交查询,结果如下:

 


说明:正常情况如上,用户输入的数据不被当作脚本执行,用于但不局限于在浏览器端展示

 

输入测试数据: ,提交查询,结果如下:

 

 



说明:非正常情况如上,用户输入的数据被当作脚本执行,说明存在xss攻击

 

实验2

构造testxss2.php,内容如下

 

请求上述testxss2.php文件,并在打开页面的输入框中输入测试数据

 

 

第一个输入框中输入测试数据:"><!--

第二个输入框中输入测试数据:--><script>alert('xss')</script>

提交查询,结果如下

 

 

查看执行后展示页面的源代码

 


 

说明:如上,第三、第四个输入框分别从第一个和第二个输入框获中取值,获取后如下

<input type="text" value=""><!--">

<br>

<input type="text" value="--><script>alert('xss')</script>">

,显而易见,中间部分被当作注释掉了

实验3

构造testxss3.php,内容如下

构造testxss3.php,内容如下

<html>

   <head>

   <meta http-equiv="Content-Type" content="text/html; charset="utf-8" />

       <title>利用监听事件执行xss</title>

   </head>

   <body>

       <form action="" method="get">

           <input type="text" name="xss_input_value" value="输入要展示的字符">

           <input type="submit">

       </form>

       <hr>

       <?php

           $xss = empty($_GET['xss_input_value']) ? '':$_GET['xss_input_value'];

           if(isset($xss)){

               echo '<input type="text" value="'.$xss.'">';

           }else{

               echo '<input type="type" value="输出">';

           }

       ?>

   </body>

</html>

 

请求上述testxss3.php文件,并在打开页面的输入框中输入测试数据

 



第一个输入框中输入测试数据:" onclick="alert('xss')

然后点击第二个输入框,结果如下

 


查看执行后展示页面的源代码

 

 

如上,提交后,第二个输入框源代码变成 了<input type="text" value="" onclick="alert('xss')">

 

 

 

注:

 

1、监听事件处理onclick之外,还有别的mouseover

 

2、这也说明,inputvalue是默认值,仅初始化时会加载,对其所做的修改并不会在html页面显示,上例中,第一个输入框输入的值仅在被第二框作为默认值获取时,才产生xss

 

实验4

 

构造testxss4.php,内容如下

 

<html>

 

   <head>

 

   <meta http-equiv="Content-Type" content="text/html; charset="utf-8" />

 

       <title>解决textarea无法执行script xss</title>

 

   </head>

 

   <body>

 

       <form action="" method="get">

 

           <input type="text" name="xss_input_value" value="输入要展示的字符">

 

           <input type="submit">

 

       </form>

 

       <hr>

 

       <textarea rows=2 cols=50 name="textarea">

 

           <?php

 

              $xss = empty($_GET['xss_input_value']) ? '':$_GET['xss_input_value'];    

 

              echo $xss;

 

           ?>

 

        </textarea>

 

   </body>

 

</html>

 

 

 

请求上述testxss4.php文件,并在打开页面的输入框中输入测试数据

 

 

 

第一个输入框中输入测试数据:<script>alert('xss')</script>,提交查询,结果,没发现弹窗。

 

第一个输入框中输入测试数据:</textarea><script>alert('xss')</script>,提交查询,结果如下:

 

查看执行后展示页面的源代码

 

 

注:textarea标签可定义多行的文本输入控件,正常情况下无法执行javascript,通过上述方式可执行xss攻击

 

其它

除了上述所举,我们还可以通过其它构造方式,比如<iframe>,<img>,<a>标签构造用户输入数据,比如<img/src=# onerror=alert("test")>,当图片载入错误时执行弹窗,以执行xss

 

注意:onerror事件会在文档或图像加载过程中发生错误时被触发,有时候直接填写<script>alter("test")</script>不起作用时,可以尝试该方式。

构造testxss.php,内容如下

<html>

   <head>

       <meta http-equiv="Content-Type" content="text/html";charset=utf-8 />

       <title>study xss</title>

   </head>

   <body>

       <form action="" method="get">

       <input type="text" name="xss_input">

       <input type="submit">

   </form>

   <hr>

   <?php

       $xss = empty($_GET['xss_input']) ? '':$_GET['xss_input'];

       echo '输入的字符为: '.$xss;

   ?>

   </body>

</html>

 

访问上述页面,分别输入以下数据,提交测试,查看效果

<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe的scr来弹窗

 

<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>过滤了alert来执行弹窗

 

<a href=javascript:alert('xss')>s</a> 点击s时运行alert('xss')

总结

如上所举例,实际运用时,还得根据实际环境,构造适当的“输入数据”来进行测试,方能达到预期效果。

 

注意:上述所例,仅是测试xss存在的可能性,是我们检测xss的手段,并不等同xss。如果存在xss漏洞,我们可以用它来执行其它更具备破坏性的操作,比如输入恶意数据,执行恶意js脚本:

<script scr="js_url"></script>

 

pdf版下载:web应用安全测试之XXS跨站脚本攻击检测.pdf

 

目录
相关文章
|
1月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
60 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
1月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
36 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
18天前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
38 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
3月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
169 31
Selenium IDE:Web自动化测试的得力助手
|
3月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
316 17
Selenium:强大的 Web 自动化测试工具
|
3月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
492 6
Selenium IDE:Web自动化测试的得力助手
|
11天前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
58 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
19天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
322 3

热门文章

最新文章