• Home
  • About
    • tearorca photo

      tearorca

      Wishful thinking have to be willing to bet on clothing!

    • Learn More
    • Google+
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

命令注入漏洞

18 Aug 2019

Reading time ~1 minute

  • 命令注入漏洞
    • 漏洞简介
    • 漏洞成因
    • 漏洞利用
      • 链接命令符号
      • 漏洞测试
      • 漏洞利用
    • 漏洞防护
      • 黑名单防御
      • 白名单防御
    • 参考链接

命令注入漏洞

因为路由器的固件漏洞里面不只有二进制漏洞,还有比较多的web方面的漏洞,所以自己还是对web方向的漏洞进行简单的了解和学习。

漏洞简介

目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。当应用程序将不安全的用户提供的数据(表单、Cookie、HTTP表头等)传递给系统shell时,可能会产生命令注入漏洞。

漏洞成因

web服务器没有对用户提交的参数进行有效的检测过滤

操作系统允许一条语句在使用连接符和管道符后执行多条命令

漏洞利用

链接命令符号

command1&command2 无论command1是否执行成功都要执行command2

command1&&command2 只有command1执行成功后才执行command2

command1||command2 只有command1执行失败后才执行command2

command1|command2 将command1的执行结果传递给command2

在终端试一下。

漏洞测试

<?php 
 
if( isset( $_POST[ 'Submit' ]  ) ) { 
	// Get input 
	$target = $_REQUEST[ 'ip' ]; 
 
	// Determine OS and execute the ping command. 
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) { 
		// Windows 
		$cmd = shell_exec( 'ping  ' . $target ); 
	} 
	else { 
		// *nix 
		$cmd = shell_exec( 'ping  -c 4 ' . $target ); 
	} 
 
	// Feedback for the end user 
	echo "<pre>{$cmd}</pre>"; 
} 
 
?> 

上面的代码就有命令注入的漏洞,可以看到shell_exec函数的参数就是ping命令然后拼接了后面输入的ip所以,如果在ip后面用上前面的链接符号再加其他系统命令就可以被执行。

有的代码会加双引号来影响命令注入,如下面的代码在ping后面加了双引号,这就导致如果我们直接传递刚才的攻击语句就会失效,因为在双引号里,攻击语句变成了普通字符串。

$cmd = shell_exec( 'ping "' . $target . '"');

解决的办法是,我们也可以加个双引号,那么前后两个双引号就会直接闭合,不再影响攻击语句。或者可以用一个linux的特殊符号反引号,也叫倒引号:’`’。它具有命令替换的含义,在一个命令中如果出现反引号语句,会先执行反引号里面的内容,再执行外面内容。

漏洞利用

想要更好地利用这个漏洞,我们需要确定它是一个常规命令注入还是命令盲注。两者的区别在于,命令盲注不会在响应中返回命令的输出。常规的命令注入,将返回响应中执行命令的输出。通常sleep命令就可以为我们很好的判断。当然,除此之外你还可以使用更多的命令来进行验证,如执行id,hostname或whoami。服务器的主机名可用于确定受影响的服务器数量。

常规命令注入就是和上面演示的一样,直接可以看到结果,证明已经注入成功。但命令盲注就不会显示结果,不知道是否注入正确。所以可以用sleep命令进行测试,然后通过查看时间来测试是否成功利用。

漏洞防护

黑名单防御

也就是过滤敏感词,把上面的那些链接符号全部过滤了。但这种过滤可能会影响本身命令的使用。

白名单防御

限制了输入数据的格式,只有输入的格式跟白名单的一样才能通过验证,其他的都不行。这样就基本上杜绝了命令注入。

参考链接

https://www.freebuf.com/vuls/139924.html

https://www.freebuf.com/column/146503.html

https://blog.csdn.net/qq_40023447/article/details/81081329



Share Tweet +1