[15191] 2020-03-30_Shiro权限绕过漏洞分析(CVE-2020-2957)

文档创建者:s7ckTeam
浏览次数:8
最后更新:2025-01-18
2020-03-30_Shiro权限绕过漏洞分析(CVE-2020-2957) S h i r o C V E - 2 0 2 0 - 2 9 5 7   F r e e B u f   2 0 2 0 - 0 3 - 3 0 2 0 2 0 3 2 3 S h i r o B r i a n   D e m e r s s h i r o C V E - 2 0 2 0 - 2 9 5 7 S h r i o s h i r o   1 . 5 . 2 S H I R O - 6 8 2 S h i r o 1 . 5 . 2 c o m m i t P a t h M a t c h i n g F i l t e r J I R A i s s u e S H I R O - 6 8 2 i s s u e 1 . 5 . 0 1 . 5 . 2 S H I R O - 6 8 2 s p r i n g u r i   =   u r i   +   /   S h i r o S p r i n g   w e b U R I / r e s o u r c e / m e n u s / r e s o u r c e / m e n u s / 访 S h i r o U R L p a t h P a t t e r n / r e s o u r c e / m e n u s / r e s o u r c e / m e n u s / S h i r o
S h i r o S h i r o 访 S h i r o a n o n , a u t h c 1 . a n o n 访 , 2 . a u t h c 访 S h i r o . i n i U R L U R L U R L 访 U R L A N T 访   / i n d e x . h t m l S h i r o a n o n 访 / u s e r / x i a o m i n g     / u s e r / x i a o g a n g a u t h c 访 S h i r o U R L A n t   ? * * * / / h e l l o / h e l l o / / h e l l o a u t h c 访 / h e l l o U R I / h e l l o / / U R L s p r i n g ( S e r v l e t ) s p r i n g / h e l l o / h e l l o / U R L 访 d e m o 1 . d e m o s h i r o - b a s i c 2 . i d e a 3 . S h i r o 1 . 4 . 2 [ u r l s ] / i n d e x . h t m l   =   a n o n / u s e r / * *   =   a u t h c ? * * *         < d e p e n d e n c y >                 < g r o u p I d > o r g . a p a c h e . s h i r o < / g r o u p I d >
4 . S h i r o C o n f i g a u t h c 5 . 6 . 访 / h e l l o / 1 a u t h c 访 / h e l l o / 1 / a u t h c                 < g r o u p I d > o r g . a p a c h e . s h i r o < / g r o u p I d >                 < a r t i f a c t I d > s h i r o - w e b < / a r t i f a c t I d >                 < v e r s i o n > 1 . 4 . 2 < / v e r s i o n >         < / d e p e n d e n c y >         < d e p e n d e n c y >                 < g r o u p I d > o r g . a p a c h e . s h i r o < / g r o u p I d >                 < a r t i f a c t I d > s h i r o - s p r i n g < / a r t i f a c t I d >                 < v e r s i o n > 1 . 4 . 2 < / v e r s i o n >         < / d e p e n d e n c y >         @ B e a n         S h i r o F i l t e r F a c t o r y B e a n   s h i r o F i l t e r F a c t o r y B e a n ( )   {                 S h i r o F i l t e r F a c t o r y B e a n   b e a n   =   n e w   S h i r o F i l t e r F a c t o r y B e a n ( ) ;                 . . .                 . . .                 / / m a p . p u t ( " / * " ,   " a u t h c " ) ;                 m a p . p u t ( " / h e l l o / * " ,   " a u t h c " ) ;                 b e a n . s e t F i l t e r C h a i n D e f i n i t i o n M a p ( m a p ) ;                 r e t u r n   b e a n ;         } @ G e t M a p p i n g ( " / h e l l o / { c u r r e n t P a g e } " )         p u b l i c   S t r i n g   h e l l o ( @ P a t h V a r i a b l e   I n t e g e r   c u r r e n t P a g e )   {                 r e t u r n   " h e l l o " ; }
  P a t h M a t c h i n g F i l t e r C h a i n R e s o l v e r g e t C h a i n U R L u r l U R L S h i r o F i t h e r U R L U R L p a t h M a t h c h e s p a t h M a t c h e s s h i r o . u t i l . A n t P a t h M a t c h e r d o M a t c h a n t p a t h P a t t e r n r e q u e s t U R I d o M a t c h : 1 0 9 ,   A n t P a t h M a t c h e r   ( o r g . a p a c h e . s h i r o . u t i l ) S h i r o   A n t p a t h P a t t e r n   / h e l l o / / h e l l o / 1 / a u t h c S h i r o s p r i n g / h e l l o / 1 / / h e l l o / 1 / / p a t h M a t c h e s : 1 3 5 ,   P a t h M a t c h i n g F i l t e r C h a i n R e s o l v e r   ( o r g . a p a c h e . s h i r o . w e b . f i l t e r . m g t ) p r o t e c t e d   b o o l e a n   p a t h M a t c h e s ( S t r i n g   p a t t e r n ,   S t r i n g   p a t h )   {                 P a t t e r n M a t c h e r   p a t h M a t c h e r   =   t h i s . g e t P a t h M a t c h e r ( ) ;                 r e t u r n   p a t h M a t c h e r . m a t c h e s ( p a t t e r n ,   p a t h ) ; }
