Jump to content

0x00脆弱性簡単な説明

1.5.3より前のApache Shiroの

0x01脆弱性の影響

Spring Dynamic Controllerを使用してApache Shiroを使用すると、慎重にコンパイルされた要求が認証のバイパスにつながる可能性があります。直接アクセス/shiro/admin/pageの場合、302ジャンプを返してログインします。アクセス/;/shiro/admin/ページでは、1.5.3より前に/管理ルート

0x02環境構築

Apache ShiroでShiroの許可を直接バイパスしてアクセスできます。 Spring Frameworkでは、Shiro認証のみが使用されます。 1.プロジェクトをローカルhttps://github.com/l3yx/springboot-shiro2にダウンロードします。 Idea Editorを介してWarパッケージにコンパイルし、Tomcatの下のWebAppsディレクトリに入れて実行します。戦争パッケージはここにまとめられています:https://github.com/backlion/demo/blob/master/shiro.war

0x03脆弱性の再発

1。許可構成は次のとおりです。

shirofilterfactorybean shirofilterfactorybean(){

shirofilterfactorybean bean=new shirofilterfactorybean();

bean.setsecuritymanager(securitymanager());

bean.setloginurl( '/login');

bean.setsuccessurl( '/index');

bean.setunauthorizedurl( '/unauthorizedurl');

mapstring、string map=new linkedhashmap();

map.put( '/dologin'、 'anon');

map.put( '/admin/*'、 'authc');

bean.setFilterChainDefinitionMap(Map);

豆を返します。

}

---

@getMapping( '/admin/page')

public string admin(){

「管理者ページ」を返します。

} 2.Mavenパッケージプロジェクトはshiro.warであり、Tomcatに展開されています。この脆弱性はうまく活用されています。アプリケーションがルートディレクトリにルートディレクトリを展開できない2つの条件があります。つまり、コンテキストパスが必要です、server.servlet.context-path=/shiro。ルートディレクトリの場合、コンテキストパスは空で、URLはCVE-2020-1957のパッチによってフォーマットされます。 Shiroバージョンが1.5.2未満の場合、この条件は必要ないことは注目に値します。 Spring Controller 3に他の許可確認コードはありません3。直接アクセス/Shiro/Admin/ページの場合、302ジャンプを返し、ログイン1049983-20201129040357293-1694396647.png4が必要になります。ただし、/;/shiro/admin/ページにアクセスした場合、Shiroの許可検証を直接バイパスして、/adminルート1049983-20201129040357781-2061064872.png

0x04脆弱性分析

の情報にアクセスできます。Shiroの許可確認は、URLマッチを審査することでURLマッチを審査することで行われます。バイパス。 ShiroでのURLの取得とマッチングは、org.apache.shiro.web.filter.mgt.pathmatchingfilterchainresolver#getChainで取得されます。 getpathwithinapplication関数を介して得られたパスは/1049983-20201129040358346-1396394566.jpg関数org.apache.shiro.web.util.webutilsの処理ロジックに従います#getpathwithinApplication 1049983-20201129040358965-2085604693.jpg org.apache.shiro.web.util.webutils#webtils#web.util.webutilsを見ることができます。1049983-20201129040358965-2085604693.jpg org.apache.shiro.web.util.webutils#getRequesturi gets/1049983-20201129040359608-834110665.jpgここでは、getContextPath()getSpathinfo()getPathInfo()をget //渡された後、decodeandcleanuristringは /、org.apache.shiro.web.util.webutils#decodeandcleanuristring 1049983-20201129040400208-1547024258.jpgになります。リクエストリクエストはspringに入ります。スプリング処理URL関数は、org.springframework.web.util.urlpathhelper#getPathWithInservletMapping 1049983-20201129040400772-1364188888.jpg 1049983-20201129040401248-1065967938.png GetPathWithInApplicationプロセスの下で、コンテキストパスとルートを正しく取得できます。最後に、getPathWithInServletMapping関数がフォーマットされた後、最終パスは /admin /ページであるため、正常にページにアクセスできます。1049983-20201129040401715-1588254651.pngしたがって、要約すると、URLがTomcat、Tomcat Judges/; Shiro/Admin/Pageに入ると、Shiroアプリケーションの下の/管理者/ページルートであり、Shiroアプリケーションの下の/管理/ページルートです。シロに入ると、それは /と見なされます。 Springに入ると、テストアプリケーションの下で /管理/ページルートとして正しく処理され、最終的にはShiroの許可バイパスにつながります。

0x05脆弱性修正

最新バージョンにアップグレードされた、オフィシャルは新しいバージョンの脆弱性を修正しました

0x06参照

https://L33333333333333333333333333333330/30/30/30/20%90%90%90%87%87%E6%BC%8F%E6%B4%

https://xz.aliyun.com/t/8223

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...