当前位置: 首页 > news >正文

RCE(远程命令执行)漏洞详解

漏洞描述

RCE(remote command/code execute,远程命令执行)漏洞 远程代码执行 (RCE) 攻击是指攻击者可以在一个组织的计算机或网络上运行恶意代码。执行攻击者控制的代码的能力可用于各种目的,包括部署额外的恶意软件或窃取敏感数据。

漏洞原理

远程代码执行攻击通常通过网络应用程序和网络基础结构的漏洞发生。 远程代码执行漏洞是软件中的缺陷,允许攻击者在目标系统上运行恶意代码。RCE 可以利用几种类型的漏洞,包括以下例子:

  • 注入漏洞:注入漏洞 — 如 SQL 注入或命令注入 — 是通过不良的输入消毒来实现的。如果用户提供一个精心设计的恶意输入,则其提供的一些数据将被解释为要运行的命令。这使得攻击者可以强迫有漏洞的系统执行攻击者提供的代码。

  • 不安全的反序列化:序列化通过将数据集打包成单一的由接收方系统解包的位串,简化了数据集的传输。然而,如果序列化数据的结构没有得到很好的定义,攻击者可能可以制定一个解包时会被误解的输入。根据数据的存储和处理方式,这种误读可能会使攻击者能够实现代码执行。

  • 越界写入:缓冲区是一块被分配用来存储数据的固定大小的内存。不安全的数据读取或写入可能允许攻击者将数据放在会被解释为代码或应用程序的重要控制流信息的地方。

  • 文件管理:有些应用程序允许用户向服务器上传文件。这种访问可能允许攻击者上传一个包含恶意代码的文件,并欺骗应用程序执行该代码。

恶意软件是攻击者提供的被设计为在目标系统上执行的代码。RCE 漏洞会允许攻击者以不同方式部署恶意软件。 因此,RCE 漏洞可以用来实现许多与传统恶意软件相同的目标。RCE 可用于在有漏洞的系统上部署恶意软件、进行拒绝服务 (DoS) 攻击,或访问存储在系统中的敏感信息。

漏洞场景

RCE 漏洞可能出现在各种类型的应用程序中,包括 Web 应用程序、网络服务、操作系统等。常见的场景包括使用远程代码执行漏洞的网络攻击、恶意软件的传播、未经授权的访问等

风险等级

RCE 漏洞通常被视为极高风险的漏洞,因为攻击者可以利用它远程执行任意代码,并可能导致目标系统的完全控制。

漏洞危害

RCE 漏洞的危害非常严重,攻击者可以利用它执行恶意代码,包括但不限于窃取敏感信息、篡改数据、拒绝服务等,甚至完全控制受影响系统。 如攻击者可以通过RCE继承web用户的权限,执行php代码,如果web的权限比较高的话,就可以读写目标服务器任意文件的内容,甚至控制整个网站。

php中与代码执行漏洞相关的危险函数:

   eval()   将字符串当作php代码执行assert()   将字符串当作php代码执行preg_replace()   将字符串正则匹配后替换call_user_func()   回调函数array_map()    回调函数

漏洞验证

验证 RCE 漏洞通常涉及尝试向目标系统发送包含恶意代码的请求,并观察是否成功执行了该代码

漏洞利用

RCE 漏洞可以用于通过以下方式进一步进行普通攻击:

  • 远程访问:攻击者经常利用 RCE 漏洞在企业网络上获得一个最初的立足点,然后再扩展。例如,一个 RCE 漏洞可以让攻击者窃取登录凭证,从而允许他们通过 VPN 进行网络访问。

  • 恶意软件部署:虽然 RCE 漏洞运行代码执行,但这种代码的范围可能是有限的。为了避开这一限制,攻击者可能利用 RCE 下载并执行其他更具破坏性的恶意软件。例如,RCE 可以用来在一个有漏洞的系统上下载和执行勒索软件。

  • 数据盗窃:RCE 漏洞可能允许攻击者在有漏洞的应用程序中运行命令。这使攻击者能够访问文件系统、数据库和存储的其他敏感的公司和客户数据。

  • 数据破坏:RCE 漏洞可能允许攻击者在数据库中运行 DROP 命令,或在系统终端中执行代码。这种访问提供了与合法用户相同的删除文件的能力

  • DoS 攻击:越界写入漏洞允许攻击者覆盖关键代码,使应用程序崩溃。其他 RCE 漏洞可能允许终止进程或删除重要数据。

