Apache Shiro 反序列化漏洞復現550/721(CVE-2016-4437)


Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

0x01簡介

Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

0x01簡介

Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

0x02漏洞影響

只要rememberMe的AES加密密鑰泄露,無論shiro是什么版本都會導致反序列化漏洞。

0x03漏洞分析

先看下官網漏洞說明:https://issues.apache.org/jira/browse/SHIRO-550

Shiro提供了記住我(RememberMe)的功能,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問。

Shiro對rememberMe的cookie做了加密處理,shiro在CookieRememberMeManaer類中將cookie中rememberMe字段內容分別進行 序列化、AES加密、Base64編碼操作。

在識別身份的時候,需要對Cookie里的rememberMe字段解密。根據加密的順序,不難知道解密的順序為:

  • 獲取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密鑰Key被硬編碼在代碼里,意味着每個人通過源代碼都能拿到AES加密的密鑰。因此,攻擊者構造一個惡意的對象,並且對其序列化,AES加密,base64編碼后,作為cookie的rememberMe字段發送。Shiro將rememberMe進行解密並且反序列化,最終造成反序列化漏洞。

 

0x03漏洞分析

先看下官網漏洞說明:https://issues.apache.org/jira/browse/SHIRO-550

Shiro提供了記住我(RememberMe)的功能,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問。

Shiro對rememberMe的cookie做了加密處理,shiro在CookieRememberMeManaer類中將cookie中rememberMe字段內容分別進行 序列化、AES加密、Base64編碼操作。

在識別身份的時候,需要對Cookie里的rememberMe字段解密。根據加密的順序,不難知道解密的順序為:

  • 獲取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密鑰Key被硬編碼在代碼里,意味着每個人通過源代碼都能拿到AES加密的密鑰。因此,攻擊者構造一個惡意的對象,並且對其序列化,AES加密,base64編碼后,作為cookie的rememberMe字段發送。Shiro將rememberMe進行解密並且反序列化,最終造成反序列化漏洞。

 

0x04漏洞復現

實驗環境

靶機 shiro1.1.24

攻擊機 windows10

 

1.首先用docker搭建一個環境

 

 

2.勾選remenberMe選項,然后抓包,相應包中有rememberME字段,證明其為shiro框架

 

 

3.使用shiro反序列化檢測工具測試

github:https://github.com/feihong-cs/ShiroExploit/releases

 

 

工具的大致原理:

1.檢查是否存在默認的key。

2.然后借助ysoserial.jar生成payload,進行探測

3.探測可用的gadget

4.執行命令

 

4.getshell

 

 

 

 

 

 

 

Apache Shiro 反序列化漏洞(Shiro-721 CVE-2016-4437)

 

0x00 漏洞介紹

    Apache Shiro 存在高危代碼執行漏洞。該漏洞是由於Apache Shiro cookie中通過 AES-128-CBC 模式加密的rememberMe字段存在問題,用戶可通過Padding Oracle 加密生成的攻擊代碼來構造惡意的rememberMe字段,並重新請求網站,進行反序列化攻擊,最終導致任意代碼執行。
 

0x01 影響版本

Apache Shiro < 1.42
 

0x02 漏洞指紋

1.set-Cookie: rememberMe=deleteMe
2.URL中有shiro字樣
3.有一些時候服務器不會主動返回 rememberMe=deleteMe, 直接發包即可
 

0x03  利用技巧

1.該漏洞需要登錄后獲取到合法的Cookie: rememberMe=XXX后才可以進行利用, 看起來不是很好利用 但實際上有一些網站是開放注冊的, 而且這個洞不需要知道服務端密鑰 所以后續的利用還是可以同Shiro-550一樣利用, 而且這里是AES加密的, 自帶過WAF屬性 ;
2.如果攻擊沒有生效, 可以試一下刪除Cookie中的JSESSIONID 字段, 很多時候這個字段存在的話, 服務端不會去處理 rememberMe。
 

0x04 漏洞原理

由於Apache Shiro cookie中通過 AES-128-CBC 模式加密的rememberMe字段存在問題,用戶可通過Padding Oracle 加密生成的攻擊代碼來構造惡意的rememberMe字段,並重新請求網站,進行反序列化攻擊,最終導致任意代碼執行。
 

0x05 環境搭建

靶機 shiro 1.2.4

攻擊機 windows10

 

整體思路#

 

訪問登錄頁面,登錄
請求account頁面,只需要抓包時能獲取到rememberMe=xxx都可
利用exp爆破payload的加密密文
獲取密文后對之前請求的頁面以rememberMe=xxx的格式重放
獲取到命令執行結果

 

 

1.登陸shiro,輸入正確的賬號密碼,抓包可以看到cookie   #有些版本cookie是在左邊,有些是在右邊

 

 

 

 

2.依然使用之間的工具,選擇shiro721,輸入記錄到的rememberMe

 

 

 

 

3.工具會自動開始爆破,爆破時間會比較長

 

 

 

 

具體原理可以看

https://www.freebuf.com/articles/network/221838.html

https://www.freebuf.com/articles/database/151167.html

這里面涉及到密碼學,我看得有點懵,有能力的小伙伴可以去研究

 

 

apache shiro命令執行流量分析

 

 

 

 

Apache Shiro 認證繞過漏洞(CVE-2020-1957)

在Apache Shiro 1.5.2以前的版本中,在使用Spring動態控制器時,攻擊者通過構造`..;`這樣的跳轉,可以繞過Shiro中對目錄的權限限制。

實驗環境

Spring 2.2.2與Shiro 1.5.1的應用

 

 

 

 

這個應用中對URL權限的配置如下:

```java
@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
    DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
    chainDefinition.addPathDefinition("/login.html", "authc"); // need to accept POSTs from the login form
    chainDefinition.addPathDefinition("/logout", "logout");
    chainDefinition.addPathDefinition("/admin/**", "authc");
    return chainDefinition;
}
```

 

漏洞復現

 

直接請求管理頁面`/admin/`,無法訪問,將會被重定向到登錄頁面:

 

構造惡意請求`/xxx/..;/admin/`,即可繞過權限校驗,訪問到管理頁面

 

 

 

 

 

 

 

 

 

 

 

參考: https://dyblogs.cn/dy/2308.html

         https://www.cnblogs.com/qianxinggz/p/13388405.html#13%E3%80%81%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86

         https://www.cnblogs.com/backlion/p/14077791.html

 

 

 

 

 

 

 

 


免責聲明!

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



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