XSS、SSRF、CSRF、XXE 漏洞的区别

2023-11-01

XSS(跨站脚本攻击)

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

XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。

XSS换句话说,JavaScript能做到什么效果,XSS的胃里就有多大。这完全不是危言耸听。javascript可以用来获取用户的cookie,弹出窗口,那么存在XSS漏洞的网站,XSS就可以用来盗取用户Cookie,废掉页面,导航到恶意网站!更高端的XSS代码完全可以进行监控你的键盘操作,模仿Windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入Javascript代码!

特征::'">代表插入任意代码 可以加一个弹窗 能弹出来就是 XSS 漏洞。

CSRF(跨站请求伪造)

攻击者会伪造一个请求(这个请求一般是一个链接URL),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。攻击者盗用了你的身份,以你的名义发送恶意请求

CSRF的攻击建立在浏览器与Web服务器的会话之中。欺骗用户访问URL。登录受信任站点A,并在本地生成Cookie。在不登出A的情况下,訪问危急站点B。携带攻击者指令访问信任站点A。XSS 是实现 CSRF 的诸多手段中的一种。

XSS和CSRF的区别

XSS不需要登录,CSRF需要用户登录信息

XSS攻击客户端,CSRF访问服务端

XSS劫持用户信息,CSRF伪造用户身份访问正常网站

SSRF(服务器端请求伪造)

是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人或者跳板

SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。

CSRF和SSRF的区别

CSRF 是跨站请求伪造攻击,由客户端发起

SSRF 是服务器端请求伪造,由服务器发起

重放攻击是将截获的数据包进行重放,达到身份认证等目的。

XEE(XML外部实体注入)

在应用程序解读XML输入时,当允许引入外部实体时,可构造恶意内容,导致读取恶意文件,探测内网端口,攻击内网网站,发起DOS拒绝服务攻击,执行系统命令等。

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

XSS、SSRF、CSRF、XXE 漏洞的各自原理

XSS

 程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害.

CSRF

程序员开发的时候,未对相关页面进行tokenreferer判断,

SSRF

大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限 制。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,文档,等等。

XXE

运 维 人 员 使 用 低 版 本 PHP , libxml 低 于 2.9.1 , 就 会 造 成 程 序 员 或 者 XXE 设 置 了 libxml_disable_encity_loader(FALSE) 这个意思是禁用加载外部实体

XSS、SSRF、CSRF、XXE 漏洞的各自危害

XSS

1) 挂马

2) 钓鱼 钓鱼页面弹出一个弹窗出来 让用户输入账号名和密码,做一个和登录页面一样的

3) 劫持用户 cookie 构造语句里插入木马

4) 有局限性的键盘记录

CSRF

1) 拖库

2) 修改密码

DVWA 打开一个网址ilities/csrf/?password_new=123&password_conf=123&Change= Change) 不关闭此浏览器选项卡的情况下,打开新窗口页面(保持 cookie 可用),就可以完成 密码修改。

3)修改交易等

SSRF

用 http,file,php 协议来进行内网探测,文件读取

1).可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;

2).攻击运行在内网或本地的应用程序(比如溢出);

3).对内网 web 应用进行指纹识别,通过访问默认文件实现;

4).攻击内外网的 web 应用,主要是使用 get 参数就可以实现的攻击(比如 struts2,sqli 等);

5).利用 file 协议读取本地文件等。

XXE

XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安 全 问 题 , 例如敏感文件读取

XSS、SSRF、CSRF、XXE 漏洞的各自存在地方

XSS存在的地方

1)html

2)context(上下文,浏览器响应式拼接好的内容)、

3)URL context(对浏览器来说是页面路径上的参数 对服务端来说是请求时携带的参数 请求头等)

4)spript(代码里的变量数据)

漏洞分类:

1) 反射:(一次性不存储在浏览器里) 放在网站的根目录下,也可以发邮件让别人去触发

2)存储:(永久存储在数据库高危)

3)Dom:(浏览器标签)不与后台服务器产生交互

测试方法:

工具:APPscan、Awvs、 手工:burpsuite,主要考虑哪里有输入、输出在什么地方

(1)在目标站点上找到输入点,比如查询接口,留言板等;

(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;

(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行 js 的条件(构 造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在 XSS 漏洞; 万能构造:'">代表插入任意代码 可以加一个弹窗 能弹出来就是 XSS 漏洞

怎么绕过:

1)前端限制

2)大小写混合

3)编码绕过

