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

命令执行漏洞概述

命令执行漏洞概述

  • 命令执行定义
  • 命令执行条件
  • 命令执行成因
  • 命令执行漏洞带来的危害
  • 远程命令执行漏洞相关函数
  • assert()
  • preg_replace()
  • call_user_func()
  • a ( a( a(b)可变函数
  • 远程命令执行漏洞的利用
  • 系统命令执行漏洞相关函数
    • system()
    • exec()
    • shell_exec()
    • passthru()
    • popen()

命令执行定义

  • 基本定义:命令执行漏洞是指攻击者可以随意执行系统命令,分为远程命令执行(远程代码执行)和系统类命令执行。
  • 原理:程序应用时有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen,当用户能控制这些函数的参数时,就可以将恶意系统命令,拼接到正常的命令中,从而造成命令执行攻击。

命令执行条件

  • 用户能够控制函数输入
  • 存在可以执行代码或者系统命令的危险函数

命令执行成因

  • 由于开发人员再编写源码的时候,没有针对代码中的可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并且提交服务端执行。
  • 命令注入攻击时,Web服务器没有过滤类似System,eval和exec等函数,是漏洞攻击成功的主要原因。

命令执行漏洞带来的危害

  • 继承Web服务程序的权限去执行系统命令(任意代码)或者读写文件
  • 反弹Shell
  • 控制整个网站甚至整个服务器
  • 进一步内网渗透

远程命令执行漏洞相关函数

assert()

说明:检查断言是否为false
assert(mixed $assertion, Throwable $exception = ?): bool
传统断言(PHP5和7)
**如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。**如果传入了 boolean 的条件作为 assertion,这个条件将不会显示为断言函数的参数;在调用你定义的 assert_options() 处理函数时,条件会转换为字符串,而布尔值 false 会被转换成空字符串。
断言这个功能应该只被用来调试。应该用于完整性检查时测试条件是否始终应该为 true,来指示某些程序错误,或者检查具体功能的存在(类似扩展函数或特定的系统限制和功能)。
在这里插入图片描述
在这里插入图片描述
简单说就是assert后面跟着字符串,那就当作php代码进行处理了。

preg_replace()

preg_replace — 执行一个正则表达式的搜索和替换

preg_replace(string|array $pattern,string|array $replacement,string|array $subject,int $limit = -1,int &$count = null
): string|array|null

搜索 subject 中匹配 pattern 的部分,以 replacement 进行替换。
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [,int $limit = -1 [,int c o u n t ] ] ) : m i x e d 其中 p a t t e r n 是要搜索的模式。可以是一个字符串或字符串数组。当 p a t t e r n 存在一个“ / e ”修饰符时, count ]] ) : mixed 其中pattern是要搜索的模式。可以是一个字符串或字符串数组。当pattern存在一个“/e”修饰符时, count]]):mixed其中pattern是要搜索的模式。可以是一个字符串或字符串数组。当pattern存在一个“/e修饰符时,replacement的值会被当成php代码来执行。
现在解释一下这个函数的具体使用方法:
简化一下模型:preg_replace(O,A,HELLOWORLD),就是把第三个参数的中的O替换成A。
请添加图片描述
代码中第一个参数中的“.”代表任意字符,“*”代表任意次数,两个连接起来就代表任意字符串。
请添加图片描述
就是因为加了一个/e,这个时候就会把第二参数当作php函数进行执行。

call_user_func()

call_user_func — 把第一个参数作为回调函数调用
call_user_func(callable c a l l b a c k , m i x e d . . . callback, mixed ... callback,mixed...args): mixed
请添加图片描述
请添加图片描述

