jjzjj

xss-labs靶场

Breeze blog 2024-03-29 原文

在线XSS-labs靶场:https://xssaq.com/yx/

靶场搭建

靶场是直接使用docker搭建的

docker pull vulfocus/xss-labs

启动靶场

docker run -p 8005:80 vulfocus/xss-labs

浏览器访问IP+8005


windows搭建

使用phpstudy_pro搭建
下载地址:https://github.com/do0dl3/xss-labs

解压文件放入www文件夹下,开启服务

浏览器访问127.0.0.1/xss-labs

level1


仔细观察看到在url栏中传了一个参数,所以在该参数处进行尝试传入其它参数


发现页面有所变化,在 “欢迎用户” 后有一个显示位能对传入的参数进行输出
构造poc

<script>alert('xss')</script>


源码分析
程序将用户以GET方式提交的参数name赋给$str获取name的值,直接返回前端使用,没有对其进行过滤导致恶意代码可以在前端执行

level2

来到第二关有搜索框,直接使用第一关的poc,没有弹窗,代码原样输出

<script>alert("xss")</script>


右键查看源码发现<>都被过转义了


回到页面F12定位到搜索框,发现是<input>标签可以利用
利用:闭合<input>标签


构造poc:

"><script>alert(xss)</script>


源码分析
程序没有对value属性使用htmlspecialchars() 函数进行处理,只对<h2>处进行过滤处理
知识补充

level3


先输入字符串test进行尝试,传入的参数和搜索框的一样

查看源代码和第二关差不多

使用第二关的poc

"><script>alert("xss")</script>

没有弹窗

查看源代码,发现两处<>都被HTML实体化,可以推测这两处都使用了htmlspecialchars()函数
<input>标签无法闭合,可以绕开标签去使用新标签,<input>标签的一些特殊事件来执行js代码
使用单引号闭合属性value,添加事件执行js

poc

'onfocus=javascript:alert('xss') >

onfocusjavascript中在对象获得焦点时发生的事件,最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此点击当前页面的输入框就可以完成弹框了

源代码分析
刚刚的推理正确,这两处都使用了htmlspecialchars()函数

level4


这个和上两关类似,直接丢入poc查看

<script>alert("xss")</script>

查看源代码发现<h2>(标号1)使用了使用了htmlspecialchars()函数处理
标号2处< >被删除

很明显和第三关差不多,使用事件来触发js,唯一不同的是使用双引号闭合
poc

"onfocus=javascript:alert('xss') >

填入poc点击搜索框触发事件

源代码分析
keyword参数的值赋给str变量,然后经过1处理将变量值中包含的<、>符号删除
2处对变量值进行编码处理之后显示在页面之上
最后处将去除特殊符号后的变量值插入到<input>标签的value属性值中

level5

此题和上一关卡变化不大,但不知道服务器端对其是怎么处理的,直接丢入poc查看源代码

<script>alert("xss")</script>

根据上几题第一处很明显使用htmlspecialchars()函数处理过才返回到浏览器显示的
二处可以看到<script>标签被插入了一个_(下划线)符号
可以简单的推测一下服务器在2处使用了正则匹配,匹配到<script>标签插入_符号

<script>标签无法使用,可以使用其他的标签绕过,使用事件进行绕过测试

"onfocus=javascript:alert('xss') >

测试发现没有弹窗,查看源代码onfocus事件也被插入了_(下划线)符号

再次尝试其他的标签:<a>

使用新标签要先闭合<inupt>标签构造poc

"><a href=javascript:alert("xss")>xss</a>

填入poc,点击链接触发弹窗


源代码分析
1标号处GTE入参数给str,分别对on<script>进行了过滤,,过滤之后再见值传给了srt3

