首页 > 其他分享 >web渗透测试(7):跨站点脚本(XSS)

web渗透测试(7):跨站点脚本(XSS)

时间:2023-07-31 16:23:58浏览次数:39  
标签:web 负载 浏览器 XSS 站点 编码 页面 有效载荷

跨站点脚本源于信息发送给应用程序用户时缺乏编码。这可以用来注入任意的HTML和JavaScript; 结果是该有效载荷在合法用户的网络浏览器中运行。与其他攻击相反,XSS漏洞针对应用程序的用户,而不是直接针对服务器。

 

一些漏洞利用的例子包括:

  • 注入假登录表单;
  • 检索合法用户的Cookie;
  • 注入浏览器的漏洞;
  • 让用户在Web应用程序中执行任意操作;
  • ...

 

在本节中,我们将只关注跨站脚本的检测。您将不得不等待关于此主题的全面练习,以获取有关如何利用这些漏洞的更多详细信息。

 

XSS漏洞最简单也是最常见的证据就是弹出一个警告框。这个有效载荷有很多优点:

  • 它表明可以触发JavaScript;
  • 这很简单;
  • 它是无害的。

 

要触发弹出窗口,您只需使用以下有效负载:alert(‘hello’)。

 

如果你在注入HTML代码,你需要告诉浏览器这是JavaScript代码。你可以使用<script>标签来做到这一点:

<script>alert('hello');</script>

 

在测试XSS时,需要记住两件重要的事情:

  1. 您从服务器获得的响应可能不是唯一的信息将被回显的地方。如果您注入了有效负载内容并且您在页面A中正确编码了它,这并不意味着此信息将在页面B中正确编码。
  2. 如果您发现编码存在问题,但无法运行您的XSS有效负载,则其他人可能能够运行。报告编码问题总是很重要的,即使某些保护措施阻止了您执行您的有效负载。安全是一个不断发展的领域,每周都会发布新的技巧。即使您现在不能利用XSS漏洞,您或其他人也许可以在稍后获得另一个有效负载。

 

XSS有三种类型:

  1. 反映:有效载荷直接回应。
  2. 存储:有效负载可以直接在响应中回显,但更重要的是,当您返回此页面或其他页面时,会在响应中回显。有效载荷存储在应用程序的后端。
  3. 基于DOM的:有效载荷不在页面中回显。它在浏览器呈现页面时动态执行。

 

在测试XSS时,您需要阅读发回的HTML页面的来源,您不能只是等待弹出警报框。检查哪些字符被编码,哪些字符不被编码。从这个角度来看,你可能会发现一个有效载荷。

 

一些浏览器提供了针对XSS的内置保护。这种保护可以由服务器启用或禁用(它在ISO中已被禁用)。如果您发现您的有效载荷直接在页面中回显,但没有警报框弹出,可能是因为这种保护。您也可以通过告诉浏览器将其禁用来禁用此保护。例如,在Chrome中,可以通过使用该选项运行Chrome来完成此操作--disable-xss-auditor。

 

Example 1

第一个易受攻击的例子就是让你开始了解当你找到XSS时发生的事情。使用基本的有效载荷,你应该能够得到一个警告框。

 文件代码:

<?php require_once '../header.php'; ?>
<html>
Hello 
<?php 
    echo $_GET["name"];
?>

<?php require_once '../footer.php'; ?>

 

一旦你发送你的有效载荷,你应该得到像这样的东西:

 

 

确保您检查HTML页面的源代码,以确定您作为请求的一部分发送的信息在没有任何HTML编码的情况下回显。

 

Example 2

<?php require_once '../header.php'; ?>
<html>
Hello 
<?php 
    echo $_GET["name"];
?>

<?php require_once '../footer.php'; ?>

 

在第二个例子中,涉及一些过滤。Web开发人员添加了一些正则表达式,以防止简单的XSS有效负载工作。

 

如果你玩,你可以看到<script>和</script>被过滤。绕过这些类型的过滤器的最基本的方法之一是大  胆测试:如果你尝试<sCript>,</sCRIpt,例如,你应该能够得到警报框。

 

Example 3

