【web安全】XSS篇

2024-09-03 09:12
文章标签 安全 web xss

本文主要是介绍【web安全】XSS篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●)
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

【web安全】XSS篇

  • 简介
    • 原理
    • 危害
  • 分类
    • 反射性XSS
    • 存储型XSS
    • DOM XSS(特殊的反射XSS)
  • 测试
    • 工具
    • 手工
  • 防护
  • 绕过
    • 前端限制绕过
    • 大小写绕过
    • 双写绕过
    • 编码
    • 注释干扰后台绕过
    • 标签语法替换
    • 提交方式更改
    • 垃圾数据溢出
    • 结合其他漏洞绕过
    • HTTPonly绕过
    • 针对HTML实体化绕过
    • 上传非图片导致的XSS


简介

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

XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言。

原理

可控变量在输入和输出的过程中没有受到充分的过滤,导致参数在输出过程中被浏览器当做代码解析执行

危害

  1. 劫持用户cookie

    伪造身份登陆

  2. 框架钓鱼

    伪造钓鱼页面

  3. 挂马

  4. 键盘记录

  5. 权限维持


分类

反射性XSS

传参不被存储在数据库中,服务端只是简单的把用户输入的数据反射给浏览器,是一次性。

存储型XSS

传参被存在在数据库里面,可以重复使用。

XSS弹cookie(前提:浏览器中存储cookie)

DOM XSS(特殊的反射XSS)

不与后台服务器产生数据交互,通过前端的dom节点形成
允许开发者以编程方式访问和修改文档的内容和结构。

DOM节点:

  1. 元素节点:代表HTML或XML文档中的标签(如<div><p>)。
  2. 文本节点:包含元素或属性中的文本。
  3. 属性节点:包含元素的属性(例如‘class=“example”`)。

测试

工具

  1. APPscan、AWVA、Burpsuite

  2. 半自动化工具

    Burpsuite、firefox(hackbar)、XSSER XSSF

手工

最重要的是考虑那里有输入,输入的数据在什么地方输出


防护

  1. 输入的参数进行过滤,对输入进行html实体编码

    htmlspecialchars()函数

    • &——>&amp
    • <——>&lt
    • >——>&gt
    • ""——>&quot
    • '' ——>#039
  2. waf防护

  3. HTTP only设置

    HTTP Only 是一种安全设置,用于保护网站的cookie免受客户端脚本(例如JavaScript)的访问。这是通过在HTTP响应中设置一个特定的cookie属性来实现的。
    具体来说,当一个cookie被标记为"HTTP Only"时,它只能通过HTTP请求进行访问,而不能被客户端脚本访问。这个设置有助于防止跨站脚本攻击(XSS)窃取cookie中的敏感信息。


绕过

前端限制绕过

大小写绕过

通过大小来绕过一些对字符的匹配

<sCRipt>alert('xss')</sCrIPt>

双写绕过

通过嵌套字符在对方检测到非法字符并替换为空的时候剩下的的字符又可以组成一个非法字符绕过检测继续执行语句

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

编码

通过将注入语句进行编码来绕过检测

<img src=xonerror="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#121;&#97;&#110;&#103;&#115;&#104;&#117;&#97;&#110;&#103;&#39;&#41;"/>

注释干扰后台绕过

攻击者利用注释来隐藏或干扰恶意脚本的执行。

<sc<!--test-->ript>alert('xss')</scr<!--tshauie-->ipt>

标签语法替换

提交方式更改

垃圾数据溢出

结合其他漏洞绕过

HTTPonly绕过

浏览器未保存帐号密码:需要xss产生登录地
址,利用表单劫持
浏览器保存帐号密码:浏览器读取帐号密码

针对HTML实体化绕过

上传非图片导致的XSS

挖SRC会遇到很多文件上传,例如:头像、客服、认证。可以通过修改文件后缀,文件内容来尝试写入存储XXS。如果是对文件内容做检测,可以在此网站查询后,自行构造需要的文件头,从而绕过检测,上传任意文件。

https://en.wikipedia.org/wiki/List_of_file_sign
atures#文件头对照表

这篇关于【web安全】XSS篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132601

相关文章

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加