漏洞防御

防御 RCE 漏洞的方法包括:

  • 输入验证和过滤

  • 沙箱环境隔离

  • 最小权限原则

  • 及时更新和漏洞修复

  • 安全编码实践

远程代码执行攻击是因为企业网络应用程序中有漏洞。公司可以通过以下方法来减少发生 RCE 攻击的几率:

  • 漏洞扫描:静态代码分析(以识别众所周知的漏洞模式)和动态分析(如模糊分析)的结合,可以帮助开发人员在 RCE 漏洞被利用之前识别和纠正这些漏洞。

  • 更新和打补丁:可能在一个应用程序或其依赖的第三方库中发现 RCE 漏洞。及时应用更新和补丁可以缩短有漏洞的代码被利用的窗口时间。

  • 输入验证:多数 RCE 漏洞涉及不良的输入验证,即应用程序对用户提供的数据做出假设。强有力的输入验证可以消除大多数 RCE 漏洞的威胁。

  • 网络监控:尝试性的 RCE 攻击可以被网络应用程序和 API 保护 (WAAP) 解决方案检测并阻止。在网络应用程序前部署网络安全解决方案可以减少未修补漏洞的潜在风险。

典型案例

典型的 RCE 漏洞案例包括:

Apache Struts2 远程执行代码漏洞(CVE-2017-5638)

于2017年3月被公开披露。该漏洞允许攻击者通过构造恶意的 HTTP 请求,利用 Struts2 框架对表达式语言(OGNL,Object-Graph Navigation Language)的解析不当,远程执行任意代码

EternalBlue SMB 漏洞(CVE-2017-0144)

于2017年3月由美国国家安全局(NSA)的 Equation Group 组织被泄露。该漏洞存在于 Windows 的 Server Message Block (SMB)协议的实现中,攻击者可以利用该漏洞在网络上远程执行任意代码 EternalBlue 漏洞曾被广泛利用于大规模网络攻击,最著名的案例包括 WannaCry 勒索软件攻击和 NotPetya 攻击。这两次攻击导致了全球范围内数百万台计算机被感染,造成了巨大的经济损失和社会影响。

Heartbleed 漏洞(CVE-2014-0160)

于2014年4月被公开披露。这个漏洞的存在使得攻击者可以利用 OpenSSL 实现的 TLS/SSL 协议中的心跳扩展(heartbeat extension)功能,从服务器内存中读取敏感信息,包括私钥、会话密钥和其他用户数据. 漏洞的原理是由于 OpenSSL 实现的心跳扩展功能中存在缓冲区溢出漏洞,攻击者可以发送恶意的心跳请求(heartbeat request),并在请求中伪造心跳数据的长度字段,导致服务器未经授权地泄露内存中的敏感信息 Heartbleed 漏洞的影响非常广泛,因为 OpenSSL 是用于加密互联网通信的一种广泛使用的开源加密库。受影响的系统包括 Web 服务器(如 Apache 和 Nginx)、电子邮件服务器、虚拟私有网络(VPN)设备等。此外,许多大型互联网服务提供商和网站也受到了这个漏洞的影响

Drupal 远程执行代码漏洞(CVE-2018-7600)

Drupal 远程执行代码漏洞(CVE-2018-7600)是 Drupal 内核中的一个严重漏洞,于2018年3月被公开披露。该漏洞影响了 Drupal 7.x 和 8.x 版本,允许未经身份验证的攻击者利用漏洞在受影响的 Drupal 网站上执行任意代码,并获取网站管理员权限。