4)注释干扰后台

5)alert(弹窗) confirm(确认) prompt(弹出一个让用户在浏览器里面输入东西的框)

Document.location 获取本地的 cookie 信息 

 

防御:

1) 输入过滤(对用户输入的内容进行过滤,比如输入账号密码 没有过滤直接输入个 payload 程序直接 payload 执行)

2) 输出实体编码(账号密码 回车登录 执行的结果)

3) 使用 HTTP only

CSRF存在的地方

1)修改密码地方

2)添加用户的地方

3)数据库备份

4)数据交易、支付

漏洞分类:

1)站内:由于程序员滥用$_REQUEST(请求)类变量造成的(比如:本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了$_REQUEST等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF 攻击创造条件)

2)站外:就是传统意义上的外部提交数据问题(用户在会话状态下点击链接访问站外Web 页面)

测试方法:

Burp 抓包(抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞)

防御:

1)校验 referer 字段

2)添加 token 值

3)白名单过滤

4)验证码登录

SSRF存在的地方

所有调外部资源的参数都有可能存在 ssrf 漏洞

1)分享:通过 URL 地址分享网页内容

2)转码服务

3)在线翻译

4)图片加载与下载:通过 URL 地址加载或下载图片

5)图片、文章收藏功能

6)未公开的 api 实现以及其他调用 URL 的功能

7)从 URL 关键字中寻找 share、wap、url、link、src、source

测试方法:

怎么绕过:

1)改 ip 地址写法

2)转码:8 进制、16 进制、10 进制

防御:

黑名单过滤:

1)过滤 10.0.0.1/8 172.16.0.0/12 192.168.0.0/16

2)过滤 file:///、dict://、gopher://、ftp:// 危险 schema

3)​对返回的内容进行识别最佳方法:

1)使用地址白名单

2)对返回内容进行识别

3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用

CURLOPT_FOLLOWLOCATION;然后通过域名获取目标 ip,并过滤内部 ip;最后识别返回的内容是否与假定内容一致

XXE存在的地方

1)抓包看 accept 头是否接受 xml

2)抓包修改数据类型,把 jison 改成 xml 来传输

测试方法:

1)有回显:(代码)

2)无回显:建立.dtd(代码)  xml 调用(代码)

防御

1)升级 php 版本

2)程序员修改代码

3)过滤关键词(doctype、entity、system、public)

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

