红帽:Bash 通过特殊环境变量进行代码注入攻击

Posted OSC开源社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红帽:Bash 通过特殊环境变量进行代码注入攻击相关的知识,希望对你有一定的参考价值。

Bash 或Bourne again shell,是一个类UNIX shell 脚本,可能是任何Linux系统中最常见的安装组件。从1980年诞生到现在,bash 已经从一个简单的基于终端的命令解释器演进到诸多其他的奇特用途。


在Linux中,环境变量影响着系统软件。它们都是由一个名称和对名称的赋值构成。bash shell也是如此。在程序后台运行bash shell很常见。通常用于向远程用户提供一个shell(例如通过ssh,telnet),为CGI脚本提供解析器(例如Apache),甚至提供有限 的命令执行支持(例如git)。


回到主题,你可以在调用bash shell前使用特殊加工的值创建环境变量,这个事实暴露了系统的脆弱。这些变量可以包含代码,随着shell调用执行。这些加工过的变量名并没有什么,主要是它们的内容。在以下的语境中,脆弱暴露无遗:

  • ForceCommand是 sshd中使用的环境变量,它向远程用户提供有限的命令执行权限。这个缺陷可以被绕过并提供任意的命令执行权限。一些Git和Subversion部署使 用这样的shell。OpenSSH的常规使用不受影响,因为用户已经进入了shell。

  • 如果CGI脚本使用bash或者产生大量的子shell,使用mod_cgi或mod_cgid的Apache服务器将收到影响。这些子shell可能被 C语言的system/popen使用,可能被Python的os.system/os.popen使用,可能被运行在CGI模式下的php的 system/exec使用,可能被使用shell的Perl中的open/system使用.

  • 执行mod_php的PHP脚本即使大量产生子shell也不会收到影响。

  • DHCP客户端调用shell脚本以配置系统,使用来自潜在的恶意服务器的值。这将允许任意的命令运行,尤其作为DHCP客户机上的root.

  • 各式各样的守护进程和SUID/特权程序可能使用用户设置以及被用户影响的环境变量执行shell脚本,可允许任意的命令运行。

  • 任意可能陷入shell险境的其他应用,或是运行shell脚本将bash作为解释器的应用。不引入环境变量的shell脚本是安全的,即使它们处理不安全的内容并存储在(不引入的)shell变量里并打开子shell。


更多内容请看点击阅读原文。


-----------------------------------------------------------

----------------------------—————————————————



以上是关于红帽:Bash 通过特殊环境变量进行代码注入攻击的主要内容,如果未能解决你的问题,请参考以下文章

Shellshock远程命令注入(CVE-2014-6271)漏洞复现

Bash安全缺陷验证及修复方法

ASP.ENT中做登陆怎么防止注入攻击?

NoSQL注入

SQL注入问题

如何检测SQL注入技术以及跨站脚本攻击