Shellshock 漏洞(CVE-2014-6271、CVE-2014-7169)

于2014年9月被公开披露。该漏洞允许攻击者利用特定的环境变量注入方式,远程执行任意代码,从而获取系统的完全控制。 Shellshock 漏洞的原理是由于 Bash shell 在解析环境变量时存在缓冲区溢出漏洞,攻击者可以利用恶意构造的环境变量,在受影响的系统上执行任意代码。具体来说,攻击者可以通过在环境变量中注入恶意的 shell 命令,并通过传递这些变量给 Bash shell 的方式触发漏洞。 由于 Bash 是许多 Unix 和 Linux 系统的默认 shell,因此 Shellshock 漏洞影响了大量的服务器、工作站和网络设备。

Joomla 远程执行代码漏洞(CVE-2015-8562)

于2015年12月被公开披露。该漏洞影响了 Joomla 1.5.x、2.x 和 3.x 版本,允许未经授权的攻击者利用漏洞在受影响的 Joomla 网站上执行任意代码,并获取网站管理员权限。 由于 Joomla 是一个广泛使用的内容管理系统(CMS),受影响的 Joomla 网站数量庞大

WordPress 远程执行代码漏洞(CVE-2019-8942)

于2019年2月被公开披露。该漏洞影响了 WordPress 4.9.9 版本及之前的所有版本,允许未经授权的攻击者利用漏洞在受影响的 WordPress 网站上执行任意代码,并获取网站管理员权限 于2019年2月被公开披露。该漏洞影响了 WordPress 4.9.9 版本及之前的所有版本,允许未经授权的攻击者利用漏洞在受影响的 WordPress 网站上执行任意代码,并获取网站管理员权限

PHPMailer 远程执行代码漏洞(CVE-2016-10033)

于2016年12月被公开披露。PHPMailer 是一个常用的 PHP 库,用于发送电子邮件,受影响的版本包括 PHPMailer 5.2.18 之前的版本。 受影响的 PHPMailer 版本中的漏洞是由于对邮件地址和主题字段的不充分验证,导致了代码注入漏洞的存在。攻击者可以利用此漏洞在邮件发送过程中执行任意 PHP 代码

相关文章:

RCE(远程命令执行)漏洞详解

漏洞描述 RCE(remote command/code execute,远程命令执行)漏洞 远程代码执行 (RCE) 攻击是指攻击者可以在一个组织的计算机或网络上运行恶意代码。执行攻击者控制的代码的能力可用于各种目的,包括部署额外的恶意软件或窃取敏感数据。 漏洞原理 远程代…...

K8S - Deployment 的版本回滚

当前状态 先看deployment rootk8s-master:~# kubectl get deploy -o wide --show-labels NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES …...

53 v-bind 和 v-model 的实现和区别

前言 这个主要的来源是 偶尔的情况下 出现的问题 就比如是 el-select 中选择组件之后, 视图不回显, 然后 model 不更新等等 这个 其实就是 vue 中 视图 -> 模型 的数据同步, 我们通常意义上的处理一般是通过 模型 -> 数据 的数据同步, 比如 我们代码里面更新了 model.…...

VMware-16.0配置虚拟机网络模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为什么要配置网络?二、配置步骤1.检查VMware服务2.进入配置页面3.添加网络模式1.Bridge2.NAT3.Host-only 4.DHCP租约5.静态IP 三、使用总结 前言…...

element-ui badge 组件源码分享

今日简单分享 badge 组件的源码实现,主要从以下两个方面: 1、badge 组件页面结构 2、badge 组件属性 一、badge 组件页面结构 二、badge 组件属性 补充几个标签的用途: sub:下标、sup:上标、var 变量 代码如下&am…...

MySQL中日期有关函数