您向开发人员通知了您的绕开方法。他添加了更多过滤功能,现在似乎可以防止您之前的有效负载。然而,他在他的代码中犯了一个可怕的错误(前面的代码也出现了这个错误)......

 

如果你继续玩耍,你会意识到如果你使用Pentest<script>erLab有效载荷,则显示为:PentesterLab。

 

 

标签:web,负载,浏览器,XSS,站点,编码,页面,有效载荷
From: https://www.cnblogs.com/shanhubei/p/17593731.html

相关文章

  • webpack项目本地dev环境正常,部署至微信字体或图片报cors
    由于webpack设置了高于xxx大小的文件不打包,又与小程序平台的域名不一致导致的问题。修改limit,将其调大,以base64方式直接嵌在页面中(字体文件也适用)......
  • CTFer成长记录——CTF之Web专题·攻防世界—unseping
    一、题目链接  https://adworld.xctf.org.cn/challenges/list二、解法步骤  本题主要是代码审计和反序列化;代码审计:首先我们需要知道整个题的基本执行顺序:post传参——>base64编码——>反序列化——>调用__wakeup()魔术方法——>执行waf()方法过滤——>调用析构方法()。......
  • IDEA,Pycharm,Goland,Webstorm 最新发布2023.2版本,亲测好用!
    期待已久的IntelliJIDEA2023.2终于正式发布了,同时发布的还有Pycharm,Goland,Webstorm等。具体的改变相信大家已经提前有所了解的了,我迫不及待的就下载体验了下,UI变好看了,使用起来感觉更流畅,好用推荐!IDEA2023.2最新版激活成功如下GoLand2023.2最新版激活成功如下......
  • 手把手教你在云环境炼丹(部署Stable Diffusion WebUI)
    前几天写了一篇《手把手教你在本机安装StableDiffusion秋叶整合包》的文章,有些同学反映对硬件的要求太高,显卡太TM贵了。今天我再分享一个云服务器炼丹的方法,方便大家快速入门上手,这个云服务不需要特殊网络设置,能连接公网网盘,随开随用,有3090显卡,也有4090显卡,不过我经常使用的是A5......
  • 测站点、后视点
    测站点是指在测量工作中,用于放置测量仪器、观测目标或进行测量的地点。测站点通常具有固定的位置和已知的坐标,可以作为测量的参考点。后视点是指在测量工作中,测量仪器放置在某个测站点上进行观测后,所看到的前一个测站点的位置。后视点通常用于记录前一个测站点的坐标,以便后续的......
  • 【Web开发指南】如何用MyEclipse进行JavaScript开发?
    由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性,进行JavaScript编码不再是一项繁琐的任务。MyEclipsev2023.1.1离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论JavaScript项目在MyEclipse 2021及以后的版本中,大多数JavaScript支持都是开箱即用......
  • websocket应用的是哪个协议
    WebSocket应用的是WebSocket协议。WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许在客户端和服务器之间建立持久性的连接,并支持双向实时数据传输。相比传统的HTTP请求-响应模式,WebSocket具有更低的延迟和更高的性能,适用于实时性要求较高的应用场景,如在线聊天、实时游戏......
  • 001 新建Net Web API工程
    1、新建工程打开VS2022,点击新建项目,弹出创建新项目对话框,然后在项目模板处,选择C#、所有平台以及WebAPI,如下图所示。选择了下面的唯一模板,点击下一步,设置项目的名称、保存路径等。如下图所示。             点击下一步,可使用默认的配置,如下图所示。......
  • web APIs获取dom元素
    1.获取页面中的标签最常用的两种方式 document.querySelectorAll和document.querySelector 2他们两个区别是什么document.querySelectorAll可以选择多个元素,得到伪数组,要遍历才能得到每一个元素document.querySelector只能得到一个元素,可以直接操作注意:它们里面的小括......
  • CTFer成长记录——CTF之Web专题·19强网杯—随便注
    一、题目链接https://buuoj.cn/challenges#[%E5%BC%BA%E7%BD%91%E6%9D%AF%202019]%E9%9A%8F%E4%BE%BF%E6%B3%A8二、解法步骤  本题考察的是堆叠注入:堆叠注入原理就是通过结束符同时执行多条sql语句;例如php中的mysqli_multi_query函数。与之相对应的mysqli_query()只能执行一......