XSS之xss-labs-level3
文章目录
- 0x01 XSS-Labs
- 0x02 实验工具
- 0x03 实验环境
- 0x04 实验步骤
- 0x05 实验分析
- 0x06 参考链接
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 实验步骤
使用如下payload进行测试,查看参数的回显位置以及是否被转义或过滤。
http://10.10.10.148:8203/level3.php?keyword=<script>alert(/onclink/)</script>
由上述操作可以推断,程序对
h2
标签和name=keyword
的input
标签中参数的尖括号
进行了转义,而未对事件进行过滤,推测可有可能是使用htmlspecialchars()
方法对,构造触发事件就可以正常弹窗,所以此处存在XSS漏洞。构造如下所示的payload进行漏洞测试,结果如下图所示。
http://10.10.10.148:8203/level3.php?keyword='+οnclick='alert(1)
代码审计。程序源码如下所示:
<!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=keyword
的input
标签的value
值。
- 由18行代码可知:GET方法得到的参数经过
所以基于脚本的注入无效,但基于事件的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 参考链接
- 跨站脚本漏洞基础讲解
- 32个触发事件XSS语句的总结
XSS之xss-labs-level3相关推荐
- XSS平台 XSS挑战之旅 解题记录 writeup
XSS平台 XSS挑战之旅 解题记录 writeup level1 level2 level3 level4 level5 level6 level7 level8 level9 level10 le ...
- DVWA通关--存储型XSS(XSS (Stored))
目录 LOW 通关步骤 源码分析 MEDIUM 通关步骤 源码分析 HIGH 通关步骤 源码分析 IMPOSSIBLE 源码分析 存储型XSS也叫持久型XSS,从名字就知道特征是攻击代码会被存储在数据 ...
- 【安全系列之XSS】XSS攻击测试以及防御
跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往 ...
- XSS学习-XSS挑战之旅(二)
前言:之前打XSS平台时,打到了第11关就没有继续了,现在有空了就继续打咯,再增加点关于XSS的知识. 第十一关 这关坑我好长时间,看了好多博客直接给说修改Referer,给截图中都有自带的Refer ...
- 什么是XSS攻击XSS攻击应用场景
XSS攻击 什么是XSS攻击手段 XSS攻击使用Javascript脚本注入进行攻击 例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑客服务器端. < ...
- php csrf攻击 xss区别,XSS与CSRF攻击及防御方法
前言 web安全这词可能对于服务端工程师来说更加"眼熟",部分前端工程师并不是十分了解,今天就来讲讲XSS攻击与CSRF攻击及防御方法 XSS XSS (Cross Site Sc ...
- XSS入门 XSS Challenges靶场搭建/前五关/基础教程
前面写了很多XSS漏洞的利用,这一章开始重点在XSS漏洞的挖掘和如何注入script代码上,和sql注入相类似 目录 一.实验环境--XSS Challenges 二.探测XSS过程 第一关 第二关 ...
- php反射型xss,反射型XSS测试及修复
反射型XSS一般出现的位置,如GET参数中 测试搜索功能 F12查看源码,查找出现1111的位置 第一个位置在title处 尝试闭合掉title标签,然后测试JS代码,成功弹窗 查看源码,XSS执行 ...
- XSS Trap—XSS DNS防护的简单尝试
安全客点评 思路挺新颖的,虽然这种防护有一定的局限性,比如攻击者用IP替代域名就绕过了,但是可以通过文中提及的XSS DNS防护方式了解到企业业务中有哪些WEB服务的XSS点正在被利用,方便排查,而且 ...
- 12. xss bypass xss截屏
layout: post title: 12. xss bypass category: SRC tags: SRC keywords: SRC,XSS 前言 该篇记录为记录实际的src过程第12篇小 ...
最新文章
- Android:JNI 与 NDK到底是什么
- Modbus协议栈应用实例之四:ModbusTCP服务器应用
- [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]
- Android WebView的Js对象注入漏洞解决方案
- 【音乐欣赏】《Sunflower》 - Post Malone / Swae Lee
- 软件无线电(SDR)及高频/高速(RF/Hi-Speed)标准集
- 简支梁挠度计算公式推导_自己整理的简支梁挠度计算公式
- 爬虫爬取千万数据如何快速保存,看这里
- 微信小程序高德地图获取当前定位
- Python基础概要(一天快速入门)
- 重学JavaWeb —— JSP,简单全面一发入魂
- 顶点计划6-4小组调研报告
- 1-XPE体系结构基础
- 分布式BASE理论:数据一致性模型!
- Hadoop Day1
- MATLAB 计算器,函数图形绘制,图片展示 APP Designer 版本
- 转载:深度学习和缠论应用,JQData应用
- 手把手 在windows10下安装配置anaconda
- Maven多模块版本统一管理
- git remote:Support for password authentication was removed on August 13, 2021.personal access token