提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      命令执行漏洞
      发布时间:2020-03-02 阅读次数: 267 次

      No.1

      漏洞描述


      命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令,命令执行漏洞属于高危漏洞之一。


      如PHP的命令执行漏洞主要是基于一些函数的参数过滤不足导致,可以执行命令的函数有system( )、exec( )、shell_exec( )、passthru( )、pcntl_execl( )、popen( )、proc_open( )等。当攻击者可以控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击。PHP执行命令是继承WebServer用户的权限,这个用户一般都有权限向Web目录写文件,可见该漏洞的危害性相当大。


      No.2

      漏洞危害


      •   继承Web服务器程序的权限,去执行系统命令或读写文件

      •   反弹shell

      •   控制整个网站,甚至控制整个服务器


      No.3

      漏洞产生的原因


      1.没有对用户输入进行过滤或过滤不严

       例如,没有过滤&、&&、|、||等连接符


      2.系统漏洞造成的命令执行

      bash破壳漏洞(CVE-2014-6271),该漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,如http、ssh和dhcp等。


      3.调用的第三方组件存在代码执行漏洞

      例如:

      php(system()、shell_exec()、exec()、eval())

      JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)

      ThinkPHP命令执行


      No.4

      常见危险函数


      1. Php代码相关

      •   eval()

      •   assert()

      •   preg_replace

      •   call_user_func()

      •   call_user_func_array()

      •   create_function

      •   array_map()


      2. 系统命令执行相关

      •   system()

      •   passthru()

      •   exec()

      •   pcntl_exec()

      •   shell_exec()

      •   popen()

      •   proc_open()

      •  `(反单引号)

      •   ob_start()


      No.5

      漏洞利用


      漏洞利用_1


      访问:http://127.0.0.1/test.php?cmd=127.0.0.1;pwd

      也就是执行了“pwd”命令


      漏洞利用_2


      访问:http://127.0.0.1/test.php?fun=system&par=whoami

      其实就相当于执行了system"whoami"


      漏洞利用_3


      访问:http://127.0.0.1/test.php?code=phpinfo();


      No.6

       防范措施


      1. PHP下禁用高危系统函数
      找到php.ini,查找到disable_functions,添加禁用的函数名

      2. 参数的值尽量使用引号包括,并在拼接前调用addslashes进行转义。

      3. 不执行外部的应用程序或命令
      尽量使用自定义函数或函数库实现外部应用程序或命令的功能。在执行systemeval等命令执行功能的函数前,要确认参数内容。

      4. 使用escapeshellarg函数处理相关参数
      escapeshellarg函数会将用户引起参数或命令结束的字符进行转义,如单引号"'"会被转义为"’",双引号“””会被转义为""",分号";"会被转义为";",这样escapeshellarg会将参数内容限制在一对单引号或双引号里面,转义参数中包括的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的。

      5. 使用safe_mode_exec_dir指定可执行的文件路径
      php.ini文件中的safe_mode设置为On,然后将允许执行的文件放入一个目录,并使用safe_mode_exec_dir指定这个可执行的文件路径。这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败。

      转自杭州美创科技有限公司公众号,如需二次转载,请联系marketing@mchz.com.cn

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部