命令执行漏洞 Command Execute

命令执行漏洞(Command Injection)是一种安全漏洞,指的是攻击者能够在应用程序的命令行中注入并执行恶意命令。简单来说,就是攻击者可以利用这个漏洞让程序执行自己指定的命令,而不是程序原本应该执行的命令。

举个例子:假设有个网站可以让用户输入一个文件名,然后程序根据这个文件名去执行操作(比如显示文件内容)。如果这个程序没有对用户输入进行足够的检查,攻击者可能会输入类似“; rm -rf /”这样的内容,导致程序不仅执行正常的命令,还执行了恶意命令(比如删除文件)。

原理

命令执行代码示例:

<?php system($_GET['cmd']); ?>
<?php @eval($_GET['cmd']); ?>

命令执行(Command Execute)漏洞即攻击者通过执行系统命令或恶意代码命令,以此实现非法操作,比如获取敏感信息、拿到系统权限等。

  • 命令执行漏洞分为系统命令执行(又称 OS 命令注入)和代码命令执行(命令注入),区别在于前者直接执行系统级命令,后者需调用恶意代码命令。我们经常听到的 “RCE”远程代码执行,就是属于代码命令执行漏洞。
  • 命令执行漏洞形成原因,本质是在系统服务器或应用程序端,没有对用户输入进行安全检测过滤,导致恶意代码被执行。
  • 命令执行漏洞通常发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等,比如Apache Struts2、Thinkphp等。

系统命令执行 常见管道符

&:后台执行命令(nohup) 示例:command &

&&:前一条命令执行成功,才执行后面一条命令 示例:command1 && command2

|:上一条命令输出作为下一条命令的输入参数 示例:command1 | command2

||:上一条命令执行失败后才执行下一条命令 示例:command1 || command2

;:多个命令顺序执行(不管前面的命令是否成功) 示例:command1; command2; command3

\n或0x0a:换行符

通过以上管道符可以拼接一些非法操作,达到系统命令执行的目的

代码命令执行 常见执行函数

PHP:system()、shell_exec()、exec()、passthru()、popen()、proc_open()、pcntl_exec(),dl()
Python:eval()、os.system()、os.Popen()、subprocess.Popen()、subprocess.call(xx,
shell=True)、commands.getstatus/output()
Java:存在Runtime类,在该类中提供了exec方法用以在单独的进程中执行特定的字符串命令
其他:ImageMagick组件、bash漏洞、struts2系列、thinkphp命令执行等拼客科技版权所有拼客

危害

  • 执行恶意代码
  • 获取系统敏感信息
  • 获取系统管理权限

防御方案

  • 不使用命令执行函数
  • 如果使用命令执行函数,则强制执行输入验证
  • 输入的命令进制使用占位符,而不要直接拼接变量
  • 在disable_functions中禁用
  • escapeshellcmd函数(程序参数)escapeshellarg函数(程序参数的值)进行参数过滤
  • 使用safe_mode_exec_dir指定可执行文件的路径

绕过手段

  • 逻辑运算符绕过
  • 在 win 下执行 bat 时可以使用 %1a 绕过过滤
  • 如果是 php 环境可以使用 %0a、%0d ,分别表示换行符\n和回车符\r
  • 引号绕过c"“at /etc/passwd、c”“at /etc/pas”“swd、c”"at /etc/pas’'swd
  • 反斜杠绕过 c\at /etc/pas\swd
  • 通配符绕过 /b??/??t /???/p??s??
  • 使用数字地址绕过 ip 限制
  • IFS绕过空格(注意切换成bash)
  • 编码绕过 echo "Y2F0IC9ldGMvcGFzc3dk="|base64 -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/973725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring BOOT 启动参数

Spring BOOT 启动参数 在Java Web的开发完成后&#xff0c;以前我们都会打包成war文件&#xff0c;然后放大web容器&#xff0c;比如tomcat、jetty这样的容器。现在基于SpringBoot开发的项目&#xff0c;我们直接打包成jar文件&#xff0c;基于内嵌的tomcat来实现一样的效果。…

探索无网用Deepseek+qwen来助力Solidworks二次开发

在本教程中&#xff0c;我们将详细介绍如何在本地环境中使用 DeepSeek 和 Qwen 模型&#xff0c;结合 AnythingLLM&#xff0c;构建一个用于 SolidWorks 二次开发的私有化智能知识库。 目录 前言 环境准备 2.1 安装 Ollama 2.2 安装 Docker Desktop DeepSeek 本地部署 3.1…

在nodejs中使用ElasticSearch(一)安装,使用

使用docker安装ElasticSearch和Kibana 1&#xff09;创建相应的data文件夹和子文件夹用来持久化ElasticSearch和kibana数据 2&#xff09;提前创建好elasticsearch配置文件 data/elasticsearch/config/elasticsearch.yml文件 # Elasticsearch Configuration # # NOTE: Elas…

Jenkins整合Jmeter实现接口自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、安装jmeter 下载&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 这里我用了一台Windows安装jmeter用来写接口测试的脚本&#xff0c;启动前修改j…

宇树科技13家核心零部件供应商梳理!

2025年2月6日&#xff0c;摩根士丹利&#xff08;Morgan Stanley&#xff09;发布最新人形机器人研报&#xff1a;Humanoid 100: Mapping the Humanoid Robot Value Chain&#xff08;人形机器人100&#xff1a;全球人形机器人产业链梳理&#xff09;。 Humanoid 100清单清单中…