a ( a( a(b)可变函数

<?php
if(isset( $_GET['a' ])&isset($_GET['b'])){@$a = $_GET['a'];@$b = $_GET['b' ];@$a($b);//函数,可变函数//$a就是函数的名//$b就是函数的值//?a=assert&b=phpinfo()//assert(phpinfo());
else{echo "Please input a&b";
?>

请添加图片描述

请添加图片描述
就是前面的作为函数名,后面的参数作为函数的参数。

远程命令执行漏洞的利用

?a=@eval(KaTeX parse error: Expected group after '_' at position 28: …一句话木马 ?a=print(_̲__FILE_);获取当前绝对…_POST[1],$_POST[2])); 1=shell.php&2=<?phpphpinfo()?>写shell

请添加图片描述
在这里插入图片描述

*************************************************************************************************************************************************************远程命令执行我们提供的字符串是php代码,而系统命令执行提供的字符串时系统命令


系统命令执行漏洞相关函数

  • system()
  • exec()
  • shell_exec()
  • passthru()
  • popen()
  • 反问号

system()

请添加图片描述
请添加图片描述

exec()

(PHP 4, PHP 5, PHP 7, PHP 8)

exec — Execute an external program

Description :
exec(string KaTeX parse error: Expected 'EOF', got '&' at position 16: command, array &̲output = null, int &$result_code = null): string|false
exec() executes the given command.
在这里插入图片描述
在这里插入图片描述

shell_exec()

Description:
shell_exec(string $command): string|false|null
参数就是要执行的命令。
在这里插入图片描述

passthru()

passthru ( string c o m m a n d [ , i n t s command [, int s command[,intsreturn_var ] ) : void

同exec()函数类似,passthru()函数也是用来执行外部命令(command)的。当所执行的Unix命令输出二进制数据,并且需要直接传送到浏览器的时候,需要用此函数来替代 exec()或 system()函数。常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。通过设置Content-type为image/gif,然后调用pbmplus程序输出 gif 文件,就可以从 PHP脚本中直接输出图像到浏览器。
参数:
command:要执行的命令。
return_var:如果提供return_var参数,Unix命令的返回状态会被记录到此参数。

popen()

popen ( string $command , string $mode ) : resource
打开一个指向进程的管道,该进程由派生给定的command命令执行而产生。
参数
command:命令。
mode:模式。

<?php
if(isset($_GET['a'])){popen( "whoami >>1.txt" , 'r');
}else{echo "Please input a";
}
?>

看一下代码中的大于号:
“>:覆盖”
“>>:追加”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

命令执行漏洞概述

命令执行漏洞概述 命令执行定义命令执行条件命令执行成因命令执行漏洞带来的危害远程命令执行漏洞相关函数assert()preg_replace()call_user_func() a ( a( a(b)可变函数远程命令执行漏洞的利用系统命令执行漏洞相关函数system()exec()shell_exec()passthru&#xff08;&#x…...

【初试复试第一】脱产在家二战上岸——上交819考研经验

笔者来自通信考研小马哥23上交819全程班学员 先介绍一下自己&#xff0c;我今年初试426并列第一&#xff0c;加上复试之后总分600&#xff0c;电子系第一。 我本科上交&#xff0c;本科期间虽然没有挂科但是成绩排名处于中下游水平。参加过全国电子设计大赛&#xff0c;虽然拿…...

PTA:C课程设计(7)

山东大学&#xff08;威海&#xff09;2022级大一下C习题集&#xff08;7&#xff09; 函数题7-6-1 递增的整数序列链表的插入7-6-2 查找学生链表7-6-3 统计专业人数7-6-4 建立学生信息链表 编程题7-7-1 查找书籍7-7-2 找出总分最高的学生 函数题 7-6-1 递增的整数序列链表的插…...

POSTGRESQL LINUX 与 PG有关的内存参释义

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…...

Docker的常见命令

前言:使用Docker得学会的几个常见命令 常见命令前置学习: docker --help这个命令必须得会因为,很多命令是记不住的,得使用他们的官方help下面是一些实例 docker load --help常见命令集合: 一: docker images #查看全部镜像 docker rmi #删除某个镜像(例如:docker rmi redis…...

详细介绍性能测试的方法(含文档)

性能测试是软件测试中的一个重要环节&#xff0c;其目的是评估系统在不同负荷下的性能表现&#xff0c;包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试&#xff1a; 1、负载测试 负载测试是模拟多用户同时访问系统&#xff0c;测试系统在高并发、…...

深入剖析 Qt QHash :原理、应用与技巧

目录标题 引言QHash 基础用法基础用法示例基础用法综合示例 QHash 的高级用法迭代器&#xff1a;遍历 QHash 中的元素&#xff08;Iterators: Traversing Elements in QHash &#xff09;QHash和其他容器的对比QHash 和 std::unordered\_map QHash的底层原理和内存管理QHash 的…...

技术分享 | MySQL级联复制下进行大表的字段扩容

作者&#xff1a;雷文霆 爱可生华东交付服务部 DBA 成员&#xff0c;主要负责Mysql故障处理及相关技术支持。爱好看书&#xff0c;电影。座右铭&#xff0c;每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;…...

工业互联网业务知识

文章目录 背景第四次工业革命带动制造业产业升级主要工业大国不同路径 架构ISA95体系架构变革趋势基础通用架构数据采集平台 工业互联网应用软件工业互联网全要素连接产品视角&#xff1a;产销服务企业的业务流程企业数字化改造&#xff1a;车间级全要素连接 工业互联网的产品体…...

jsp+java自行车租赁租借和买卖系统

自行车租借和买卖系统 系统包括四个模块。1&#xff0c;系统模块&#xff0c;2&#xff0c;车辆管理模块&#xff0c;3.租借车管理模块&#xff0c;4&#xff0c;买卖车管理模块。 1&#xff0c;系统模块包括: 连接数据库&#xff0c;工作人员登录&#xff0c;退出。 2&#…...

Python3 字符串

Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( 或 " )来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a; var1 Hello World! var2 "Runoob" Python 访问字符串中的值 Python 不支持单字符…...

Day943.持续集成流水线 -系统重构实战

持续集成流水线 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于持续集成流水线的内容。 从团队协作的角度上来看&#xff0c;在版本发布过程中&#xff0c;经常出现测试依赖开发手工生成制品、版本发布也从开发本地出版本的问题。而且项目架构如果从单体演进至组件…...

How to use CCS to debug a running M4F core that was started by Linux?

参考FAQ:AM62x & AM64x: How to use CCS to debug a running M4F core that was started by Linux? 问题记录&#xff1a; 1.使用SD卡启动模式&#xff0c;板上运行Linux。 当Linux系统启动后&#xff0c;9表示M4F core&#xff1a; am64xx-evm login: root rootam64xx…...

216、组合总数III

难度&#xff1a;中等 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7…...

简单的重装系统教程

郁闷&#xff0c;最近电脑一直蓝屏重启&#xff0c;用 2 分钟就蓝屏一次&#xff0c;遂产生重装系统的想法。 准备 U盘(8G或以上) PE 工具&#xff1a; 微PE工具箱快速指引 | 微PE优盘使用说明书 (wepe.com.cn) 系统镜像&#xff1a; 官网 Windows 10 官网 Windows 11 M…...

机器学习---集成学习报告

1.原理以及举例 1.1原理 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习策略&#xff0c;它通过结合多个基学习器&#xff08;base learners&#xff09;的预测来提高模型的性能。集成学习的目标是创建一个比单个基学习器更准确、更稳定的最终预测模型。这…...

教你如何将PDF文件转换成PPT演示文稿

在工作和学习中&#xff0c;我们可能需要将一些PDF文件转换成PPT演示文稿&#xff0c;以便于更好地展示和分享。虽然PPT和PDF是两种不同的文档格式&#xff0c;但是我们可以使用一些专业的软件或在线工具来实现这种转换。下面就让我们来教你如何将PDF文件转换成PPT演示文稿。 …...

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov5/Yolov7,内存更小、效率更高,秒杀Adam(W)

1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…...

Windows GPU版本的深度学习环境安装

本文记录了cuda、cuDNN的安装配置。 参考文章&#xff1a; cuda-installation-guide-microsoft-windows 12.1 documentation Installation Guide :: NVIDIA cuDNN Documentation 一、cuda安装 注意事项&#xff1a; 1、cuda安装最重要的是查看自己应该安装的版本。 表格…...

C语言实践——通讯录(3)(文件版)

首先感谢上一篇博客的大佬们的点赞&#xff0c;非常感谢&#xff01;&#xff01;&#xff01; 目录 前言 一、需要添加的功能 1.增加保存数据函数——可以保存数据到文件中 主要逻辑&#xff1a; 注意事项&#xff1a; 代码实现&#xff1a; 2.修改初始化函数——新…...

终极指南:如何快速搭建NixOS配置开发环境 [特殊字符]

终极指南&#xff1a;如何快速搭建NixOS配置开发环境 &#x1f680; 【免费下载链接】linux-nixos-hyprland-config-dotfiles Linux &#x1f427; configuration based on NixOS ❄️, Hyprland, and Catppuccin Macchiato theme &#x1f638; for a consistent, complete, a…...

CPU工作原理:从二进制加法器到计算系统

CPU工作原理&#xff1a;从二进制加法器到计算系统的演进 1. 计算需求与二进制表示 在数字计算领域&#xff0c;加法是最基础也是最重要的运算之一。让我们从一个简单的数学问题开始&#xff1a;6324 244675 &#xff1f;这个看似简单的加法问题&#xff0c;揭示了计算系统的…...

RK3568 NPU RKNN(五):RKNN-ToolKit2性能与内存评估实战解析

1. 环境准备与工具链搭建 在开始RKNN-ToolKit2的性能与内存评估之前&#xff0c;我们需要先搭建完整的开发环境。这里以野火LubanCat开发板为例&#xff0c;具体硬件配置为RK3568芯片4GB内存版本。开发主机建议使用Ubuntu 20.04系统&#xff0c;确保Python版本在3.6-3.8之间。 …...

OpenClaw技能市场巡礼:最适合Qwen3-32B的5个实用模块

OpenClaw技能市场巡礼&#xff1a;最适合Qwen3-32B的5个实用模块 1. 为什么需要关注技能市场&#xff1f; 第一次接触OpenClaw时&#xff0c;我以为它只是个简单的自动化脚本集合。直到在本地部署了Qwen3-32B模型后&#xff0c;才发现真正的威力藏在技能市场里。这里分享一个…...

【Python时序预测实战】基于贝叶斯优化的Transformer单变量时序预测模型构建与调优

1. 为什么选择Transformer做时序预测&#xff1f; 我第一次用Transformer做销量预测时&#xff0c;心里其实挺没底的。毕竟这玩意儿原本是搞自然语言处理的&#xff0c;就像拿菜刀削苹果——工具不太对口。但当我看到预测结果比传统LSTM提升了23%的准确率时&#xff0c;立刻真香…...

uStepper S开源库深度解析:闭环步进控制与TMC2130驱动实战

1. uStepper S 开源驱动库深度解析&#xff1a;面向嵌入式工程师的实战指南 uStepper S 是一款集成了高性能步进电机驱动、高精度磁编码器反馈、ARM Cortex-M0 微控制器&#xff08;NXP LPC11U35&#xff09;与丰富外设接口的智能运动控制模块。其配套的 uStepper S Arduino…...

OpenClaw怎么部署?2026年3月OpenClaw(Clawdbot)在阿里云一键部署超全教程

OpenClaw怎么部署&#xff1f;2026年3月OpenClaw&#xff08;Clawdbot&#xff09;在阿里云一键部署超全教程。本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c;包含环…...

重构直播互动体验:BLiveChat的跨平台弹幕解决方案

重构直播互动体验&#xff1a;BLiveChat的跨平台弹幕解决方案 【免费下载链接】blivechat 用于OBS的仿YouTube风格的bilibili直播评论栏 项目地址: https://gitcode.com/gh_mirrors/bl/blivechat BLiveChat作为一款开源的B站直播弹幕工具&#xff0c;通过仿YouTube风格的…...

重庆灌浆料销售厂家怎么联系

在重庆的建筑工程领域&#xff0c;灌浆料的应用十分广泛。然而&#xff0c;众多重庆灌浆料厂家的市场状况究竟如何&#xff1f;又存在哪些痛点呢&#xff1f;市场现状&#xff1a;鱼龙混杂目前&#xff0c;重庆灌浆料市场厂家众多&#xff0c;但质量参差不齐。行业权威报告显示…...

保姆级教程:用Docker Compose一键部署Calibre-Web,再也不用担心电子书管理了

零基础打造个人电子书库&#xff1a;Docker Compose全栈部署Calibre-Web实战指南 在数字阅读时代&#xff0c;如何高效管理日益增长的电子书资源成为许多读者的痛点。传统文件管理方式难以满足多设备同步、元数据整理和阅读进度跟踪等需求&#xff0c;而Calibre-Web正是为解决这…...