五、命令劫持(command Injection)Low-Medium-High
大约 2 分钟
五、命令劫持(command Injection)Low-Medium-High
一、漏洞原理
命令劫持的原理比较简单,平台在提供命令执行功能时没有对复合语句的连接符、管道符等特殊字符做过滤,攻击者可以利用这些字符构造攻击语句,提交到服务器后可以执行多条命令。
二、基础知识
【Windows】
- 连接符
& 前后的语句按先后顺序执行,没有逻辑关系
&& 前面的语句执行成功才能执行后面的语句
|| 前面的语句执行失败才能执行后面的语句
- 管道符
| 前面执行的结果作为后面语句的输入
【Linux】
Linux操作系统中的连接符与windows基本相同,除了【Windows】部分列举的几种连接符外,Linux还支持使用分号(;)连接多个命令,没有逻辑关系,按顺序依次执行各命令。
三、漏洞利用过程
操作演示部分使用windows操作系统作为DVWA的服务器,所以演示使用的命令为windows连接符。
- Low级别
Low级别没有对连接符做任何限制,可以使用任意连接符连接多个命令执行。
示例:127.0.0.1 & whoami (查询服务器当前登录用户)
- Medium级别
通过源码可知Medium级别过滤掉了“&&”、“;”两个符号,但是我们依然可以使用其他连接符进行多条命令的执行。
示例:127.0.0.0 || whoami (使用127.0.0.0地址使第一个命令执行失败,然后执行whoami命令)
- High级别
通过源码可知High级别过滤掉了常见的连接符,但是并未对“|”进行过滤,而是过滤掉了“| ”(后面有一个空格),使得我们依然可以直接使用“|”(后面无空格)进行多命令执行。
示例:127.0.0.1 |whoami (没有使用第一个命令执行的结果,而是直接执行whoami命令)
四、防御方法
命令注入漏洞的利用很直接,就是利用常见的连接符、管道符等进行多个命令的连接,实现多个命令的执行。对这种漏洞的防御可采用连接符、管道符过滤的方式进行防御,关键是过滤时不要有遗漏。
Loading...