PostgreSQL 与 MySQL 有哪些区别

PostgreSQL 和 MySQL 是两种流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们在功能、性能、扩展性和适用场景等方面存在显著差异。 以下是 PostgreSQL 和 MySQL 的主要区别&#xff1a; 1. 架构与设计理念 PostgreSQL&#xff1a; 强调标准兼…

springboot整合 xxl-job

文章目录 一、xxl-job是什么二、使用步骤 1. 下载并运行管理端代码2. 访问管理页面&#xff0c;确认是否启动成功3. 配置执行器【在自己的springboot项目中配置】4. 在页面上创建执行器和任务&#xff0c;与项目中绑定 总结参考 一、xxl-job是什么 XXL-JOB 是一个分布式任务调…

conda、anaconda、pip、pytorch、tensorflow有什么区别?

先画一张图&#xff0c;可以大致看出它们的区别和关联&#xff1a; pytorch、tensorflow都是Python的第三方库&#xff0c;相当于封装的代码工具集库&#xff0c;通过import导入使用。这两个都是深度学习框架&#xff0c;用来搭建AI模型什么的&#xff0c;使用范围非常之广&…

java后端开发day18--学生管理系统

&#xff08;以下内容全部来自上述课程&#xff09; 1.业务分析并搭建主菜单 1.需求 采取控制台的方式去书写学生管理系统 2.分析 1.初始菜单 2.学生类 属性&#xff1a;id&#xff0c;姓名&#xff0c;年龄&#xff0c;家庭住址 3.添加功能 键盘录入每一个学生信息并添…

【设计模式精讲】结构型模式之代理模式(静态代理、JDK动态代理、cglib动态代理)

文章目录 第五章 结构型模式5.1 代理模式5.1.1 代理模式介绍5.1.2 代理模式原理5.1.3 静态代理实现5.1.4 JDK动态代理5.1.4.1 JDK动态代理实现5.1.4.2 类是如何动态生成的5.1.4.3 代理类的调用过程 5.1.5 cglib动态代理5.1.5.1 cglib动态代理实现5.1.5.2 cglib代理流程 5.1.6 代…

业务流程中的流程管理

流程管理是业务流程管理中至关重要的一环。它专注于规划、组织、指导、控制和优化组织内的各项业务流程&#xff0c;以提高效率、降低成本、提升质量和增强客户满意度。简单来说&#xff0c;流程管理就是管理你的业务是如何完成工作的。 下面将从几个方面详细讲解业务流程中的…

2025年股指期货和股指期权合约交割的通知!

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 2025年股指期货和股指期权合约交割的通知&#xff01; 根据中国金融期货交易所规则及相关规定&#xff0c;以下股指期货和股指期权合约于指定日期进行交割&#xff0c;现将各合…

播放器系列1——总概述

播放器核心架构 模块解释 文件读取 读取视频文件、读取网络文件、读取音频文件&#xff0c;大概分为这三种&#xff0c;目前代码中仅实现了读取视频文件播放&#xff0c;也就是当没有video数据的时候播放器不可使用。 解复用 容器指的是多媒体文件中的封装格式&#xff0c;…

MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用

目录 1 大白话说一下文章内容2 作者的电脑配置3 DeepSeek的本地部署3.1 Ollamal的下载和安装3.2 选择合适的deepseek模型3.3 安转deepseek 4 DifyDeepSeek构建Al应用4.1 Dify的安装4.1.1 前置条件4.1.2 拉取代码4.1.3 启动Dify 4.2 Dify控制页面4.3 使用Dify实现个“文章标题生…

神经网络八股(三)

1.什么是梯度消失和梯度爆炸 梯度消失是指梯度在反向传播的过程中逐渐变小&#xff0c;最终趋近于零&#xff0c;这会导致靠前层的神经网络层权重参数更新缓慢&#xff0c;甚至不更新&#xff0c;学习不到有用的特征。 梯度爆炸是指梯度在方向传播过程中逐渐变大&#xff0c;…

第3章 3.3日志 .NET Core日志 NLog使用教程

3.3.1 .NET Core日志基本使用 书中介绍了把日志输出到控制台的使用方式&#xff1a; 安装 Microsoft.Extensions.Logging 和 Microsoft.Extensions.Logging.Console 日志记录代码&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.…

Springboot的jak安装与配置教程

目录 Windows系统 macOS系统 Linux系统 Windows系统 下载JDK&#xff1a; 访问Oracle官网或其他JDK提供商网站&#xff0c;下载适合Windows系统的JDK版本。网站地址&#xff1a;Oracle 甲骨文中国 | 云应用和云平台点击进入下滑&#xff0c;点击进入下载根据自己的系统选择&…

Vue2是如何利用Object.defineProperty实现数据的双向绑定?

我们之前说道过Object.defineProperty方法有一关键特性&#xff0c;就是数据劫持&#xff0c;通过get/set 拦截属性的读取和修改操作。Vue主要是通过数据劫持结合发布-订阅模式来实现的&#xff0c;利用Object.defineProperty来劫持各个属性的setter和getter&#xff0c;在数据…

Transformer解析——(四)Decoder

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…

Vue前端开发-Vant之Layout组件

在Vant 中&#xff0c;Layout组件用于元素的响应式布局&#xff0c;分别由van-row和van-col两个组件来实现&#xff0c;前者表示行&#xff0c;后者被包裹在van-row组件中&#xff0c;表示列&#xff0c;共有24列栅格组成&#xff0c;在van-col组件中&#xff0c;span属性表示所…