一、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