Memcached 未授權訪問漏洞及加固


memcached是一套分布式的高速緩存系統。它以Key-Value(鍵值對)形式將數據存儲在內存中,這些數據通常是應用讀取頻繁的。正因為內存中數據的讀取遠遠大於硬盤,因此可以用來加速應用的訪問。

漏洞成因:

由於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 未授權訪問漏洞。

       2、telnet  <target>  11211, 或 nc -vv  <target>  11211,提示連接成功表示漏洞存在。

    TELNET:
 
        ------------------------------------------------------------
 
        local% telnet x.x.x.x 11211
 
        Trying x.x.x.x...
 
        Connectedto x.x.x.x.
 
        Escapecharacteris '^]'.
 
        
 
        NC:
 
        ------------------------------------------------------------
 
        local% nc -vv x.x.x.x 11211
 
        found 0 associations
 
        found 1 connections:
 
            1: flags=82<CONNECTED,PREFERRED>
 
        outifen7
 
        src x.x.x.x port 55001
 
        dst x.x.x.x port 11211
 
        rankinfonot available
 
        TCPauxinfoavailable
 
        
 
        Connectionto x.x.x.x port 11211 [tcp/*] succeeded!
 
        statsitems
 
        memcachedagentv0.4
 
        matrix 1 -> x.x.x.x:12000, poolsize 1
 
        matrix 2 -> x.x.x.x:12001, poolsize 1
 
        END
3、使用端口掃描工具nmap進行遠程掃描:nmap -sV -p 11211 –script memcached-info <target>。

        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 #重啟服務 (可能會提示11211端口被占用,這時候需要kill對應11211占用的Pid)
2、當memcached 配置為監聽內網IP或公網IP時, 使用主機防火牆(iptalbes、 firewalld等)和 網絡防火牆對memcached服務端口 進行過濾。


免責聲明!

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



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