Jump to content

0x00脆弱性の説明

Apache Shiroは、認証、承認、パスワード、セッション管理を実行する強力で使いやすいJavaセキュリティフレームワークです。 Apache Shiro Authenticationバイパス脆弱性CVE-2020-11989の以前の修正パッチに欠陥がありました。 1.5.3以前には、ShiroがURLを処理する際にまだ春と違いがあるため、ID検証バイパスの脆弱性がまだあります。認証要求の処理がエラーにより、リモート攻撃者は、特別に作成されたHTTPリクエストを送信し、認証プロセスをバイパスし、アプリケーションへの不正アクセスを取得できます。

0x01脆弱性の影響

apache shiro 1.6.0

0x02環境構築

1。プロジェクトをローカルhttps://github.com/l3yx/springboot-shiro2にダウンロードします。 POM.xmlの1.5.2を1.5.3で置き換え、SRC/Main/Java/org/syclover/srpingbootshirologingincontrollerで/admin/pageで/admin/{name} 1049983-20201129040427401-1379782706.png 1049983-20201129040427930-1551743954.png3でバックグラウンド検証を交換します。 Idea Editorを再構築して実行します。コンパイルされた戦争パッケージをTomcatの下のWebAppsディレクトリに入れて実行します。 https://github.com/backlion/demo/blob/master/srpingboot-shiro-0.1-snapshot.war

0x03コード説明

1。 shiroconfig.java(pringboot-shiro-master \ src \ main \ java \ org \ syclover \ srpingbootshiro \ shiroconfig.java)許可設定。 /admin/*リソースを要求するとき、302はアイデンティティ認証のためにログインページにジャンプします名前の名前(アイデンティティ認証のトリガー)1049983-20201129040428999-1101944912.png

0x04脆弱性の再発

1。リクエストルートでリソース名が指定されていない場合、認証はトリガーされず、リソースが返されません。22wkfv0udwx7613.png33http://192.168.1.9:8080/srpingboot-shiro-0.0.1-snapshot/admin 1049983-20201129040429828-1775851797.png2。リクエストルートでリソース名を指定する場合、302は認証ページにジャンプします:http://192.168.1.933608080/srpingboot-shiro-0.0.1-snapshot/login 1049983-20201129040430280-1096894926.png mfda3rzczsh7616.png3。特定のPOCリクエストを作成すると、指定されたリソースがリクエストされる場合、認証はトリガーされず、許可はバイパスされます(%3Bでバイパス)3http://192.168.1.1.9:80800/SRPINGBOOT-SHIRO-0.0.1-SNAPSHOT/ADMIN/

0x05脆弱性分析

問題はorg.apache.shiro.web.util.webutilsにあることがわかります。ここにブレークポイントを置いてからデバッグしてください。1049983-20201129040431878-1254629939.pngが更新され、getServletpathとgetpathinfoを使用してURLを取得しました。ただし、実際の脆弱性ポイントはここにありません。1049983-20201129040432474-1895311208.pngスプライシング後のURLが大丈夫であることがわかります。1049983-20201129040433327-937398851.pngのセミコロン処理を削除した後、 /admin /*のみが保持されていることがわかります。テスト用のコントローラーへのルートを追加/管理することができます@getMapping( '/admin*')

public string admin2(){

返品「ログインしてください、admin」;

} http://192.168.1.933608080/srpingboot-shiro-0.0.1-snapshot/admin/*

1049983-20201129040433923-1159712392.png 1049983-20201129040434507-452562273.pngアクセスを確認する許可はありません。もちろん、後でパラメーターを追加すると、アクセス許可が必要です。

フォローアップremovesemicolon

1049983-20201129040435006-1073404813.png

同様に、コンテンツの後。を含む。

Springがそれをどのように処理するか見てみましょう

1049983-20201129040435555-539162384.png

Springには問題がありません。

URLを処理する方法を見てみましょう

`org.springframework.web.util.urlpathhelper#decodeandcleanuristring 1049983-20201129040436147-1903544345.png

removesememicoloncontent#remove;そして後の部分

decoderequestString#urldecodeデコード

getAnitizedPath#を置き換える//shiroは反対の1049983-20201129040436695-881597646.pngであるが、urldecodeが最初に実行され、それが削除され、脆弱性デバッグの場所:shiro-web-1.5.3.jar //org.apache.shiro.util.webutils.java

//行111

public static string getpathwithinapplication(httpservletrequestリクエスト){

return remormize(removesemicolon(getservletpath(request) + getpathinfo(request)));

} pring-web-5.2.5.Release.jar //org.springframework.web.util.urlpathhelper.java

//行459

private string decodeandcleanuristring(httpservletrequest request、string uri){

uri=removesemicoloncontent(uri);

uri=decoderequestString(request、uri);

uri=getSanitizedPath(uri);

uriを返します。

}

0x06脆弱性修正

現在、公式の脆弱性の修正バージョンがリリースされ、更新されたApache Shiro=1.6.0

0x07参照

https://github.com/lyy289065406/cve-2020-139333https://www.cnblogs.com/ph4nt0mer/p/135359999.htmlhttps://xz.aliyun.com/t/8223

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...