Author: atiger77@Mottoin Team

來源:http://www.mottoin.com/92742.html

前言

12月份要要給公司同學做安全技術分享,有一塊是講常見服務的漏洞,網上的漏洞檢測和修復方案寫都比較散,在這里一起做一個整合,整理部分常見服務最近的漏洞和使用上的安全隱患方便有需要的朋友查看。如文章有筆誤的地方請與我聯系 WeChat:atiger77

目錄

1.內核級別漏洞

Dirty COW

2.應用程序漏洞

Nginx
Tomcat
Glassfish
Gitlab
Mysql
Struts2
ImageMagick
...

3.應用安全隱患

SSH
Redis
Jenkins
Zookeeper
Zabbix   
Elasticsearch
Docker
...

4.總結

漏洞檢測&修復方法

1.內核級別漏洞

Dirty COW臟牛漏洞,Linux 內核內存子系統的 COW 機制在處理內存寫入時存在競爭,導致只讀內存頁可能被篡改。

影響范圍:Linux kernel >= 2.6.22

漏洞影響:低權限用戶可以利用該漏洞寫入對自身只讀的內存頁(包括可寫文件系統上對該用戶只讀的文件)并提權至 root

PoC參考:

漏洞詳情&修復參考:

這個漏洞對于使用linux系統的公司來說是一定要修復的,拿web服務舉例,我們使用一個低權限用戶開放web服務當web被攻擊者掛了shell就可以使用exp直接提權到root用戶。目前某些云廠商已經在基礎鏡像中修復了這個問題但是對于之前已創建的主機需要手動修復,具體修復方案可以參考長亭的文章。

2.應用程序漏洞

Nginx

Nginx是企業中出現頻率最高的服務之一,常用于web或者反代功能。11月15日,國外安全研究員Dawid Golunski公開了一個新的Nginx漏洞(CVE-2016-1247),能夠影響基于Debian系列的發行版。

影響范圍:

  • Debian: Nginx1.6.2-5+deb8u3

  • Ubuntu 16.04: Nginx1.10.0-0ubuntu0.16.04.3

  • Ubuntu 14.04: Nginx1.4.6-1ubuntu3.6

  • Ubuntu 16.10: Nginx1.10.1-0ubuntu1.1

漏洞詳情&修復參考:

這個漏洞需要獲取主機操作權限,攻擊者可通過軟鏈接任意文件來替換日志文件,從而實現提權以獲取服務器的root權限。對于企業來說如果nginx部署在Ubuntu或者Debian上需要查看發行版本是否存在問題即使打上補丁即可,對于RedHat類的發行版則不需要任何修復。

Tomcat

Tomcat于10月1日曝出本地提權漏洞CVE-2016-1240。僅需Tomcat用戶低權限,攻擊者就能利用該漏洞獲取到系統的ROOT權限。

影響范圍:

  • Tomcat 8 <= 8.0.36-2

  • Tomcat 7 <= 7.0.70-2

  • Tomcat 6 <= 6.0.45+dfsg-1~deb8u1

受影響的系統包括Debian、Ubuntu,其他使用相應deb包的系統也可能受到影響

漏洞詳情&修復參考:

CVE-2016-4438這一漏洞其問題出在Tomcat的deb包中,使 deb包安裝的Tomcat程序會自動為管理員安裝一個啟動腳本:/etc/init.d/tocat* 利用該腳本,可導致攻擊者通過低權限的Tomcat用戶獲得系統root權限。

實現這個漏洞必須要重啟tomcat服務,作為企業做好服務器登錄的權限控制,升級有風險的服務可避免問題。

當然在企業中存在不少部署問題而導致了Tomcat存在安全隱患,運維部署完環境后交付給開發同學,如果沒有刪除Tomcat默認的文件夾就開放到了公網,攻擊者可以通過部署WAR包的方式來獲取機器權限。

Glassfish

Glassfish是用于構建 Java EE 5應用服務器的開源開發項目的名稱。它基于 Sun Microsystems 提供的 Sun Java System Application Server PE 9 的源代碼以及 Oracle 貢獻的 TopLink 持久性代碼。低版本存在任何文件讀取漏洞。

