命令执行讲解和函数

命令执行漏洞简介

命令执行漏洞产生原因

应用未对用户输入做严格得检查过滤,导致用户输入得参数被当成命令来执行

命令执行漏洞的危害

1.继承Web服务程序的权限去执行系统命会或读写文件
2.反弹shell,获得目标服务器的权限
3.进一步内网渗透

远程代码执行

因为业务需求,在PHP中有时需要调用一些执行命令的函数·如:eval0、assert0、preg_replace0、create_function0等,如果存在一个使用这些函数且未对可被用户控制的参数进行检查过滤的页面,那么这个页面就可能存在远程代码执行漏洞。

远程代码执行-eval函数

eval ( string $code )
把字符串 code 作为PHP代码执行

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

注意:
eval0 函数传入的参数必须为PHP代码,即要以分号结尾;
函数eval0语言结构是非常危险的,因为它允许执行任意 PHP 代码·不要允许传入任何由用户提供的、未经
完整验证过的数据。

远程代码执行-assert函数

assert ( mixed $assertion [ string $description ])
检查一个断言是否为 FALSE,如果 assertion 是字符串,它将会被 assert0 当做 PHP 代码来执行

<?php @assert($_POST['cmd])?>

注意:
assert0函数是直接讲传入的参数当成PHP代码执行,不需要以分号结尾

远程代码执行-preg_replace函数

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject l int KaTeX parse error: Expected 'EOF', got '&' at position 19: …it = -1 l, int &̲count ]] )
执行一个正则表达式的搜索和替换,搜索subiect中匹配pattern的部分,以replacement进行替换

<?php preg_replace("/test/e",$_POST["cmd"],"just test"),?>

preg_replace(‘正则规则’,‘替换字符’, ‘目标字符’)
在这里插入图片描述
PCRE修饰符 e: preg_replace0在进行了对替换字符串的后向引用替换之后,将替换后的字符串作为php代码
评估执行(eval函数方式),并使用执行结果作为实际参与替换的字符串。
在这里插入图片描述
在这里插入图片描述

远程代码执行-array_map函数

array_map ( callable $callback , array $array1 [, array $…])
array_map0: 返回数组,是为 array1每个元素应用 callback函数之后的数组·callback 函数形参的数量和传给 array_map0 数组数量,两者必须一样·为数组的每个元素应用回调函数

<?php
$func=$_GET['func];
$cmd=$_POSTIcmd];
$array[0]=$cmd;
$new_array=array_map($func,$array):
echo Snew_array;
?>

远程代码执行-create_function函数

create_function ( string $args , string $code )
从传递的参数创建一个匿名函数,并为其返回唯一的名称。
通常这些参数将作为单引号分隔的字符串传递·使用单引号的原因是为了保护变量名不被解析,否则,如果
使用双引号,就需要转义变量名,例如 $avar

<?php
$func = create function(”,$_POST['cmd']):
$func();
?>

远程代码执行-call_user_func函数

call user_func ( callable $callback [, mixed $parameter [, mixed $… ]])
第一个参数 calback 是被调用的回调函数,其余参数是回调函数的参数·把第一个参数作为回调函数调

