DVWA漏洞靶场-命令执行(Command Injection)
漏洞原理
由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。命令注入攻击中WEB服务器没有过滤类似system(),eval(),exec()等函数是该漏洞攻击成功的最主要原因。
命令执行分隔符:
windows:&& || &
linux: && || & ;
| 可作为管道符pipe用于命令执行,其实根本是pipe的作用
&&:从前往后按顺序执行,遇到出错的命令,后面的不执行
||: 从前往后按顺序执行,遇到成功的命令,后面的不执行
&: 同时执行所有命令
利用:可尝试进行反弹shell,搭建服务执行wget下载webshell
1.low 级别
127.0.0.1 & ipconfig
执行成功
2.medium 级别
查看源码view-source
发现设置了黑名单,对 && ; 进行了过滤,替换成空
同上,单 & 或者 || 可绕过
3. high 级别
view-source:
进行了更加严格的过滤,注意,这里是对黑名单中所有字符进行替换,&& 也会被替换两次
所有观察 ‘| ’ 过滤了 | + 空格,使用无空格 ’|‘ 绕过,即可执行成功
总结
根据impossible,防御措施,根据输入需要进行严格过滤,类型白名单特征,而不是单单设置blacklist