五、命令劫持(command Injection)Low-Medium-High

Ant大约 2 分钟

五、命令劫持(command Injection)Low-Medium-High

一、漏洞原理

命令劫持的原理比较简单,平台在提供命令执行功能时没有对复合语句的连接符、管道符等特殊字符做过滤,攻击者可以利用这些字符构造攻击语句,提交到服务器后可以执行多条命令。

二、基础知识

【Windows】

  • 连接符
&         前后的语句按先后顺序执行,没有逻辑关系
&&      前面的语句执行成功才能执行后面的语句
||      前面的语句执行失败才能执行后面的语句
  • 管道符
|   前面执行的结果作为后面语句的输入

【Linux】

Linux操作系统中的连接符与windows基本相同,除了【Windows】部分列举的几种连接符外,Linux还支持使用分号(;)连接多个命令,没有逻辑关系,按顺序依次执行各命令。

三、漏洞利用过程

操作演示部分使用windows操作系统作为DVWA的服务器,所以演示使用的命令为windows连接符。

  • Low级别

Low级别没有对连接符做任何限制,可以使用任意连接符连接多个命令执行。

示例:127.0.0.1 & whoami (查询服务器当前登录用户)

Low级别命令注入
Low级别命令注入
  • Medium级别

通过源码可知Medium级别过滤掉了“&&”、“;”两个符号,但是我们依然可以使用其他连接符进行多条命令的执行。

示例:127.0.0.0 || whoami (使用127.0.0.0地址使第一个命令执行失败,然后执行whoami命令)

Medium级别命令注入
Medium级别命令注入
  • High级别

通过源码可知High级别过滤掉了常见的连接符,但是并未对“|”进行过滤,而是过滤掉了“| ”(后面有一个空格),使得我们依然可以直接使用“|”(后面无空格)进行多命令执行。

High级别符号过滤源码
High级别符号过滤源码

示例:127.0.0.1 |whoami (没有使用第一个命令执行的结果,而是直接执行whoami命令)

High级别命令注入
High级别命令注入

四、防御方法

命令注入漏洞的利用很直接,就是利用常见的连接符、管道符等进行多个命令的连接,实现多个命令的执行。对这种漏洞的防御可采用连接符、管道符过滤的方式进行防御,关键是过滤时不要有遗漏。

Loading...