天天看點

關于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指令,正好又會在指令中調用環境變量設定函數。如CGI、DHCP等。

下面以CGI為例,說明這一漏洞攻擊的過程。

CGI相關的解析HTTP請求的過程如下:

1、Linux WEB Server一般可以提供CGI接口,允許遠端執行Bash指令;

2、對于HTTP頭部,CGI腳本解析器會将其當作環境變量,調用bash的env相關函數設定到臨時環境變量中;

3、HTTP協定允許發送任意用戶端自定義的HTTP頭部;

4、這樣就産生了一個完整的可供Bash指令注入的場景,用戶端故意發送構造好的帶攻擊指令的HTTP頭部到服務端,服務端調用設定環境變量的函數,直接執行了用戶端指定的頭部裡面的指令。并且還會将結果一并傳回給用戶端。

攻擊過程為:

1、用戶端構造HTTP頭部,包含内容為:

Httpheader=’(){:;}; echo vulnerable’

2、用戶端發送該頭部到Linux Web Server,接收到該頭部後,CGI将調用Bash的env把該HTTP頭部作為臨時變量設定到系統環境變量中;

3、Echo vulnerable将被執行(跳開權限檢查)

以下文字摘取并翻譯自:

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

Shellshock對DHCP服務攻擊流程

DHCP伺服器處理流程:

1、DHCP Server接收到Linux Client的Discover包後,建構Offer包,裡面包含有IP位址、子網路遮罩等參數,其中額外Option中,有一個114号的參數,代表Url參數;

2、Linux Client接收到該Offer後,經過Request、Ack後,将調用Bash對端口以相關參數指派,其中Option 114後面的字元串作為環境變量。

3) 該參數的字元串将被越界指令。

SSH因其AcceptEnv、TERM、SSH_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

可以看到,以函數溢出形式調用echo回顯時,echo指令被調用了。

另外還有一種二次認證情況下繞過第二次認證的漏洞,這裡就不詳細列舉了。

上述三個漏洞已被CVE-2014-6271所修複。

針對上述影響,企業需要做好來自上述已知攻擊的預防工作。

(一)及時更新更新檔,特别是已經暴率出來的CVE-2014-6271,必須盡快部署。

(二)更新防火牆、IPS、IDS規則庫,盡早發現攻擊源并做好防範;

(三)控制通路上述應用的用戶端應用。

(四)網絡裝置安全部署:

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、針對Web和SSH的漏洞,目前而言隻能通過IDS、IPS進行防範。目前在網絡層面唯一可以做的,是限制非法工作站的接入:

[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

交換機則使用通路控制清單進行配置。

本文轉自 gole_huang 51CTO部落格,原文連結:http://blog.51cto.com/golehuang/1563066