关于ShellShock对企业网络服务器的攻击以及防范手段

一、ShellShock对Web Server的影响

下述文字节选自:

http://codeway.co/2014%E5%B9%B49%E6%9C%88%E6%9B%9D%E5%87%BA%E7%9A%84bash-shellshock%E6%BC%8F%E6%B4%9E/

Bash曝出在调用环境变量设置命令或者接口时,可以任意执行Bash命令语句,绕过用户权限的限制。基本原理是:

$ env x='() { :;}; echo vulnerable'

env命令在执行赋值语句时未检查函数的边界,导致函数之后的内容也被执行。运行如上代码,屏幕如果显示“vulnearable”,那么系统的bash就存在该问题。目前确知的是,4.3版本之前的bash都存在该问题。该漏洞的代码为:CVE-2014-6271。目前存在一些场景允许远程执行Bash命令,正好又会在命令中调用环境变量设置函数。如CGIDHCP等。

下面以CGI为例,说明这一漏洞攻击的过程。

CGI相关的解析HTTP请求的过程如下:

1Linux WEB Server一般可以提供CGI接口,允许远程执行Bash命令;

2、对于HTTP头部,CGI脚本解析器会将其当作环境变量,调用bashenv相关函数设置到临时环境变量中;

3HTTP协议允许发送任意客户端自定义的HTTP头部;

4、这样就产生了一个完整的可供Bash命令注入的场景,客户端故意发送构造好的带攻击命令的HTTP头部到服务端,服务端调用设置环境变量的函数,直接执行了客户端指定的头部里面的命令。并且还会将结果一并返回给客户端。

攻击过程为:

1、客户端构造HTTP头部,包含内容为:

Httpheader=(){:;}; echo vulnerable

2、客户端发送该头部到Linux Web Server,接收到该头部后,CGI将调用Bashenv把该HTTP头部作为临时变量设置到系统环境变量中;

3、Echo vulnerable将被执行(跳开权限检查)

 

二、ShellShock对DHCP Server的影响

以下文字摘取并翻译自:

https://www.trustedsec.com/september-2014/shellshock-dhcp-rce-proof-concept/?utm_source=tuicool

ShellshockDHCP服务攻击流程

DHCP服务器处理流程:

1DHCP Server接收到Linux ClientDiscover包后,构建Offer包,里面包含有IP地址、子网掩码等参数,其中额外Option中,有一个114号的参数,代表Url参数;

2Linux Client接收到该Offer后,经过RequestAck后,将调用Bash对端口以相关参数赋值,其中Option 114后面的字符串作为环境变量。

3) 该参数的字符串将被越界命令。


 

三、ShellShock对SSH Daemon的影响

SSH因其AcceptEnvTERMSSH_ORIGINAL_COMMAND等环境变量受此漏洞影响。

~/.ssh/authorized_keys文件是SSH中用于记录强制命令(force command)及公钥的文件,这些force command被记录到SSH_ORIGINAL_Command变量中。当往该文件添加适当的命令后,SSH用户在登录后将执行上述命令。若该命令运行环境为Bash,则该漏洞似的用户登录后直接使用未授权的命令,然后再执行强制命令。例如:

sudo useradd -d /testuser -s /bin/bash testuser

sudo mkdir -p /testuser/.ssh

sudo sh -c "echo command=\\\"echo starting sleep; sleep 1\\\" $(cat ~/.ssh/id_rsa.pub) > /testuser/.ssh/authorized_keys"

sudo chown -R testuser /testuser

 

上述命令建立一个testuser用户,并在该用户的公钥文件中添加了sleep 1这条命令。

正常情况下,使用testuser登陆应该出现以下情况:

$ ssh testuser@localhost echo something else

starting sleep

echo回显命令无法执行。

 

以下是使用ShellShock漏洞执行的结果:

$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'

MALICIOUS CODE

starting sleep

可以看到,以函数溢出形式调用echo回显时,echo命令被调用了。

另外还有一种二次认证情况下绕过第二次认证的漏洞,这里就不详细列举了。

上述三个漏洞已被CVE-2014-6271所修复。

四、减少漏洞对企业业务的影响

针对上述影响,企业需要做好来自上述已知攻击的预防工作。

(一)及时更新补丁,特别是已经暴率出来的CVE-2014-6271,必须尽快部署。

(二)更新防火墙、IPSIDS规则库,尽早发现攻击源并做好防范;

(三)控制访问上述应用的客户端应用。

(四)网络设备安全部署:

1、针对DHCP Server的漏洞基本上要配合假冒DHCP Server来完成,可以通过DHCP Snooping进行防范。

(1)在交换机全局启用DHCP Snooping

Switch(config)#ip dhcp snooping

(2)在特定VLAN中启用DHCP SNOOPING

Switch(config)#ip dhcp snooping vlan VLAN-ID

(3)在可信端口启用信任模式:

Switch(config-if)ip dhcp snooping trust

2、针对WebSSH的漏洞,目前而言只能通过IDSIPS进行防范。目前在网络层面唯一可以做的,是限制非法工作站的接入:

[root@tp ~]# iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -d 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j DROP

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j DROP

[root@tp ~]# /etc/rc.d/init.d/iptables save

交换机则使用访问控制列表进行配置。


你可能感兴趣的:(linux,网络,服务器)