php危险函数及rce漏洞
php代码执行语句
eval()
eval()语句
eval() 会将符合PHP 语法规范字符串当作php 代码执行。
<meta charset="UTF-8">
<pre><?php$dd=$_REQUEST['dd'];eval($dd);?>
可以执行php代码
也可以套一层system执行系统操作指令
assert()函数
assert() 会将字符串当做PHP 代码来执行。
说明
- assert() 只能执行单条PHP 语句。
- assert() 是一个函数,可以动态调用。
- 高版本PHP 中,assert() 被弃用。
<pre><?php$dd=$_REQUEST['dd'];assert($dd);?>
preg_replace函数
preg_replace() 函数的作用是对字符串进行正则匹配后替换。
$dd=preg_replace("/A/i","j","aJEST");
$dd=preg_replace("/\[.*\]/i","j","[phpinfo()]jboom");
$dd=preg_replace("/\[(.*)\]/i","\\1","[phpinfo()]");
回调函数
call_user_func
<?php$func = 'assert';$arg = "phpinfo();";call_user_func($func, $arg);
?>
array_map
<?php$func=$_REQUEST["func"];$arr=$_REQUEST["arr"];array_map($func,$arr);
?>
动态函数
由于PHP 的特性原因,PHP 的函数支持直接由拼接的方式调用,这直接导致了PHP 在安全上的控制有加大了难度。不少知名程序中也用到了动态函数的写法,这种写法跟使用call_user_func() 的初衷一样,用来更加方便地调用函数,但是一旦过滤不严格就会造成代码执行漏洞。
<?php$func=$_REQUEST["func"];$arr=$_REQUEST["arr"];$func($arr);
?>
os命令执行函数
system函数
system() 能够将字符串作为操作系统(Operator Sytstemc,OS)命令执行。在类似systemc() 函数调用系统命令时,PHP 会自动区分平台。
<pre><?php$dd=$_REQUEST['dd'];system($dd);?>
exec函数
函数特点
- 需要输出命令执行结果。
- 只输出命令执行结果的最后一行,约等于没有回显。
<pre>
<?php$dd=$_REQUEST['dd'];echo exec($dd);
?>
shell_exec函数
- 需要输出命令执行结果
<pre>
<?php$dd=$_REQUEST['dd'];echo shell_exec($dd);
?>
passthru函数
- 自带输出功能
<pre>
<?php$dd=$_REQUEST['dd'];passthru($dd);
?>
popen函数
说明
- 函数返回值为文件指针,可以简单理解为文件名。
<pre>
<?php$dd=$_REQUEST['dd'];$result=popen($dd,'r');echo fread($result,1024);
?>
只返回第一行内容
反引号
反引号` 内的字符串,会被解析成OS 命令
<pre>
<?php$dd=$_REQUEST['dd'];echo `$dd`;
?>
RCE漏洞
漏洞描述
所谓RCE漏洞,即Remote Code/Command Execution,远程代码执行和远程命令执行漏洞。
在很多Web应用中,开发人员会使用一些函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就产生了RCE漏洞。
RCE漏洞是非常严重的安全漏洞,一旦出现,就意味着攻击者可以获取服务器的命令执行权限,从而对服务器安全造成极大的影响。
漏洞场景
-
执行系统命令:攻击者可以利用RCE漏洞执行系统命令,比如创建、修改或删除文件、目录,执行系统脚本等。这使得攻击者能够在目标服务器上执行任意操作。
-
控制服务器:攻击者可以利用RCE漏洞获取对服务器的控制权,包括远程登录、修改系统配置、安装后门等。这使得攻击者可以完全控制服务器,进行各种恶意活动。
-
数据窃取:攻击者可以利用RCE漏洞窃取服务器上的敏感信息,比如数据库凭据、用户密码、个人数据等。这些信息可以用于进一步的攻击或者非法获利。
-
进一步攻击:攻击者可以利用RCE漏洞在目标服务器上执行其他攻击,比如横向移动攻击,通过在受感染的服务器上执行代码,进一步攻击其他服务器或网络中的系统。
-
拒绝服务(Denial of Service,DoS)攻击:攻击者可以利用RCE漏洞执行恶意代码来消耗目标服务器的资源,导致服务器崩溃或无法正常工作,从而使服务不可用。
RCE漏洞的使用场景非常广泛,攻击者可以利用这种漏洞来执行任意操作,控制服务器,窃取敏感信息或者进一步攻击其他系统。
漏洞原理
- 用户输入:攻击者通常会找到目标系统上的一个输入点,比如Web应用程序的表单、URL参数、HTTP请求头等。这些输入点允许用户向系统提交数据。
- 输入处理:目标系统接收到用户输入后,会对其进行处理。这个处理过程可能包括解析、验证、过滤、拼接等操作。
- 注入恶意代码:攻击者利用输入处理过程中的漏洞,注入恶意代码。常见的注入点包括未正确过滤的特殊字符、未正确处理用户输入的引号或其他特殊字符等。
- 执行恶意代码:一旦恶意代码成功注入,目标系统在执行时会将其视为合法代码。这使得攻击者能够在目标系统上执行任意操作,比如执行系统命令、访问文件系统、修改配置文件等。
- 控制目标系统:通过执行恶意代码,攻击者可以获得对目标系统的控制权。这使得攻击者可以进行进一步的攻击,比如安装后门、窃取敏感信息、横向移动等。
RCE漏洞的原理主要是利用目标系统对用户输入的处理不当,导致攻击者能够注入恶意代码并执行。
漏洞危害
- 执行系统命令:RCE漏洞使得攻击者能够在目标系统上执行系统命令,比如创建、修改或删除文件、目录,执行系统脚本等。这使得攻击者可以在目标服务器上执行任意操作,包括控制服务器、窃取敏感信息等。
- 控制服务器:RCE漏洞使得攻击者可以获取对服务器的控制权,包括远程登录、修改系统配置、安装后门等。这使得攻击者可以完全控制服务器,进行各种恶意活动,比如植入恶意软件、发起其他攻击等。
- 数据窃取:攻击者可以利用RCE漏洞窃取服务器上的敏感信息,比如数据库凭据、用户密码、个人数据等。这些信息可以用于进一步的攻击或者非法获利,比如进行身份盗窃、敲诈勒索等。
- 进一步攻击:利用RCE漏洞,攻击者可以在目标服务器上执行其他攻击,比如横向移动攻击。攻击者可以通过在受感染的服务器上执行代码,进一步攻击其他服务器或网络中的系统,从而扩大攻击范围。
- 拒绝服务(Denial of Service,DoS)攻击:攻击者可以利用RCE漏洞执行恶意代码来消耗目标服务器的资源,导致服务器崩溃或无法正常工作,从而使服务不可用。这可能导致业务中断、数据丢失等严重后果。
漏洞评级
高危
漏洞验证
网页包含代码假如包含以下代码
<?phpeval($_REQUEST['cmd']);
?>
即可通过url执行命令
同时该代码存在,也可被蚁剑连接使用
如下代码也行
<?php$_GET['a']($_REQUEST['b']);
?>
漏洞利用
- 可以蚁剑连接执行代码
- 也可以通过传参执行代码
漏洞防御
- 输入验证和过滤:对于用户输入的数据,必须进行严格的验证和过滤,以防止恶意代码的注入。可以使用白名单过滤或正则表达式验证来限制输入的内容,只接受预期的数据。
- 输入转义:对于用户输入的数据,必须进行适当的转义,以确保任何特殊字符都被正确处理。这可以通过使用安全的编码函数或框架提供的转义函数来实现。
- 最小权限原则:在配置服务器和应用程序时,应使用最小权限原则。即,将服务器和应用程序配置为以最低权限运行,以限制攻击者可能获得的权限。
- 安全的代码执行环境:在执行用户输入的代码之前,应确保在一个安全的环境中执行。这可以通过使用沙箱技术、限制执行环境的资源访问权限、禁用危险的系统函数等方式来实现。
- 安全的开发实践:在开发过程中,应该遵循安全的开发实践,包括对代码进行安全审查和测试,使用安全的编程语言特性和函数,及时修复已知的漏洞等。
- 更新和修补漏洞:及时更新和修补应用程序、操作系统和相关软件的漏洞是至关重要的。漏洞的修复补丁通常会包括对RCE漏洞的修复。
漏洞案例
一个经典的RCE漏洞案例是PHPMailer漏洞(CVE-2016-10033和CVE-2016-10045)。
PHPMailer是一个流行的PHP库,用于发送电子邮件。在2016年之前的版本中,PHPMailer存在一个RCE漏洞,允许攻击者通过构造恶意的电子邮件来执行任意的系统命令。
漏洞的原因是在PHPMailer中,当使用邮件服务器的sendmail功能发送邮件时,可以通过用户提供的邮件主题字段来构造系统命令。然而,这个主题字段没有被适当地验证和过滤,导致攻击者可以注入恶意的命令。
攻击者可以构造一个恶意的邮件主题,其中包含一个系统命令,比如"; ls -la;
。当PHPMailer尝试发送这个恶意邮件时,它会将恶意命令传递给系统命令执行函数,导致服务器执行了ls -la
命令并返回结果。
这个漏洞的危害非常严重,攻击者可以通过构造恶意的命令来访问文件系统、执行其他系统命令、修改配置文件等。该漏洞在被发现后得到了修复,并提醒开发人员在使用PHPMailer时升级到修复版本以避免RCE漏洞的利用。
r中,当使用邮件服务器的sendmail功能发送邮件时,可以通过用户提供的邮件主题字段来构造系统命令。然而,这个主题字段没有被适当地验证和过滤,导致攻击者可以注入恶意的命令。
攻击者可以构造一个恶意的邮件主题,其中包含一个系统命令,比如"; ls -la;
。当PHPMailer尝试发送这个恶意邮件时,它会将恶意命令传递给系统命令执行函数,导致服务器执行了ls -la
命令并返回结果。
这个漏洞的危害非常严重,攻击者可以通过构造恶意的命令来访问文件系统、执行其他系统命令、修改配置文件等。该漏洞在被发现后得到了修复,并提醒开发人员在使用PHPMailer时升级到修复版本以避免RCE漏洞的利用。
相关文章:

php危险函数及rce漏洞
php代码执行语句 eval() eval()语句 eval() 会将符合PHP 语法规范字符串当作php 代码执行。 <meta charset"UTF-8"> <pre><?php$dd$_REQUEST[dd];eval($dd);?>可以执行php代码 也可以套一层system执行系统操作指令 assert()函数 assert() …...

4. 寻找两个正序数组的中位数
1. 题目 见 寻找两个正序数组的中位数 2. 解题思路 首先一看到题目说是正序数组,且时间复杂度要求在对数级别,所以自然想到了双指针中的二分法。 首先来看一下,假设输入是这两个数组,那么将其逻辑合并成一个大数组的话&#x…...

Stable Diffusion AI绘图
提示词: masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…...

MR混合现实情景实训教学系统在旅游管理专业中的应用
在旅游管理专业中,MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面: 1. 实地考察的替代:对于一些无法实地考察的景点或设施,学生可以通过MR系统进行虚拟参观,从而了解其实际情况。这不仅可以减少时间和…...

CentOS 使用线程库Pthread 库
1、Pthread 库说明 pthread 库是Linux系统默认线程库。 在Linux 系统环境中,编辑C/C程序使用pthread 库,需要添加对应的头文件,并链接pthread库。 #include<pthread.h> 2、Pthread 库核心方法 pthread_create 函数定义࿱…...

#力扣:LCP 01. 猜数字@FDDLC
LCP 01. 猜数字 - 力扣(LeetCode) 一、Java class Solution {public int game(int[] guess, int[] answer) {int cnt0;for(int i0;i<3;i){if(guess[i]answer[i])cnt;}return cnt;} }...

kafka丢数据的原因
目录 背景kafkaClient代码消息丢失的可能原因broker is downRD_KAFKA_MSG_SIZE_TOO_LARGE分区问题Kafka Broker的处理能力无法跟上,可能会出现以下情况 Some基础知识补充 背景 采用的client是librdkafka,在producerClient Send的数据时候发现会有数据丢…...

音视频编解码技术学习笔记
音视频编解码技术是音视频处理领域的重要部分,涉及到对原始音视频数据的压缩、编码和解码。以下是音视频编解码技术的一些要点和难点: 要点: 压缩技术 音视频编解码的核心是对原始音视频数据进行压缩,以减小文件大小和传输带宽…...

[C#基础训练]FoodRobot食品管理部分代码-1
代码参考: using System;namespace FoodRobotDemo { public class FoodRobot{private int[] foodCountArr;private string[] foodNameArr;public FoodRobot(){foodCountArr new int[3];foodNameArr new string[3] {"航天","航空","宇航" };}…...

YModem协议总结
《YModem协议总结》 目录 第1章 YModem协议简介 4 1.1 基本介绍 4 1.2 YModem基本介绍 4 第2章 YModem传输协议 5 2.1 起始帧的数据格式 5 2.2 数据帧的数据格式 5 2.3 结束帧数据结构 6 2.4 文件传输过程 6 2.5 CRC的计算 7 附录A 附录 8 A.1 附录 8 第1章 YModem协议简…...

ElasticSearch(ES)8.1及Kibana在docker环境下如何安装
ES基本信息介绍 Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,最初由Elastic公司创建。它属于Elastic Stack(ELK Stack)的核心组件之一,用于实时地存储、检索和分析大量数据。 以下是Elastics…...

常用Win32 API的简单介绍
目录 前言: 控制控制台程序窗口的指令: system函数: COORD函数: GetStdHandle函数: GetConsoleCursorInfo函数: CONSOLE_CURSOR_INFO函数: SetConsoleCursorInfo函数: SetC…...

VM及WindowsServer安装
目录 一.操作系统的简介及常用的操作系统 二.windows的安装 安装VMWare虚拟机 注意点一 编辑 注意点二 三.安装配置Windows Server 2012 R2 四、虚拟机的环境配置及连接 1. 主机连接虚拟机 2. 虚拟机环境配置及共享 3. 环境配置 一.操作系统的简介及常用的操作系…...

操作系统【OS】调度算法对比图
FCFS SJF 高响应比 时间片轮转 多级反馈队列 可抢占? √ √ √ 队列内算法不一定 不可抢占? √ √ √ 队列内算法不一定 特点&优点 公平实现简单有利于长作业不利于短作业有利于CPU繁忙作业不利于IO繁忙作业 因为CPU繁忙型进程即…...

音视频开发常见问题(五):视频黑屏
摘要 本文介绍了视频黑屏的可能原因和解决方案。主要原因包括用户主动关闭视频、网络问题和渲染问题。解决方案包括优化网络稳定性、确保视频渲染视图设置正确、提供清晰的提示、实时监测网络质量、使用详细的日志系统、开启视频预览功能、使用视频流回调、处理编解码问题、处…...

力扣 第 368 场周赛
2908. 元素和最小的山形三元组 I 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 : i < j < k nums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 nums 中 元素和最小 的…...

文件的常用操作(读取压缩文件、解压、删除)
背景:最近做一个腾讯 cos 桶 文件的读写与本地数据库查询等操作 Retrofit 中文件下载的可以添加 Streaming StreamingGETObservable<ResponseBody> downloadCosFile(Url String downloadUrl);Streaming 的作用: 注解通常用于指示Retrofit或其他HTT…...

Simulation Studio - TRNSYS
简单记录一下最近学习 Simulation Studio的一些经历。 在学习之初,参考了一些大佬们的文章: Fortran学习笔记——1.基本内容 - 知乎 但是我主要的目的是使用Simulation Studio(下文用SS代替)编译自己的组件,看到Sim…...

python实现串口通信
python实现串口通信是一件简单的事情,只要通过pyserial模块就可以实现。 一、串口通信 1、什么是串口通信? 串口通信是一种通过串行接口(Serial Port)进行数据传输的通信方式。在串口通信中,数据位按顺序一位一位地传…...

No module named ‘cv2’ 解决方法
目录 解决方案1解决方案2 解决方案1 一般情况下的解决方案 在自己的虚拟环境里面安装就行 pip install opencv-python解决方案2 但是我遇到的情况没有这么简单,我使用了pip list | grep open 搜索含有open字样的opencv的包,结果显示已经安装了 我直接进入我的自定义的虚拟…...

65、内网安全-域环境工作组局域网探针方案
目录 案例1-基本信息收集操作演示案例2-网络信息收集操作演示案例3-用户信息收集操作演示案例4-凭据信息收集操作演示案例5-探针主机域控架构服务操作演示涉及资源 我们攻击内网一般是借助web攻击,直接进去,然后再去攻击内网,那么攻击的对象一…...

C#:EXCEL列名、列序号之间互相转换
EXCEL的列名与列序号 之前的关系如下 A1B2C3D4E5F6G7H8I9J10K11L12M13N14O15P16Q17R18S19T20U21V22W23X24Y25Z26AA27AB28 /// <summary>/// 根据给的EXCEL列序号,得出列名字母/// </summary>/// <param name"iColNum">序号</param&…...

云原生微服务实战 Spring Cloud Alibaba 之 Nacos
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...

ubuntu gcc版本降级 Reset gcc version from 11.3 to 11.2 on Ubuntu 22.04
aptitude 需要自己安装 sudo apt-get install aptitude # 安装# aptitude的一些常用的操作: sudo aptitude update # 更新软件源 sudo aptitude search 软件名称 # 查看软件 sudo aptitude install 软件名称 …...

基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉 计算机竞赛
文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖,适合作为竞赛课…...

Windows客户端下pycharm配置跳板机连接内网服务器
问题:实验室服务器仅限内网访问,无法在宿舍(外网)访问实验室的所有内部服务器,但同时实验室又提供了一个外网可以访问的跳板机,虽然可以先ssh到跳板机再从跳板机ssh到内网服务器,但这种方式不方…...

美国IP代理如何获取?适用于哪些场景?
美国代理IP可以是静态(不会改变)或动态(周期性更改),并且可以由专业的代理服务提供商提供。不同的代理IP服务提供商可能提供不同类型的代理,包括数据中心代理、住宅代理和移动代理,以满足不同用…...

Java工具库——FastJson的40个常用方法
那些想看却没看的书,在心里摆满一个图书馆… 工具库介绍 阿里巴巴的 FastJSON,也被称为 Alibaba FastJSON 或阿里巴巴 JSON,是一个高性能的 Java JSON 处理库,用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性…...

基于ssm的宠物医院管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

RocketMQ学习笔记(一)
RocketMQ学习笔记 消息中间件应用场景 应用解耦削峰填谷数据分发 常见的消息中间件 ActiveMQ:Apache出品,比较老的一个开源的消息中间件,以前在中小企业应用广泛Kafka:Apache软件基金会开发的一个开源流处理平台,由…...