【Web安全】:命令注入


  • 撰稿|王聪丽
  • 编辑|代码审计团队
  • 信息收集|代码审计团队


1. 什么是命令注入

先来看个小视频,简单粗暴地认识一下命令注入👇
(😘欢迎关注我们的同名抖音账号@翼安研习社)
视频链接:https://mp.weixin.qq.com/s/i_YYg8kIj2atqw7dxJ3Mow

命令注入是指可以通过输入恶意参数破坏系统命令语句结构,从而执行不可信赖资源中的命令,或在不可信赖的环境中执行命令,导致程序以攻击者的名义执行恶意命令


2. 命令注入利用条件

  • web系统调用了执行命令的函数,例如exec、eval等。
  • 系统执行命令函数的参数可以通过外部输入或者可控。
  • 可控参数可拼接注入参数,并未进行参数校验。

3. 示例

构造命令示例如下:

String data  = System.getProperty("ADD");
String osCommand = "c:\\WINDOWS\\SYSTEM32\\cmd.exe /c dir "
Process process = Runtime.getRuntime().exec(osCommand + data);

利用命令注入漏洞发起攻击行为示意图如下:

在这里插入图片描述

图1 利用命令注入漏洞发起攻击行为

3. 表现形式

命令注入漏洞主要表现为以下两种形式:

  • 攻击者直接控制了所执行的命令,通过输入参数直接篡改执行命令。
  • 攻击者间接地控制了所执行的命令,通过输入参数篡改命令的环境。

4. 防御方式

  • 采用白名单,例如owsap提供的验证函数,或使用正则表达式进行过滤。
  • eval、exec、shell_exec等函数的参数不可控。
  • 在进入执行命令函数和方法前,对参数进行过滤、校验,对敏感字符进行转义。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值