天道酬勤

命令执行漏洞

##介绍

应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

##问题代码

<?php
echo system("ping -n 2 " . $_GET['ip']);
?>

##运行代码

按照正常情况,用户提交ip地址,只能进行一个简单的ping命令。

但是,若用户使用管道符”|” 提交一些恶意的命令,则会造成不想发生的结果。

由上图可见, 没有执行ping命令,而是执行了ipconfig的命令。

##Windows支持的管道符

“|”:直接执行后面的语句。

“||”:如果前面执行的语句执行出错,则执行后面的语句,前面的语句只能为假。

“&”:如果前面的语句执行为错则直接执行后面的语句,前面的语句可真可假。

“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。

##Linux系统支持的管道符

“;”:执行完前面的语句再执行后面的。

“|”:显示后面语句的执行结果。

“||”:当前面的语句执行出错时,执行后面的语句。

“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。

“&&”:如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真。

##漏洞修复建议

  1. 尽量不要使用命令执行函数。
  2. 客户端提交的动态变量在进行执行命令函数前要做好过滤和检测。
  3. 在使用动态函数之前,确保使用的函数是指定的函数之一。
  4. 对PHP语言来说,不能完全控制的危险函数最好不要使用。
赞(0) 打赏
未经允许不得转载:HackerGu‘s Blog » 命令执行漏洞
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注黑客技术的研究

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