天天看點

[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

🍬 部落客介紹

👨‍🎓 部落客介紹:大家好,我是 _PowerShell​ ,很高興認識大家~

✨主攻領域:【滲透領域】【資料通信】 【通訊安全】 【web安全】【面試分析】

🎉點贊➕評論➕收藏 == 養成習慣(一鍵三連)😋

🎉歡迎關注💗一起學習👍一起讨論⭐️一起進步📝文末有彩蛋

🙏作者水準有限,歡迎各位大佬指點,互相學習進步!

文章目錄

  • ​​🍬 部落客介紹​​
  • ​​一、漏洞簡介​​
  • ​​二、漏洞編号​​
  • ​​三、影響版本​​
  • ​​四、Fofa​​
  • ​​五、漏洞檢測​​
  • ​​六、漏洞原理​​
  • ​​七、環境準備​​
  • ​​八、漏洞利用​​
  • ​​1、通路站點​​
  • ​​2、get方式/permit/any不加token​​
  • ​​3、get方式/permit/any加token​​
  • ​​4、使用 %0a 進行權限繞過​​
  • ​​九、修複建議​​

一、漏洞簡介

​ Apache Shiro 是一個強大且易用的 Java 安全架構,通過它可以執行身份驗證、授權、密碼和會話管理。使用 Shiro 的易用 API,您可以快速、輕松地保護任何應用程式 —— 從最小的移動應用程式到最大的 WEB 和企業應用程式。

2022年6月29日,Apache官方披露Apache Shiro權限繞過漏洞(CVE-2022-32532),當Apache Shiro中使用RegexRequestMatcher進行權限配置,且正規表達式中攜帶"."時,未經授權的遠端攻擊者可通過構造惡意資料包繞過身份認證,導緻配置的權限驗證失效。

二、漏洞編号

CVE-2022-32532      

三、影響版本

Apache Shiro < 1.9.1      

四、Fofa

"Apache Shiro"      

五、漏洞檢測

在config\pom.xml的version标簽中檢視目前使用的shiro版本号。

六、漏洞原理

在正規表達式中元字元.是比對除換行符(\n、\r)之外的任何單個字元。

要比對包括 \n 在内的任何字元,需使用像(.|\n)的模式。

在java中的正則預設情況下.也同樣不會包含\n、\r字元,是以在一些場景中,使用正則.的規則就有可能被繞過。

新增Pattern.DOTALL模式後,正規表達式.就可以比對任何字元包括換行符。

在shiro-core-1.9.0.jar中存在一個RegExPatternMatcher類,提供請求路徑比對功能及攔截器參數解析的功能。pattern存在帶.的正規表達式比對,若source中存在\r或\n字元時,将判斷錯誤。

七、環境準備

我這裡使用的是 vulfocus 靶場,大家也可以自行搭建靶場。我就為了省事兒,就用了 vulfocus 複現的
https://vulfocus.cn/      

vulfocus 篩選靶場如下,直接搜尋需要的靶場環境就可以了,在這裡也給大家推薦一下八,可以為需要大量複現漏洞的安全工作者節省大量時間。

[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

這個下面就是平台給出的鏡像資訊和一些提示資訊。我們直接通路他所給的 ip+端口 就可以通路到我們的靶場環境了。

[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)
通路所給ip:端口
[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

八、漏洞利用

1、通路站點

直接通路ip:端口,抓包如下
[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

2、get方式/permit/any不加token

把抓到的包放到重發子產品,以get方式/permit/any

通路被拒絕

[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

3、get方式/permit/any加token

把抓到的包放到重發子產品,以get方式/permit/any,并加token進行身份認證

通路成功

[ 漏洞複現篇 ] Apache Shiro 身份認證繞過漏洞 (CVE-2022-32532)

4、使用 %0a 進行權限繞過

把抓到的包放到重發子產品,以get方式/permit/a%0any

通路成功

九、修複建議

https://github.com/apache/shiro/releases/tag/shiro-root-1.9.1