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

命令执行漏洞 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

相关文章:

  • 数据结构——字符串匹配KMP
  • Linux(ubuntu) GPU CUDA 构建Docker镜像
  • 【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
  • Linux-C/C++《C/8、系统信息与系统资源》
  • 抓包工具是什么?
  • 深入解析浏览器渲染全流程:从URL输入到页面渲染的底层原理与性能优化(附实战代码)
  • Memcached和redis对比了解
  • Python—requests模块
  • excel导入Mysql中时间格式异常
  • 深度学习笔记—— GRU(Gated Recurrent Unit)
  • 【设计模式精讲】创建型模式之单例模式(饿汉式、懒汉式、双重校验、静态内部类、枚举)
  • Node IO操作
  • 【阮一峰】2.数组
  • vue3 input type=“file” 修改样式
  • 深入理解Zookeeper:分布式系统的协调者
  • 三、Three.js模型对象、材质
  • 网络运维学习笔记 012网工初级(HCIA-Datacom与CCNA-EI)某机构新增:GRE隧道与EBGP实施
  • 16Linux运维网络基础(02网络层次结构)
  • spring注解开发(纯注解开发模式)(2)
  • MobaXterm通过ssh远程连接Ubuntu的方法
  • wordpress 挂马 清除/泸州网站seo
  • 哪个网站可以付费做淘宝推广/成都自然排名优化
  • 郴州建设企业网站/搜索历史记录
  • 上海网站建设网页制作怎么样/如何获取热搜关键词
  • 大连专业app开发设计/网站优化排名提升
  • 云建站app/seo免费培训