<?php
cal user _func("assert",$_POST['cmd])
//传入的参数作为assert函数的参数
//cmd=system(whoami)
?>

远程代码执行-array_filter函数

array_filter ( array $array [ callable $callback [, int $flag = 0 ]1)
用回调函数过滤数组中的单元依次将 array 数组中的每个值传递到 callback 函数

<?php
$cmd=$_POSTI'cmd];
$array1=array($cmd);
$func =$ GETI'func'l;
array_filter($array1,$func),
//用回调函数过滤数组中的元素 : array_filter(数组,函数)
//?func=system //cmd=whoami
?>

远程代码执行-双引号

<?php // echo "phpinfo()"; echo "{$(phpinfo()}}"; ?>

在php中,双引号里面如果包含有变量,php解释器会将其替换为变量解释后的结果单引号中的变量不会被处理,双引号中的函数不会被执行和替换

远程系统命令执行

一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后后台会对该IP地址进行一次ping测试,并返回测试结果·而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台进行执行,从而获得后台服务器权限。
利用PHP 的系统命令执行函数来调用系统命令并执行,这类函数有 svstem()、exec()、shell exec()、passthru()、penti_exec()、popen()、proc_pen()等,此外还有反引号命令执行,这种方式实际上是调用shell_exec(函数来执行

远程系统命令执行

system(): 执行外部程序,并且显示输出
exec(): 执行一个外部程序
shell_exec(): 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回
passthru(): 执行unix乳统命令并且显示原始输出
pcntl_exec(): 在当前进程空间执行指定程序
popen(): 打开进程文件指针
proc_open(): 执行一个命令,并且打开用来输入/输出的文件指针。

远程系统命令执行-exec函数

exec ( string KaTeX parse error: Expected 'EOF', got '&' at position 17: …ommand l array &̲output [, int &$return var ]])
执行一个外部程序,exec( 执行 command 参数所指定的命令。
exec执行系统外部命令时不会输出结果,而是返回结果的最后一行·如果想得到结果,可以使用第二个参数,让其输出到指定的数组·此数组一个记录代表输出的一行。

远程系统命令执行-system函数

system ( string $command [, int &return_var ] )
函数执行 command 参数所指定的命令,并且输出执行结果
system在执行系统外部命令时,直接将结果输出到浏览器,如果执行命令成功则派回system和exec的区别在于,true,否则返回false。

远程系统命令执行-passthru函数

passthru ( string KaTeX parse error: Expected 'EOF', got '&' at position 16: command l, int &̲return var ])
执行外部程序并且显示原始输出,同exec0函数类似,passthru0 函数 也是用来执行外部命令(command)的
当所执行的 Unix 命令输出二进制数据 ,并且需要直接传送到浏览器的时候,需要用此函数来替代 exec0 或system0 函数。
passthru与system的区别: passthru直接将结果输出到浏览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。

远程系统命令执行-system函数

system ( string KaTeX parse error: Expected 'EOF', got '&' at position 15: command [ int &̲return_var ])
函数执行 command 参数所指定的命令·并且输出执行结果·
system和exec的区别在于·system在执行系统外部命令时·直接将结果输出到浏览器·如果执行命令成功则返回 true·否则返回false

远程系统命令执行

命令执行常用特殊字符

cmd1cmd2: 无论cmd1是否执行成功,cmd2将被执行
cmd1;cmd2: 无论cmd1是否执行成功,cmd2将被执行
cmd1llcmd2: 仅在cmd1执行失败时才执行cmd2
cmd1&&cmd2:仅在cmd1执行成功后时才执行
cmd2$(cmd) : echo $(whoami) 或者 $(touch test.sh; echo 'ls' > test.sh)
'cmd': 用于执行特定命令,如 whoami
>(cmd) : <(ls)
<(cmd) : >(ls)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己动手写编译器:使用 PDA 实现增强和属性语法的解析

在前面章节中我们了解了增强语法和属性语法&#xff0c;特别是看到了这两种语法的结合体&#xff0c;本节我们看看如何使用前面我们说过的自顶向下自动机来实现这两种语法结合体的解析&#xff0c;这里使用的方法也是成熟编译器常用的一种语法解析算法。 首先我们先给出上一节…

【运维】站点可靠性工程介绍:研发,运维,SRE,Devops的关系

文章目录 1、什么是SRE2、SRE与研发、运维的区别 1、什么是SRE 站点可靠性工程&#xff08;SRE&#xff09; 是 IT 运维的软件工程方案。 SRE 团队使用软件作为工具&#xff0c;来管理系统、解决问题并实现运维任务自动化。 SRE 执行的任务以前通常由运维团队手动执行&#x…

URL、DNS过滤,AV---防火墙综合实验

拓扑图 该实验之前的配置请看我的上一篇博客&#xff0c;这里仅配置URL、DNS过滤&#xff0c;AV 需求 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 这次的拓扑图在外网多增加了一个DNS服务器和HTTP服务器 DNS服务器IP&#xff1a;40.0.0.30 HTTP服务器…

计算机视觉主要知识点

计算机视觉是指利用计算机和算法来解析和理解图片和视频中的内容。这是一个跨学科领域&#xff0c;融合了计算机科学、图像处理、机器学习和模式识别等多方面的技术。以下是一些计算机视觉入门的基本知识点&#xff1a; 主要知识点 图像基础&#xff1a; 像素&#xff1a;图片…

文献学习-1-Continuum Robots for Medical Interventions

Chapt 5. 连续体机构分析 5.1 文献学习 5.1.1 Continuum Robots for Medical Interventions Authors: PIERRE E. DUPONT , Fellow IEEE, NABIL SIMAAN , Fellow IEEE, HOWIE CHOSET , Fellow IEEE, AND CALEB RUCKER , Member IEEE 连续体机器人在医学上得到了广泛的应用&a…

深度学习基础之《TensorFlow框架(4)—Operation》

一、常见的OP 1、举例 类型实例标量运算add&#xff0c;sub&#xff0c;mul&#xff0c;div&#xff0c;exp&#xff0c;log&#xff0c;greater&#xff0c;less&#xff0c;equal向量运算concat&#xff0c;slice&#xff0c;splot&#xff0c;canstant&#xff0c;rank&am…

通配符ssl证书产品

SSL数字证书可以对网站传输数据进行加密以及对服务器的身份进行认证。然而&#xff0c;随着互联网的发展&#xff0c;不管是个人还是企事业单位创建的域名网站越来越多&#xff0c;单域名SSL数字证书无法满足需求&#xff0c;因此通配符SSL证书应运而生。今天就随SSL盾小编了解…

【elk查日志 elastic(kibana)】

文章目录 概要具体的使用方式一&#xff1a;查找接口调用历史二&#xff1a;查找自己的打印日志三&#xff1a;查找错误日志 概要 每次查日志&#xff0c;我都需要别人帮我&#xff0c;时间长了总觉得不好意思&#xff0c;所以这次下定决心好好的梳理一下&#xff0c;怎么查日…

文件IO,目录IO的学习

一&#xff0c;头文件的添加 #ifndef _HEAD_H_ //防止重新定义宏 #define _HEAD_H_#include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h> #include<unistd.h> #include<string.h>#endif…

SpringBoot + Nacos 实现动态化线程池

1.背景 在后台开发中&#xff0c;会经常用到线程池技术&#xff0c;对于线程池核心参数的配置很大程度上依靠经验。然而&#xff0c;由于系统运行过程中存在的不确定性&#xff0c;我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时&#xff0c;一…

【已解决】PPT无法复制内容怎么办?

想要复制PPT文件里的内容&#xff0c;却发现复制不了&#xff0c;怎么办&#xff1f; 这种情况&#xff0c;一般是PPT文件被设置了以“只读方式”打开&#xff0c;“只读方式”下的PPT无法进行编辑更改&#xff0c;也无法进行复制粘贴的操作。 想要解决这个问题&#xff0c;我…

PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

先看图&#xff0c;后有完整代码 <?php $t "Excel数据转Sql查询系统字段半智能分析"; $s "Excel复制过来的二维结构表内容,分析查询条件&#xff01;"; $x "字段|最大长度|长度有|数字字段|空值存在|纯姓名|英文用户名|科学计数|是否等长|是否…

DP读书:《openEuler操作系统》(十)套接字 Socket 数据传输的基本模型

10min速通Socket 套接字简介数据传输基本模型1.TCP/IP模型2.UDP模型 套接字类型套接字&#xff08;Socket&#xff09;编程Socket 的连接1.连接概述(1)基本概念(2)连接状态(3)连接队列 2.建立连接3.关闭连接 socket 编程接口介绍数据的传输1. 阻塞与非阻塞2. I/O复用 数据的传输…

2024.02.20作业

1. 使用多进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半&#xff0c;子进程拷贝后一半&#xff0c;父进程回收子进程的资源 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <time.h> #includ…

C#,二叉搜索树(Binary Search Tree)的迭代方法与源代码

1 二叉搜索树 二叉搜索树&#xff08;BST&#xff0c;Binary Search Tree&#xff09;又称二叉查找树或二叉排序树。 一棵二叉搜索树是以二叉树来组织的&#xff0c;可以使用一个链表数据结构来表示&#xff0c;其中每一个结点就是一个对象。 一般地&#xff0c;除了key和位置…

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案&#xff1a; 模型加载错误&#xff1a;可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件&#xff0c;确保文件完整并放置在正确的位置。 依赖项错误&#x…

手持三防平板丨国产化加固平板丨国产三防平板发展的意义是什么?

随着现代科技的快速发展&#xff0c;平板电脑在我们的生活中扮演着越来越重要的角色。然而&#xff0c;传统的平板电脑只能在普通的环境中使用&#xff0c;而无法在恶劣的环境中使用&#xff0c;例如在高海拔、高温、高湿度、沙漠等环境中&#xff0c;传统平板电脑往往会出现故…

适用于Android 的 7 大短信恢复应用程序

对于 Android 用户来说&#xff0c;丢失重要的短信可能是一种令人沮丧的体验。幸运的是&#xff0c;有许多短信恢复应用程序可以帮助恢复丢失或删除的短信。在本文中&#xff0c;将与您分享 7 个最佳短信恢复应用程序&#xff0c;并帮助您找到可用于恢复已删除消息的最佳应用程…

美容小程序:让预约更简单,服务更贴心

在当今繁忙的生活节奏中&#xff0c;美容预约常常令人感到繁琐和疲惫。为了解决这个问题&#xff0c;许多美容院和SPA中心已经开始采用美容小程序来简化预约流程&#xff0c;并提供更加贴心的服务。在这篇文章中&#xff0c;我们将引导您了解如何制作一个美容小程序&#xff0c…

阿里云幻兽帕鲁服务器,游戏服务端版本升级怎么操作?

用阿里云一键部署的幻兽帕鲁服务器&#xff0c;想要更新游戏服务端版本&#xff0c;现在非常简单。之前还需要通过输入一行命令来更新&#xff0c;而现在可以直接通过面板上的选型来操作。 打开阿里云的计算巢&#xff0c;找到你的这台服务实例&#xff0c;点击进入&#xff0…