有关xss-labs靶场的更多相关文章

  1. ruby-on-rails - 仅在某些页面上使用 rails_xss - 2

    我正在使用rails_xss运行Rails2.3.14插入。我有另一个用于创建管理仪表板View的插件。我的问题是rails_xss正在转义我的仪表板插件生成的所有HTML。有没有一种方法可以将rails_xss配置为不转义匹配example.com/admin或基于目录(app/views/admin)或任何类似的页面结果一样吗? 最佳答案 更新仪表板生成插件以使用raw或html_safe进行内容输出可能会更简单。 关于ruby-on-rails-仅在某些页面上使用rails_xss

  2. ruby-on-rails - 我将 Rails3 与 tinymce 一起使用。如何呈现用户关闭浏览器javascript然后输入xss? - 2

    我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如

  3. ruby-on-rails - 清理 URL 以防止 Rails 中的 XSS - 2

    在Rails应用程序中,用户可以创建事件并发布URL以链接到外部事件站点。如何清理url以防止XSS链接?提前致谢XSS示例,rails的清理方法无法防止@url="javascript:alert('XSS')"">testlink 最佳答案 一旦href已经在标签中,请尝试清理:url="javascript:alert('XSS')"sanitizelink_to('xsslink',url)这给了我:xsslink 关于ruby-on-rails-清理URL以防止Rails中的X

  4. ruby-on-rails - Ruby on Rails 和 XSS 预防 - 2

    RubyonRails中防止XSS的做法有哪些?我在网上发现了许多旧文档,大部分时间都是关于使用h/html_escape帮助程序转义来自用户的任何变量。我从较新的文档中了解到,在2.0及更高版本中有sanitize方法,自动清除假定的输入恶意输入。是否足够,或者您是否正在做更多的事情来保护您的应用程序? 最佳答案 h方法仍然是转义字符串中所有HTML的方法。您应该在输出内容的任何地方使用此方法。这种行为将在Rails3中发生变化。默认情况下所有输出都将被转义,您需要明确指定不对其进行转义。同时,如果您经常忘记使用此h方法,您可能需

  5. upload-labs通关 - 2

    最近,我有个朋友老是反映部署的网站老是被黑客攻击,我看了下就是普通的PHP框架搭建的网站,经过一番排除也清除了木马。为此我专门花1天时间研究一下文件上传漏洞,知己知彼方能百战百胜。这里我选择了一个开源的靶场upload-labs。测试环境部署游览器插件下载地址Cookie-Editor:https://chrome.google.com/webstore/detail/hlkenndednhfkekhgcdicdfddnkalmdmHackBar:https://hackbar.herokuapp.com/使用everything搜索hackbar-panel.js文件的位置,注释或删除以下代

  6. ruby-on-rails - Rails for Zombies Lab 4 > 练习 3 - 2

    我在第三个练习中停留在第四个RailsforZombies实验室。这是我的任务:创建将创建新僵尸的操作,然后重定向到创建的僵尸的显示页面。我有以下参数数组:params={:zombie=>{:name=>"Greg",:graveyard=>"TBA"}}我写了下面的代码作为解决方案:defcreate@zombie=Zombie.create@zombie.name=params[:zombie[:name]]@zombie.graveyard=params[:zombie[:graveyard]]@zombie.saveredirect_to(create_zombie_path

  7. Javascript 清理 : The most safe way to insert possible XSS html string - 2

    目前我正在将此方法与jQuery解决方案结合使用,以从可能的XSS攻击中清除字符串。sanitize:function(str){//returnhtmlentities(str,'ENT_QUOTES');return$('').text(str).html().replace(/"/gi,'"').replace(/'/gi,''');}但我觉得它不够安全。我错过了什么吗?我在这里尝试了phpjs项目中的htmlentities:http://phpjs.org/functions/htmlentities:425/但它有点错误并返回一些额外的特殊符号。也许是旧

  8. java - XSS攻击防范 - 2

    我正在开发一个网络应用程序,用户可以在其中回复博客条目。这是一个安全问题,因为它们可以发送将呈现给其他用户(并由javascript执行)的危险数据。他们无法格式化他们发送的文本。没有“粗体”,没有颜色,什么都没有。只是简单的文字。我想出了这个正则表达式来解决我的问题:[^\\w\\s.?!()]因此,任何不是单词字符(a-Z、A-Z、0-9)、不是空格、“.”、“?”、“!”、“(”或“)”的内容都将被替换为空字符字符串。每个引号都将替换为:“"”。我在前端检查数据,在我的服务器上检查。有人可以绕过这个“解决方案”吗?我想知道StackOverflow是如何做这件事的?这里有

  9. javascript - 什么是基于 DOM 的 XSS? - 2

    基于DOM的XSS文档很少。我已经知道反射XSS和存储XSS是什么了。 最佳答案 这里有很好的资源:DOMBasedXSSTestingforDOM-basedCrosssitescriptingDOMBasedXSS(orasitiscalledinsometexts,“type-0XSS”)isanXSSattackwhereintheattackpayloadisexecutedasaresultofmodifyingtheDOM“environment”inthevictim’sbrowserusedbytheorigina

  10. javascript - 如何在 HTML 下载中避免 XSS? - 2

    我们有一个内部网络应用程序,充当用户可以上传文件的存储库。这些文件可以是任何格式,包括HTML页面。我们已经在IE8中进行了测试,如果您下载一个HTML文件,其中包含一些试图访问您的cookie的脚本,并且在下载后,您选择“打开”选项,该脚本将毫无问题地执行并获取您的cookie信息完全没有。实际上,该脚本可以使用XmlHttpRequest对象调用服务器,并在下载文件的用户的session中执行一些恶意操作。有什么办法可以避免这种情况吗?我们已经测试过,Chrome和Firefox都不会让这种情况发生。如何在任何浏览器(包括IE8)中避免这种行为? 最佳答

随机推荐