影響范圍:Glassfish4.0至4.1

修復參考:升級至4.11或以上版本

PoC參考:

http://1.2.3.4:4848/theme/META-INF/%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./domains/domain1/config/admin-keyfile

因為公司有用到Glassfish服務,當時在烏云上看到PoC也測試了下4.0的確存在任何文件讀取問題,修復方法也是升級到4.11及以上版本。

Gitlab

Gitlab是一個用于倉庫管理系統的開源項目。含義使用Git作為代碼管理工具,越來越多的公司從SVN逐步移到Gitlab上來,由于存放著公司代碼,數據安全也變得格外重要。

影響范圍:

  • 任意文件讀取漏洞(CVE-2016-9086): GitLab CE/EEversions 8.9, 8.10, 8.11, 8.12, and 8.13

  • 任意用戶authentication_token泄露漏洞: Gitlab CE/EE versions 8.10.3-8.10.5

漏洞詳情&修復參考:

互聯網上有不少公司的代碼倉庫公網可直接訪問,有些是歷史原因有些是沒有考慮到安全隱患,對于已經部署在公網的情況,可以讓Gitlab強制開啟二次認證防止暴力破解這里建議使用Google的身份驗證,修改默認訪問端口,做好acl只允許指定IP進行訪問。

Mysql

Mysql是常見的關系型數據庫之一,翻了下最新的漏洞情況有CVE-2016-6662和一個Mysql代碼執行漏洞。由于這兩個漏洞實現均需要獲取到服務器權限,這里就不展開介紹漏洞有興趣的可以看下相關文章,主要講一下Mysql安全加固。

漏洞詳情&修復參考:

在互聯網企業中Mysql是很常見的服務,我這邊提幾點Mysql的安全加固,首先對于某些高級別的后臺比如運營,用戶等能涉及到用戶信息的可以做蜜罐表。在項目申請資源的時候就要做好權限的劃分,我們是運維同學保留最高權限,給開發一個只讀用戶和一個開發權限的用戶進行使用,密碼一律32位,同時指定機器登錄數據庫,刪除默認數據庫和數據庫用戶。

找了一篇還不錯的加固文章提供參考:

Struts2

Struts2是一個優雅的,可擴展的框架,用于創建企業準備的Java Web應用程序。出現的漏洞也著實的多每爆一個各大漏洞平臺上就會被刷屏。

漏洞詳情&修復參考:

在線檢測平臺:

記得有一段時間Struts2的漏洞連續被爆出,自動化的工具也越來越多S2-032,S2-033,S2-037,烏云首頁上都是Struts2的漏洞,有國企行業的有證券公司的使用者都分分中招,如果有使用的話還是建議升級到最新穩定版。

ImageMagick

ImageMagick是一個圖象處理軟件。它可以編輯、顯示包括JPEG、TIFF、PNM、PNG、GIF和Photo CD在內的絕大多數當今最流行的圖象格式。

影響范圍:

  • ImageMagick 6.5.7-8 2012-08-17

  • ImageMagick 6.7.7-10 2014-03-06

  • 低版本至6.9.3-9released 2016-04-30

漏洞詳情&修復參考:

這個漏洞爆出來時也是被刷屏的,各大互聯網公司都紛紛中招,利用一張構造的圖片使用管道服符讓其執行反彈shell拿到服務器權限,產生原因是因為字符過濾不嚴謹所導致的執行代碼.對于文件名傳遞給后端的命令過濾不足,導致允許多種文件格式轉換過程中遠程執行代碼。

3.應用安全隱患

為了不加長篇幅長度,加固具體步驟可以自行搜索。

SSH

之前有人做過實驗把一臺剛初始化好的機器放公網上看多久會遭受到攻擊,結果半個小時就有IP開始爆破SSH的密碼,網上通過SSH弱密碼進服務器的案列也比比皆是。

安全隱患:

弱密碼

加固建議:

 禁止使用密碼登錄,更改為使用KEY登錄
 禁止root用戶登錄,通過普通權限通過連接后sudo到root用戶
 修改默認端口(默認端口為22)