XSS、SSRF、CSRF、XXE 漏洞的区别 的相关文章

  • Wymeditor 跨子域。 (跨站点权限问题。)

    我在 sub1 domain com 上有 wymeditor 它是通过 sub2 domains com 上的页面访问的 这行给出了一个错误 var styles this doc styleSheets 0 权限被拒绝http remo
  • 当前端/后端位于两个不同的域时,CSRF 保护如何为我提供比 CORS 控制更高的安全性?

    如果我有 一个域上的 Web 前端 另一个域上的 REST API 通过设置 header 将 REST API 服务器配置为仅允许来自 Web 前端域的跨源请求Access Control Allow Origin到 Web 前端域 除了
  • MVC 2 AntiForgeryToken - 为什么对称加密 + IPrinciple?

    我们最近将解决方案更新为 MVC 2 这更新了AntiForgeryToken作品 不幸的是 这不再适合我们的 AJAX 框架 问题是 MVC 2 现在使用对称加密来编码有关用户的一些属性 包括用户的Name财产 来自IPrincipal
  • 如何设置 AntiForgeryToken cookie 路径

    前者HtmlHelper AntiForgeryToken https msdn microsoft com en us library dd492243 28v vs 118 29 aspx方法允许人们重写string path已弃用 O
  • 将 csrf 令牌存储在元标记中是一个好习惯吗?

    如果我在不使用表单的情况下发出 POST 请求 并且想要防止 CSRF 攻击 我可以做的就是在元标记中设置 csrf token 并在触发请求时将其放回标头 这是一个好的做法吗 通过 header 将令牌放回 例如使用 JQuery aja
  • @csrf_exempt 在 Django 1.4 中停止工作

    我有以下代码 在 Django 1 2 5 中运行良好 from django views decorators csrf import csrf exempt class ApiView object def call self requ
  • 为什么codeigniter2不以更安全的方式存储csrf_hash,例如会话?

    为什么生成的 CSRF 保护令牌没有像建议的那样通过 SESSION 保存和使用here http codeutopia net blog 2008 10 16 how to csrf protect all your forms 目前在C
  • PHP XSS 预防白名单

    我的网站使用所见即所得编辑器 供用户更新帐户 输入评论和发送私人消息 编辑器 CKEditor 非常适合只允许用户输入有效的输入 但我担心通过 TamperData 或其他方式注入 我如何在服务器端控制这个 我需要将特定标签列入白名单 b
  • Magento CSRF 保护

    我正在 Magento 中查看自定义表单 我看到了这些教程 http fastdivision com 2012 03 29 diy magento create ajax login registration forms for your
  • 谁能解释一下这些 XSS 测试字符串吗?

    最近我发现了这个关于 XSS 和 Web 应用程序安全的教程 gt https www owasp org index php XSS Filter Evasion Cheat Sheet XSS Locator https www owa
  • Phonegap 中使用 AJAX 的 CSRF 令牌

    我正在开发一个应用程序Phonegap使用 Django 后端 后端使用csrf 所以我需要我的Phonegap要使用的应用程序csrf所以它可以与Django 我读到你可以使用csrf通过Ajax 但我没能让它工作 您能举个例子告诉我我该
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

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

    我在 javascript 中有一些变量 var something 1 var url CSRF routes Some thing something 我在编译期间收到错误 因为 某物 换句话说 不引用 javascript 变量 编译
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • Django Rest Framework 删除 csrf

    我知道有关于 Django Rest Framework 的答案 但我找不到解决我的问题的方法 我有一个具有身份验证和一些功能的应用程序 我向其中添加了一个新应用程序 它使用 Django Rest Framework 我只想在这个应用程序
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 同一域上的多个 Django 站点 - CSRF 失败

    我有两个应用程序在同一域的不同端口上运行 都使用 csrf 中间件 当我登录其中一个应用程序时POST从另一个提交失败 我推测是因为SESSION COOKIE DOMAIN是一样的 我尝试改变SESSION COOKIE NAME 但是
  • 标准 Html.DisplayTextFor() 没有 HTML 编码吗?

    我们目前正在处理 ASP NET MVC 项目之一的一些 XSS 问题 我发现两个问题 第一个问题与我们的请求验证模式有关 攻击者现在可以利用此安全漏洞在我们的数据库中删除一些不良内容 第二个问题是我们如何显示此内容 我们使用 Html D
  • 正确设置 Laravel 5 CSRF 令牌的标头

    好吧 已经搜索这个问题好几个小时了 只是找不到解决方案的开始 我正在使用 angularJS 前端和 laravel 后端 Restangular 是我的通讯服务 我的 POST 很好 因为我可以在数据中包含 token 并且它会起作用 但
  • 如何正确编码 mailto 链接?

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

