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


Memcached是一套分布式的高速緩存系統。它以Key-Value(鍵值對)形式將數據存儲在內存中,這些數據通常是應用讀取頻繁的。正因為內存中數據的讀取遠遠大於硬盤,因此可以用來加速應用的訪問。本文和大家分享的是Memcache中未授權訪問漏洞利用及修復相關知識,希望對大家學習Memcache有所幫助。

  漏洞成因:

由於memcached安全設計缺陷,客戶端連接memcached服務器后 無需認證就 可讀取、修改服務器緩存內容。

漏洞影響:

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

  不同的是,在處理 前端用戶直接輸入的數據時一般會接受更多的安全校驗,而從memcached中讀取的數據則更容易被開發者認為是可信的,或者是已經通過安全校驗的,因此更容易導致安全問題。

  由此可見,導致的二次安全漏洞類型一般 由memcached數據使用的位置(XSS通常稱之為sink)的不同而不同, 如:

  (1)緩存數據未經過濾直接輸出可導致XSS

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

  (3) 緩存數據 存儲敏感信息(如:用戶名、密碼),可以通過讀取操作直接泄漏;

  (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 常用命令及使用說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM