Memcache未受權訪問漏洞利用及修復

Memcached是一套分佈式的高速緩存系統。它以Key-Value(鍵值對)形式將數據存儲在內存中,這些數據一般是應用讀取頻繁的。正由於內存中數據的讀取遠遠大於硬盤,所以能夠用來加速應用的訪問。本文和你們分享的是Memcache中未受權訪問漏洞利用及修復相關知識,但願對你們學習Memcache有所幫助。html

  漏洞成因:前端

因爲memcached安全設計缺陷,客戶端鏈接memcached服務器後 無需認證就 可讀取、修改服務器緩存內容。vim

漏洞影響:

  除memcached中數據可被直接讀取泄漏和惡意修改外,因爲memcached中的數據像正常網站用戶訪問提交變量同樣會被後端代碼處理,當處理代碼存在缺陷時會再次致使不一樣類型的安全問題。後端

  不一樣的是,在處理 前端用戶直接輸入的數據時通常會接受更多的安全校驗,而從memcached中讀取的數據則更容易被開發者認爲是可信的,或者是已經經過安全校驗的,所以更容易致使安全問題。緩存

  因而可知,致使的二次安全漏洞類型通常 由memcached數據使用的位置(XSS一般稱之爲sink)的不一樣而不一樣, 如:安全

  (1)緩存數據未通過濾直接輸出可致使XSS服務器

  (2) 緩存數據 未通過濾代入拼接的SQL注入查詢語句可致使SQL注入;網絡

  (3) 緩存數據 存儲敏感信息(如:用戶名、密碼),能夠經過讀取操做直接泄漏;tcp

  (4) 緩存數據 未通過濾直接經過system()eval()等函數處理可致使命令執行;分佈式

  (5) 緩存數據 未通過濾直接在header()函數中輸出,可致使CRLF漏洞(HTTP響應拆分)。

  … …

  漏洞利用:

  漏洞的利用根據所形成二次漏洞的不一樣,可在緩存變量中構造相應的payload

  針對memcached未受權訪問漏洞緩存數據的抓取,可以使用 go-derper工具。

  注: memcached服務器基本操做及go-derper工具使用方法參見連接。

  漏洞攻擊DEMO

  http://niiconsulting.com/checkmate/2013/05/memcache-exploit/


 

  漏洞檢測:

  1、登陸機器執行netstat -an | more命令查看端口監聽狀況。回顯0.0.0.0:11211表示在全部網卡進行監聽,存在memcached 未受權訪問漏洞。

  2telnet IP 11211, 或 nc -vv11211,提示鏈接成功表示漏洞存在(telnet鏈接成功後是一個黑框,執行Memcached命令stats

 

memcache stats命令詳解

 

參數 描述
pid 7862 memcache服務器進程ID
uptime 12617972 服務器已運行秒數
time 1320756409 服務器當前Unix時間戳
version 1.4.5 memcache版本
pointer_size 64 操做系統指針大小
rusage_user 1.731736 進程累計用戶時間
rusage_system 251.421778 進程累計系統時間
curr_connections 41 當前鏈接數量
total_connections 848 Memcached運行以來鏈接總數
connection_structures 46 Memcached分配的鏈接結構數量
cmd_get 164377 get命令請求次數
cmd_set 58617 set命令請求次數
cmd_flush 0 flush命令請求次數
get_hits 105598 get命令命中次數
get_misses 58779 get命令未命中次數
delete_misses 0 delete命令未命中次數
delete_hits 0 delete命令命中次數
incr_misses 0 incr命令未命中次數
incr_hits 0 incr命令命中次數
decr_misses 0 decr命令未命中次數
decr_hits 0 decr命令命中次數
cas_misses 0 cas命令未命中次數
cas_hits 0 cas命令命中次數
cas_badval 0 使用擦拭次數
auth_cmds 0 認證命令處理的次數
auth_errors 0 認證失敗數目
bytes_read 262113283 讀取總字節數
bytes_written 460023263 發送總字節數
limit_maxbytes 536870912 分配的內存總大小(字節)
accepting_conns 1 服務器是否達到過最大鏈接(0/1)
listen_disabled_num 0 失效的監聽數
threads 4 當前線程數
conn_yields 0 鏈接操做主動放棄數目
bytes 1941693 當前存儲佔用的字節數
curr_items 476 當前存儲的數據總數
total_items 58617 啓動以來存儲的數據總數
evictions 0 LRU釋放的對象數目
reclaimed 48830 已過時的數據條目來存儲新數據的數目

  3、使用端口掃描工具nmap進行遠程掃描:nmap -sV -p 11211 --script=memcached-info IP

  11211/tcpopen memcached

  | memcached-info:

  | ProcessID 18568

  | Uptime 6950 seconds

  | Servertime SatDec 31 14:16:10 2011

  | Architecture 64 bit

  | UsedCPU (user) 0.172010

  | UsedCPU (system) 0.200012

  | Currentconnections 10

  | Totalconnections 78

  | Maximumconnections 1024

  | TCPPort 11211

  | UDPPort 11211

  |_ Authentication no

  漏洞修復:

  1、配置memcached監聽本地迴環地址127.0.0.1

  [root@local ~]# vim /etc/sysconfig/memcached

  OPTIONS="-l 127.0.0.1" #設置本地爲監聽

  [root@local ~]# /etc/init.d/memcached restart #重啓服務

  2、當memcached 配置爲監聽內網IP或公網IP時, 使用主機防火牆(iptalbes、 firewalld等)和 網絡防火牆對memcached服務端口 進行過濾。


參考:

http://blog.nsfocus.net/

http://blog.csdn.net/qq_32506555/article/details/53581809

http://gdd.gd/1072.html

https://www.cnblogs.com/Alight/p/3546400.html

memcached 經常使用命令及使用說明

相關文章
相關標籤/搜索