2 0 1 9 3 2 5 S h i r o G i t H u b i s s u e P R 5 8 9 f 1 0 1 . 5 . 0 2 0 1 9 1 1 2 0 1 . 5 . 0 1 . 5 . 0 t o m s u n 2 8 P R p a t h s M a t c h : 1 2 5 ,   P a t h M a t c h i n g F i l t e r ( o r g . a p a c h e . s h i r o . w e b . f i l t e r ) r e q u e s t U R I / / / U R L r e q u e s t U R I / h e l l o / 1 / / U R I / U R L 1 . 5 . 1 1 . 5 . 2
1 . 5 . 1 p a y l o a d 1 . 5 . 1 / p a y l o a d / f d s f ; / . . / h e l l o / 1 g e t C h a i n r e q u e s t U R I t h i s . g e t P a t h W i t h i n A p p l i c a t i o n ( r e q u e s t ) r e q u e s t U R I / f d s f / f d s f ; / . . / h e l l o / 1 U R I F a l s e s h i r o
g e t P a t h W i t h i n A p p l i c a t i o n W e b U t i l s   ( o r g . a p a c h e . s h i r o . w e b . u t i l ) g e t R e q u e s t U r i R e q u e s t U r i R e q u e s t U r i d e c o d e A n d C l e a n U r i S t r i n g U R I U R I ; / f d s f ; / . . / h e l l o / 1 / / f d s f 1 . 5 . 2 1 . 5 . 2 r e q u e s t U R I r e q u e s t . g e t R e q u e s t U r i r e q u e s t C o n t e x t P a t h S e r v l e t P a t h P a t h I n f o p u b l i c   s t a t i c   S t r i n g   g e t R e q u e s t U r i ( H t t p S e r v l e t R e q u e s t   r e q u e s t )   {                 S t r i n g   u r i   =   ( S t r i n g ) r e q u e s t . g e t A t t r i b u t e ( " j a v a x . s e r v l e t . i n c l u d e . r e q u e s t _ u r i " ) ;                 i f   ( u r i   = =   n u l l )   {                         u r i   =   r e q u e s t . g e t R e q u e s t U R I ( ) ;                 }                 r e t u r n   n o r m a l i z e ( d e c o d e A n d C l e a n U r i S t r i n g ( r e q u e s t ,   u r i ) ) ;         } p r i v a t e   s t a t i c   S t r i n g   d e c o d e A n d C l e a n U r i S t r i n g ( H t t p S e r v l e t R e q u e s t   r e q u e s t ,   S t r i n g   u r i )   {             u r i   =   d e c o d e R e q u e s t S t r i n g ( r e q u e s t ,   u r i ) ;             i n t   s e m i c o l o n I n d e x   =   u r i . i n d e x O f ( 5 9 ) ; / / ;             r e t u r n   s e m i c o l o n I n d e x   ! =   - 1   ?   u r i . s u b s t r i n g ( 0 ,   s e m i c o l o n I n d e x )   :   u r i ;     }
/ f d s f ; / . . / h e l l o / 1 / / / h e l l o / 1 / 1 U R I w e b S h i r o s p r i n g ( S e r v l e t ) U R I S h i r o S h i r o r e q u e s t U R I / U R L / 1 . 5 . 2 r e q u e s t U R I / f d s f ; / . . / h e l l o / 1 / 使 ; 1 . 1 . 5 . 2 2 . 使 * U R L 1 . h t t p s : / / g i t h u b . c o m / a p a c h e / s h i r o / p u l l / 1 2 7 2 . h t t p s : / / b l o g . 5 1 c t o . c o m / l u c h u n l i / 1 8 3 5 1 0 8 3 . h t t p s : / / i s s u e s . a p a c h e . o r g / j i r a / b r o w s e / S H I R O - 6 8 2 4 . h t t p s : / / w w w . s y s h l a n g . c o m / 9 6 d b 3 1 7 4 / 5 . h t t p : / / s h i r o - u s e r . 5 8 2 5 5 6 . n 2 . n a b b l e . c o m / R e - A N N O U N C E - C V E - 2 0 2 0 - 1 9 5 7 - A p a c h e - S h i r o - 1 - 5 - 2 - r e l e a s e d - t d 7 5 8 2 1 3 6 . h t m l
* t b a g @ T C C F r e e B u f . C O M

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则