当前位置: 首页 > article >正文

命令执行漏洞 Command Execute

命令执行漏洞(Command Injection)是一种安全漏洞,指的是攻击者能够在应用程序的命令行中注入并执行恶意命令。简单来说,就是攻击者可以利用这个漏洞让程序执行自己指定的命令,而不是程序原本应该执行的命令。

举个例子:假设有个网站可以让用户输入一个文件名,然后程序根据这个文件名去执行操作(比如显示文件内容)。如果这个程序没有对用户输入进行足够的检查,攻击者可能会输入类似“; rm -rf /”这样的内容,导致程序不仅执行正常的命令,还执行了恶意命令(比如删除文件)。

原理

命令执行代码示例:

<?php system($_GET['cmd']); ?>
<?php @eval($_GET['cmd']); ?>

命令执行(Command Execute)漏洞即攻击者通过执行系统命令或恶意代码命令,以此实现非法操作,比如获取敏感信息、拿到系统权限等。

  • 命令执行漏洞分为系统命令执行(又称 OS 命令注入)和代码命令执行(命令注入),区别在于前者直接执行系统级命令,后者需调用恶意代码命令。我们经常听到的 “RCE”远程代码执行,就是属于代码命令执行漏洞。
  • 命令执行漏洞形成原因,本质是在系统服务器或应用程序端,没有对用户输入进行安全检测过滤,导致恶意代码被执行。
  • 命令执行漏洞通常发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等,比如Apache Struts2、Thinkphp等。

系统命令执行 常见管道符

&:后台执行命令(nohup) 示例:command &

&&:前一条命令执行成功,才执行后面一条命令 示例:command1 && command2

|:上一条命令输出作为下一条命令的输入参数 示例:command1 | command2

||:上一条命令执行失败后才执行下一条命令 示例:command1 || command2

;:多个命令顺序执行(不管前面的命令是否成功) 示例:command1; command2; command3

\n或0x0a:换行符

通过以上管道符可以拼接一些非法操作,达到系统命令执行的目的

代码命令执行 常见执行函数

PHP:system()、shell_exec()、exec()、passthru()、popen()、proc_open()、pcntl_exec(),dl()
Python:eval()、os.system()、os.Popen()、subprocess.Popen()、subprocess.call(xx,
shell=True)、commands.getstatus/output()
Java:存在Runtime类,在该类中提供了exec方法用以在单独的进程中执行特定的字符串命令
其他:ImageMagick组件、bash漏洞、struts2系列、thinkphp命令执行等拼客科技版权所有拼客

危害

  • 执行恶意代码
  • 获取系统敏感信息
  • 获取系统管理权限

防御方案

  • 不使用命令执行函数
  • 如果使用命令执行函数,则强制执行输入验证
  • 输入的命令进制使用占位符,而不要直接拼接变量
  • 在disable_functions中禁用
  • escapeshellcmd函数(程序参数)escapeshellarg函数(程序参数的值)进行参数过滤
  • 使用safe_mode_exec_dir指定可执行文件的路径

绕过手段

  • 逻辑运算符绕过
  • 在 win 下执行 bat 时可以使用 %1a 绕过过滤
  • 如果是 php 环境可以使用 %0a、%0d ,分别表示换行符\n和回车符\r
  • 引号绕过c"“at /etc/passwd、c”“at /etc/pas”“swd、c”"at /etc/pas’'swd
  • 反斜杠绕过 c\at /etc/pas\swd
  • 通配符绕过 /b??/??t /???/p??s??
  • 使用数字地址绕过 ip 限制
  • IFS绕过空格(注意切换成bash)
  • 编码绕过 echo "Y2F0IC9ldGMvcGFzc3dk="|base64 -d

http://www.kler.cn/a/556774.html

相关文章:

  • 深入解析Textual库:打造现代化的终端用户界面(TUI)
  • 深度学习之图像回归(二)
  • 华为云镜像加速器
  • HTML 的 script 标签中 defer 和 async 的区别
  • 中国游戏厂商出海拉美市场策略及收单方式
  • Windows10配置C++版本的Kafka,并进行发布和订阅测试
  • LeetCode2595
  • 【Spring Bean如何保证并发安全?】
  • 华为动态路由-OSPF-综合案例
  • 客户关系管理系统(源码+文档+演示+讲解)
  • 计算机专业知识【深入理解 IP 地址与子网掩码:从 /27 到不同 CIDR 表示】
  • FPGA DSP:Vivado 中带有 DDS 的 FIR 滤波器
  • adb shell setprop获取日志
  • 解锁外观模式:Java 编程中的优雅架构之道
  • 【HeadFirst系列之HeadFirst设计模式】第6天之单件模式:独一无二的对象,如何优雅实现?
  • eBPF驱动的实时内核安全防护体系:构建零日漏洞免疫的云原生基础设施
  • Git介绍和使用
  • 使用爬虫获得亚马逊按关键字搜索商品的实战指南
  • qt:输入控件操作
  • Android Coil3缩略图、默认占位图placeholder、error加载错误显示,Kotlin(1)