码迷,mamicode.com
首页 > 其他好文 > 详细

安全性测试入门(二):Command Injection命令行注入攻击和防御

时间:2019-10-12 13:07:01      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:白名单   linu   ping   post   ip地址   src   入门   遍历数组   logs   

安全性测试入门(二):Command Injection命令行注入攻击和防御

本篇继续对于安全性测试话题,结合DVWA进行研习。

Command Injection:命令注入攻击。

 技术图片

 

1. Command Injection命令注入

命令注入是通过在应用中执行宿主操作系统的命令,来达到破坏目的的一种攻击方式。如果我们的应用程序将不安全的用户输入传递给了系统命令解析器(shell),那么命令攻击就有可能发生。

通常来说,由应用程序传递操作系统命令会赋有和应用一样的权限,所以如果没有合理防御机制会给系统带来很大危害。命令注入攻击漏洞是PHP应用程序中常见的漏洞之一。

命令注入和代码注入不同,代码注入的目的在于将外部代码注入应用程序本身,并随程序执行;命令攻击的对象是服务器的宿主机。

 

DVWA的相应模块中,有如下功能:应用提供了一个用来ping对象主机的功能。正常情况下,输入IP地址,返回命令结果。

技术图片

在DVWA最低防御级别下,尝试进行攻击。

由于在windows cmd和linux shell条件下,都可以通过&&来串行执行命令,我们附上dir命令执行后:

技术图片

可以看到dir命令被执行,并且打印出了其结果。

如果我们用更复杂的命令附在以上命令之后,基本都可以执行,包括创建删除文件等等,可以对宿主系统造成非常大的危害。

 

2. 防御机制

 分别对比DVWA4个安全级别的后台核心代码:

Low:

代码使用shell_exec将用户输入执行ping命令,基本没有任何防御。

技术图片

Medium:

使用黑名单机制,替换掉如“&&”和“;”这样的命令符号。但是这样简单的黑名单是很容易绕过的,比如“|”管道符就没有屏蔽。

技术图片

High:

完善了黑名单机制,筛除了更多字符,但仍有可能绕开。

技术图片

Impossible:

使用白名单机制替换掉黑名单,将用户输入的字符串重组为数组,依次遍历数组内元素,删除其中所有的非数字和“.”。这样就达到了防御命令注入的目的。

 技术图片

 

安全性测试入门(二):Command Injection命令行注入攻击和防御

标签:白名单   linu   ping   post   ip地址   src   入门   遍历数组   logs   

原文地址:https://www.cnblogs.com/ht22ht22/p/11660627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!