本次记录了获取日期时间的多种方式,还有日期和字符串之间的转换,以及加减日期的操作。 获取时间 # 1.获取当前时间(年月日时分秒格式) select now();# 2.获取当前时间(年月日格式) select curdate();# 3.获取当前时间(时分秒格式) select curtime();# 4.…...

jdbc工具类

jdbc 工具类,具体见下面代码,直接可以用。 /*** version 1.0* descpription: jdbc工具类* date 2024/4/6*/ public class JDBCUtils {private static final String URL "jdbc:mysql://127.0.0.1:3306/mybatis";private static final String …...

Svelte Web 框架介绍

Svelte 是一个用于构建网络应用程序的现代框架,它与其他用户界面框架(如React和Vue)有着本质的不同。Svelte 的核心理念是在构建应用程序时,将大部分工作转移到编译步骤中,而不是在用户的浏览器中运行时处理。这种方法…...

IP地址获取不到的原因是什么?

在数字化时代的今天,互联网已成为我们日常生活和工作中不可或缺的一部分。而IP地址,作为互联网通信的基础,其重要性不言而喻。然而,有时我们可能会遇到IP地址获取不到的问题,这会给我们的网络使用带来诸多不便。那么&a…...

Android APP加固利器:深入了解混淆算法与混淆配置

Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解&#xff…...

蓝桥杯真题Day47 倒计时6天:6道真题+回溯递归问题

[蓝桥杯 2019 省 A] 糖果 题目描述 糖果店的老板一共有M种口味的糖果出售。为了方便描述,我们将M 种口味编号 1∼ M。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是K 颗一包整包出售。 幸好糖果包装上注明了其中 K 颗糖果的口味…...

通过UDP实现参数配置

来讲讲UDP的一种常见应用 我们知道UDP是一种无连接的网络传输协议,在发送数据时指定目标IP及端口就可以将数据发送出去,因此特别适合用作网络设备发现。 我们可以自定义一个通信端口,假设为55555。我们再制定一个协议用于查询目标设备&#x…...

解析Apache Kafka:在大数据体系中的基本概念和核心组件

关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章:深度剖析:计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章&a…...

独角数卡对接码支付收款教程

1、到码支付后台找到支付配置。2、将上面的复制依次填入,具体看下图,随后点立即添加 商户ID商户PID 商户KEY异步不能为空 商户密钥商户密钥...

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…...

LabVIEW太赫兹波扫描成像系统

LabVIEW太赫兹波扫描成像系统 随着科技的不断发展,太赫兹波成像技术因其非电离性、高穿透性和高分辨率等特点,在生物医学、材料质量无损检测以及公共安全等领域得到了广泛的应用。然而,在实际操作中,封闭性较高的信号采集软件限制…...

什么是stable diffusion?

🌟 Stable Diffusion:一种深度学习文本到图像生成模型 🌟 Stable Diffusion是2022年发布的深度学习文本到图像生成模型,主要用于根据文本的描述产生详细图像。它还可以应用于其他任务,如内补绘制、外补绘制&#xff0…...

KeyguardClockSwitch的父类

KeyguardClockSwitch 定义在KeyguardStatusView中, mClockView findViewById(R.id.keyguard_clock_container);KeyguardClockSwitch的父类为: Class Name: LinearLayout Class Name: KeyguardStatusView Class Name: NotificationPanelView Class Name: Notificat…...

Gradle系列(二):Groovy基础

Gradle系列(二):Groovy基础 本篇文章继续讲下Groovy一些基础的语法。 1:Map map与List的用法很像,只不过值是一个K:V的键值对。 下面是是Groovy中Map的定义: task testMap { def map [‘width’:1280,‘height’:1960] prin…...

PW1503限流芯片:可达3A限流,保障USB电源管理安全高效

在电源管理领域,开关的性能直接关系到设备的稳定性和安全性。今天,我们将详细解析一款备受关注的超低RDS(ON)开关——PW1503。它不仅具有可编程的电流限制功能,还集成了多项保护机制,为各类电子设备提供了高…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...