随机推荐

  • Linux 系统的运行级别(Run Level)

    Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段 这几个阶段就叫做 Runlevel 同样 当Linux操作系统关闭时也要经历另外几个不同的 Runlevel 下面详细介绍一下 Runlevel 并展示一些小技巧来让Linu
  • 2021最新Java常用开源库总结,思维导图+源代码+笔记+项目

    蚂蚁金服 五面 蚂蚁金服 一面 一面就做了一道算法题 要求两小时内完成 给了长度为N的有重复元素的数组 要求输出第10大的数 典型的TopK问题 快排算法搞定 算法题要注意的是合法性校验 边界条件以及异常的处理 另外 如果要写测试用例 一定
  • 2020-10-24 无内容,请勿点击

    1024
  • idea启动Tomcat报错:Application Server was not connected before run configuration stop..

    使用IDEA开启Tomcat时候报了这么个错 Application Server was not connected before run configuration stop reason Unable to ping server a
  • Java3D的场景图结构

    Java3D的场景图结构 Java3D实际上是Java语言在三维图形领域的扩展 与Java一样 Java3D有纯粹的面向对象结构 Java3D的数据结构采用的是Scene Graphs Structure 场景图 就是一些具有方向性的不对称
  • java设计模式——观察者模式(Observer Pattern)

    概述 观察者模式是使用频率最高的设计模式之一 它用于建立一种对象与对象之间的依赖关系 一个对象发生改变时将自动通知其他对象 其他对象将相应作出反应 在观察者模式中 发生改变的对象称为观察目标 而被通知的对象称为观察者 一个观察目标可以对应多
  • [Linux用户空间编程-3]:Linux定时机制的几种实现方法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123376014 目录 前言 定时器的
  • 服务器查看内存条的参数信息,怎么查看服务器内存参数

    怎么查看服务器内存参数 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开现象 则可能是云服务器的带宽和CPU使用率过高导致 如果您已经通过云监控服务创建过告警任务 当CPU或带宽利用率高时 系统会自动发送告警给您
  • 《Head First HTML5 javascript》第9章 认识对象

    2022 11 21 第9章 认识对象 对象 对象是一个包含相关数据和方法的集合 通常由一些变量和函数组成 我们称之为对象里面的属性和方法 对象是存储在单个分组中的相关功能的集合 在 JavaScript 中 大多数事物都是对象 从作为核心
  • 西米支付:支付宝/微信支付/银联支付通道的接入介绍

    本文以电脑网站支付为例 着重对第三方支付通道的接入进行了分析 包括支付宝支付接入 微信支付接入及银联支付接入 1 支付宝支付接入 支付宝支付能力主要有当面付 刷脸付 App支付 手机网站支付 电脑网站支付和花呗分期等 本文采用电脑网站支付实
  • 手机远程唤醒 android,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan – 全栈笔记...

    一 需求分析 我的电脑一般都是24小时候开机的 方便远程操作 但是这样 一是比较浪费电 二是对电脑硬件也或多或少有些影响 所以就需要远程开机 目前远程开机有很多种方式 1 智能插线板 可以远程控制插板的通电和断电 并在BIOS中设置来电开机
  • No.6 907. 子数组的最小值之和(python)

    给定一个整数数组 arr 找到 min b 的总和 其中 b 的范围为 arr 的每个 连续 子数组 由于答案可能很大 因此 返回答案模 10 9 7 示例 1 输入 arr 3 1 2 4 输出 17 解释 子数组为 3 1 2 4 3
  • B站快捷键-切换上一集,切换下一集

    切换上一集 快捷键 切换下一集 快捷键
  • Linux平台卸载MySQL总结

    如何在Linux下卸载MySQL数据库呢 下面总结 整理了一下Linux平台下卸载MySQL的方法 MySQL的安装主要有三种方式 二进制包安装 Using Generic Binaries RPM包安装 源码安装 对应不同的安装方式 卸载
  • Vue 引入 icon 图标

    安装 npm install vue svg icon save dev 使用 1 阿里巴巴矢量图 选择需要的字体修改参数 选择SVG下载 2 IcoMoon 点击右上角 icoMoon App 点击左上角 Import Icons 选择下
  • 【FICO系列】SAP 创建会计凭证(FB01)的BAPI

    公众号 SAP Technical 本文作者 matinal 原文出处 http www cnblogs com SAPmatinal 原文链接 FICO系列 SAP 创建会计凭证 FB01 的BAPI 前言部分 大家可以关注我的公众号 公
  • TCP+UDP通信实验

    一 实验要求 1 基于服务器的客户端相互直接通信 具体要求包括 2 Server支持多客户访问 3 C与S之间使用TCP连接 4 C与C之间直接通信 不是通过S传递 5 C与C之间直接通信既可以使用TCP 也可以使用UDP 6 可以使用So
  • 放弃手中Docker拥抱下一代容器管理工具Podman

    关注 WeiyiGeek 公众号 将我设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 0x00 基础介绍 前生今世 0x01 安装试用 Ubuntu Podman 命令 容器管理工具 0x02 小试牛刀 1 Podma
  • 进程和线程的深入理解

    进程和线程的深入理解 下面是抽象类比 单CPU 一台单核处理器计算机 一个车间 多CPU 一台多核处理器计算机 一座工厂 进程 一个车间 一个进程 即一个运行的程序 多进程 一座工厂可以同时运行多个车间 CPU和进程 单CPU只能同时运行单
  • XSS、SSRF、CSRF、XXE 漏洞的区别

    XSS 跨站脚本攻击 XSS属于客户端攻击 受害者最终是用户 但特别要注意的是网站管理员也属于用户之一 这就意味着XSS可以进行 服务端 攻击 因为管理员要比普通用户的权限大得多 一般管理员都可以对网站进行文件管理 数据管理等操作 而攻击者