命令行注入

原理:利用可以调用系统命令的web应用,通过构造特殊命令字符串的方式,把恶意代码输入一个编辑域来改变网页动态生成的内容,最终实现本应在服务端才能工作的系统命令。

例子:

打开dvwa的靶场,把安全级别调为low级别的,打开Command Injection,要我们输入ip,ping命令操作

DVWA漏洞源码分析——(二)Command Injection

直接查看源码

DVWA漏洞源码分析——(二)Command Injection
发现:
获取post进来的数据直接进行一个系统的判断,这里输入的会(本次靶场是在win系统上面)与’ping’拼接在一起,然后通过当做命令执行,并且将完整的输出以字符串的方式返回输,所以我们通过&&来串行执行命令,这里我附上dir命令执行后:

DVWA漏洞源码分析——(二)Command Injection
可以看到dir命令直接被执行,并且输出结果,如果我们用复杂的命令附在以上命令之后,基本可以执行,因为这里没有过滤

漏洞修复建议:

1、 外部输入的参数需要做输入校验,对&|<>等特殊符号需要做过滤
2、 外部拼凑的执行命令不可以直接写入文件中执行
3、 最后执行者不是root,或者root权限的用户
4、 构造输入超过该点功能限制的命令(无法直接输入时,使用burpsuite拦截请求后输入),如mkdir,rm file等
5、 黑名单检查(但是这种方式攻击者还是可以找到黑名单上面没有的花样,或者把语句进行一个变化,进行攻击,不用怀疑)
6、 白名单与安全执行模式匹配, 如果有问题的数据不匹配任何安全模式,这是不允许的。 这危险的构造,因为任何新的(恶意)结构的新变化,不符合安全的解决了这个问题一种是系统自动封锁。 一个共同的方式来实现白名单是相匹配的输入与安全的命令格式的正则表达式表示。 然而,复杂的正则表达式可以写和解释。

相关文章:

  • 2021-07-16
  • 2021-07-01
  • 2022-12-23
  • 2021-09-05
  • 2021-12-14
  • 2022-12-23
  • 2021-04-14
猜你喜欢
  • 2021-05-08
  • 2021-10-10
  • 2022-01-06
  • 2021-11-12
  • 2021-11-23
  • 2021-06-10
  • 2021-06-21
相关资源
相似解决方案