Redis

Redis默認是沒有密碼的,在不需要密碼訪問的情況下是非常危險的一件事,攻擊者在未授權訪問 Redis 的情況下可以利用 Redis 的相關方法,可以成功在 Redis 服務器上寫入公鑰,進而可以使用對應私鑰直接登錄目標服務器。

安全隱患:

未認證訪問
開放公網訪問

加固建議:

 禁止把Redis直接暴露在公網
 添加認證,訪問服務必須使用密碼

Jenkins

Jenkins在公司中出現的頻率也特別頻繁,從集成測試到自動部署都可以使用Jenkins來完成,默認情況下Jenkins面板中用戶可以選擇執行腳本界面來操作一些系統層命令,攻擊者通過暴力破解用戶密碼進腳本執行界面從而獲取服務器權限。

安全隱患:

登錄未設置密碼或密碼過于簡單
開放公網訪問

加固建議:

 禁止把Jenkins直接暴露在公網
 添加認證,建議使用用戶矩陣或者與JIRA打通,JIRA設置密碼復雜度

Zookeeper

分布式的,開放源碼的分布式應用程序協調服務;提供功能包括:配置維護、域名服務、分布式同步、組服務等。Zookeeper默認也是未授權就可以訪問了,特別對于公網開放的Zookeeper來說,這也導致了信息泄露的存在。

安全隱患:

開放公網訪問
未認證訪問

加固建議:

 禁止把Zookeeper直接暴露在公網
 添加訪問控制,根據情況選擇對應方式(認證用戶,用戶名密碼,指定IP)

Zabbix

Zabbix為運維使用的監控系統,可以對服務器各項指標做出監控報警,默認有一個不需要密碼訪問的用戶(Guest)。可以通過手工SQL注入獲取管理員用戶名和密碼甚至拿到session,一旦攻擊者獲取Zabbix登錄權限,那么后果不堪設想。

安全隱患:

開放公網訪問
未刪除默認用戶
弱密碼

加固建議:

 禁止把Zabbix直接暴露在公網
 刪除默認用戶
 加強密碼復雜度

Elasticsearch

Elasticsearch是一個基于Lucene的搜索服務器。越來越多的公司使用ELK作為日志分析,Elasticsearch在低版本中存在漏洞可命令執行,通常安裝后大家都會安裝elasticsearch-head方便管理索引,由于默認是沒有訪問控制導致會出現安全隱患。

安全隱患:

開放公網訪問
未認證訪問
低版本漏洞

加固建議:

 禁止把Zabbix直接暴露在公網
 刪除默認用戶
 升級至最新穩定版
 安裝Shield安全插件

Docker

容器服務在互聯網公司中出現的頻率呈直線上升,越來越多的公司使用容器去代替原先的虛擬化技術,之前專門做過Docker安全的分析,從 Docker自身安全, DockerImages安全和Docker使用安全隱患進行展開,鏈接:https://toutiao.io/posts/2y9xx8/preview

之前看到一個外國哥們使用臟牛漏洞在容器中運行EXP跳出容器的視頻,具體我還沒有復現,如果有復現出來的大家一起交流下~

安全隱患:

Base鏡像漏洞
部署配置不當

加固建議:

手動升級Base鏡像打上對應補丁
配置Swarm要當心

4.總結

當公司沒有負責安全的同學,做到以下幾點可以在一定程度上做到防護:

  1. 關注最新漏洞情況,選擇性的進行修復;
  2. 梳理內部開放服務,了解哪些對外開放能內網訪問的絕不開放公網;
  3. 開放公網的服務必須做好訪問控制;
  4. 避免弱密碼;避免弱密碼;避免弱密碼;

以上內容只是理想狀態,實際情況即使有安全部門以上內容也不一定能全部做到,業務的快速迭代,開發安全意識的各不相同,跨部門溝通上出現問題等等都會導致出現問題,這篇文章只羅列了部分服務,還有很多服務也有同樣的問題,我有空會不斷的更新。 WeChat:atiger77


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.jmbmsq.com/126/