[6887] 2020-08-23_Apacheshiro权限绕过漏洞汇总

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-17
2020-08-23_Apacheshiro权限绕过漏洞汇总 A p a c h e   s h i r o   E   2 0 2 0 - 0 8 - 2 3   l 1 n k 3 r 使 N o . 1 N o . 1 西 s h i r o   C V E - 2 0 2 0 - 1 9 5 7 C V E - 2 0 2 0 - 1 1 9 8 9 C V E - 2 0 2 0 - 1 3 9 3 3   N o . 2 N o . 2 1 C V E - 2 0 2 0 - 1 9 5 7   a d m i n     s h i r o     s p r i n g b o o t     s h i r o     u r l   W e b U t i l 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   .
        p u b l i c   s t a t i c   S t r i n g   g e t P a t h W i t h i n A p p l i c a t i o n ( 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   c o n t e x t P a t h   =   g e t C o n t e x t P a t h ( r e q u e s t ) ;                 S t r i n g   r e q u e s t U r i   =   g e t R e q u e s t U r i ( r e q u e s t ) ;                 i f   ( S t r i n g U t i l s . s t a r t s W i t h I g n o r e C a s e ( r e q u e s t U r i ,   c o n t e x t P a t h ) )   {                         / /   N o r m a l   c a s e :   U R I   c o n t a i n s   c o n t e x t   p a t h .                         S t r i n g   p a t h   =   r e q u e s t U r i . s u b s t r i n g ( c o n t e x t P a t h . l e n g t h ( ) ) ;                         r e t u r n   ( S t r i n g U t i l s . h a s T e x t ( p a t h )   ?   p a t h   :   " / " ) ;                 }   e l s e   {                         / /   S p e c i a l   c a s e :   r a t h e r   u n u s u a l .                         r e t u r n   r e q u e s t U r i ;                 }         }   g e t 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     U R I     U R I   / x x x / . . ; / h e l l o / a a a a   g e t 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           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 ( I N C L U D E _ R E Q U E S T _ U R I _ A T T R I B U T E ) ;                 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 ) ) ;         }   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 ; / x x x / . .   n o r m a l i z e   p a t h 西 : / / . / / / . . / /
. . .         p r i v a t e   s t a t i c   S t r i n g   n o r m a l i z e ( S t r i n g   p a t h ,   b o o l e a n   r e p l a c e B a c k S l a s h )   {                 i f   ( p a t h   = =   n u l l )                         r e t u r n   n u l l ;                 / /   C r e a t e   a   p l a c e   f o r   t h e   n o r m a l i z e d   p a t h                 S t r i n g   n o r m a l i z e d   =   p a t h ;                 i f   ( r e p l a c e B a c k S l a s h   & &   n o r m a l i z e d . i n d e x O f ( ' ' )   > =   0 )                         n o r m a l i z e d   =   n o r m a l i z e d . r e p l a c e ( ' ' ,   ' / ' ) ;                 i f   ( n o r m a l i z e d . e q u a l s ( " / . " ) )                         r e t u r n   " / " ;                 / /   A d d   a   l e a d i n g   " / "   i f   n e c e s s a r y                 i f   ( ! n o r m a l i z e d . s t a r t s W i t h ( " / " ) )                         n o r m a l i z e d   =   " / "   +   n o r m a l i z e d ;                 / /   R e s o l v e   o c c u r r e n c e s   o f   " / / "   i n   t h e   n o r m a l i z e d   p a t h                 w h i l e   ( t r u e )   {                         i n t   i n d e x   =   n o r m a l i z e d . i n d e x O f ( " / / " ) ;                         i f   ( i n d e x   <   0 )                                 b r e a k ;                         n o r m a l i z e d   =   n o r m a l i z e d . s u b s t r i n g ( 0 ,   i n d e x )   +                                         n o r m a l i z e d . s u b s t r i n g ( i n d e x   +   1 ) ;                 }                 / /   R e s o l v e   o c c u r r e n c e s   o f   " / . / "   i n   t h e   n o r m a l i z e d   p a t h                 w h i l e   ( t r u e )   {                         i n t   i n d e x   =   n o r m a l i z e d . i n d e x O f ( " / . / " ) ;                         i f   ( i n d e x   <   0 )                                 b r e a k ;                         n o r m a l i z e d   =   n o r m a l i z e d . s u b s t r i n g ( 0 ,   i n d e x )   +                                         n o r m a l i z e d . s u b s t r i n g ( i n d e x   +   2 ) ;                 }                 / /   R e s o l v e   o c c u r r e n c e s   o f   " / . . / "   i n   t h e   n o r m a l i z e d   p a t h                 w h i l e   ( t r u e )   {                         i n t   i n d e x   =   n o r m a l i z e d . i n d e x O f ( " / . . / " ) ;                         i f   ( i n d e x   <   0 )                                 b r e a k ;                         i f   ( i n d e x   = =   0 )                                 r e t u r n   ( n u l l ) ;     / /   T r y i n g   t o   g o   o u t s i d e   o u r   c o n t e x t                         i n t   i n d e x 2   =   n o r m a l i z e d . l a s t I n d e x O f ( ' / ' ,   i n d e x   -   1 ) ;                         n o r m a l i z e d   =   n o r m a l i z e d . s u b s t r i n g ( 0 ,   i n d e x 2 )   +                                         n o r m a l i z e d . s u b s t r i n g ( i n d e x   +   3 ) ;                 }                 / /   R e t u r n   t h e   n o r m a l i z e d   p a t h   t h a t   w e   h a v e   c o m p l e t e d                 r e t u r n   ( n o r m a l i z e d ) ;         }   U R I   / x x x / . .   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   / 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     S h i r o - 6 8 2   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   s p r i n g w e b     / 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   / 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 /     U R I   / x x x / . .   U R I   / h e l l o / * *   s p r i n g b o o t     s p r i n g     U r l P a t h H e l p e r # g e t P a t h W i t h i n S e r v l e t M a p p i n g     U R I   x x x / . . ; / h e l l o / a a a a   s e r v l e t P a t h   p u b l i c   S t r i n g   g e t P a t h W i t h i n S e r v l e t M a p p 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   p a t h W i t h i n A p p   =   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 ) ;         S t r i n g   s e r v l e t P a t h   =   g e t S e r v l e t P a t h ( r e q u e s t ) ;         S t r i n g   s a n i t i z e d P a t h W i t h i n A p p   =   g e t S a n i t i z e d P a t h ( p a t h W i t h i n A p p ) ;         S t r i n g   p a t h ;         / /   I f   t h e   a p p   c o n t a i n e r   s a n i t i z e d   t h e   s e r v l e t P a t h ,   c h e c k   a g a i n s t   t h e   s a n i t i z e d   v e r s i o n         i f   ( s e r v l e t P a t h . c o n t a i n s ( s a n i t i z e d P a t h W i t h i n A p p ) )           {                 p a t h   =   g e t R e m a i n i n g P a t h ( s a n i t i z e d P a t h W i t h i n A p p ,   s e r v l e t P a t h ,   f a l s e ) ;         }         e l s e   {                 p a t h   =   g e t R e m a i n i n g P a t h ( p a t h W i t h i n A p p ,   s e r v l e t P a t h ,   f a l s e ) ;         } . . .                 / /   O t h e r w i s e ,   u s e   t h e   f u l l   s e r v l e t   p a t h .                 r e t u r n   s e r v l e t P a t h ;         } }   s e r v l e t P a t h   r e q u e s t . g e t S e r v l e t P a t h ( ) ; / h e l l o / a a a a   s p r i n g b o o t   / x x x / . . ; / h e l l o / a a a a - - - - - > s h i r o / x x x / . . - - - - - > s p r i n g b o o t / x x x / . . ; / h e l l o / a a a a / h e l l o / a a a a 访
p u b l i c   S t r i n g   g e t S e r v l e t P a t h ( 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   s e r v l e t P a t h   =   ( 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 ( W e b U t i l s . I N C L U D E _ S E R V L E T _ P A T H _ A T T R I B U T E ) ;         i f   ( s e r v l e t P a t h   = =   n u l l )   {                 s e r v l e t P a t h   =   r e q u e s t . g e t S e r v l e t P a t h ( ) ;         }         i f   ( s e r v l e t P a t h . l e n g t h ( )   >   1   & &   s e r v l e t P a t h . e n d s W i t h ( " / " )   & &   s h o u l d R e m o v e T r a i l i n g S e r v l e t P a t h S l a s h ( r e q u e s t ) )   {                 / /   O n   W e b S p h e r e ,   i n   n o n - c o m p l i a n t   m o d e ,   f o r   a   " / f o o / "   c a s e   t h a t   w o u l d   b e   " / f o o "                 / /   o n   a l l   o t h e r   s e r v l e t   c o n t a i n e r s :   r e m o v i n g   t r a i l i n g   s l a s h ,   p r o c e e d i n g   w i t h                 / /   t h a t   r e m a i n i n g   s l a s h   a s   f i n a l   l o o k u p   p a t h . . .                 s e r v l e t P a t h   =   s e r v l e t P a t h . s u b s t r i n g ( 0 ,   s e r v l e t P a t h . l e n g t h ( )   -   1 ) ;         }         r e t u r n   s e r v l e t P a t h ; } s h i r o 1 . 5 . 2   g e t R e q u e s t U R I   U R I   g e t C o n t e x t P a t h ( )   g e t S e r v l e t P a t h ( )   g e t P a t h I n f o ( )   西 2 C V E - 2 0 2 0 - 1 1 9 8 9   s h i r o   m a p . p u t ( " / h e l l o / * " ,   " a u t h c " ) ; p o c / h e l l o / a % 2 5 % 3 2 % 6 6 a / ; / t e s t / h e l l o / a a a
s h i r o W e b U t i l 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 u r l   g e t 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           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 ( I N C L U D E _ R E Q U E S T _ U R I _ A T T R I B U T E ) ;                 i f   ( u r i   = =   n u l l )   {                         u r i   =   v a l u e O r E m p t y ( r e q u e s t . g e t C o n t e x t P a t h ( ) )   +   " / "   + v a l u e O r E m p t y ( r e q u e s t . g e t S e r v l e t P a t h ( ) ) + v a l u e O r E m p t y ( r e q u e s t . g e t P a t h I n f o ( ) ) ;                 }                 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 ) ) ;         }   d e c o d e A n d C l e a n U r i S t r i n g     d e c o d e R e q u e s t S t r i n g     U R I     U R L           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 ( ' ; ' ) ;                 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 ) ;         }         p u b l i c   s t a t i c   S t r i n g   d e c o d e R e q u e s t 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   s o u r c e )   {                 S t r i n g   e n c   =   d e t e r m i n e E n c o d i n g ( r e q u e s t ) ;                 t r y   {                         r e t u r n   U R L D e c o d e r . d e c o d e ( s o u r c e ,   e n c ) ;                 }   c a t c h   ( U n s u p p o r t e d E n c o d i n g E x c e p t i o n   e x )   {                         i f   ( l o g . i s W a r n E n a b l e d ( ) )   {                             . . .                         }                         r e t u r n   U R L D e c o d e r . d e c o d e ( s o u r c e ) ;                 }         } p o c / h e l l o / a % 2 5 % 3 2 % 6 6 a - - - - - - > s h i r o / / h e l l o / a % 2 f a - - - - - - >   d e c o d e R e q u e s t S t r i n g   / / h e l l o / a / a m a p . p u t ( " / h e l l o / * " ,   " a u t h c " ) ; s h i r o U R L a n t ? * * * / * / h e l l o / a a a / h e l l o / a / a   s h i r o   s p r i n g   s e r v l e t P a t h   / h e l l o / a % 2 f a @ G e t M a p p i n g ( " / h e l l o / { n a m e } " ) m a p p i n g s p r i n g b o o t A p a c h e   S h i r o ( C V E - 2 0 2 0 - 1 1 9 8 9 ) ( h t t p s : / / x z . a l i y u n . c o m / t / 7 9 6 4 )
1 . c o n t e x t - p a t h s e r v e r . s e r v l e t . c o n t e x t - p a t h = / t e s t c o n t e x t - p a t h C V E - 2 0 2 0 - 1 9 5 7 p a t c h U R L S h i r o 1 . 5 . 2   g e t R e q u e s t U r i   u r i   c o n t e x t - p a t h   / / h e l l o / a a a a         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 ( I N C L U D E _ R E Q U E S T _ U R I _ A T T R I B U T E ) ;                 i f   ( u r i   = =   n u l l )   {                         u r i   =   v a l u e O r E m p t y ( r e q u e s t . g e t C o n t e x t P a t h ( ) )   +   " / "   +                                     v a l u e O r E m p t y ( r e q u e s t . g e t S e r v l e t P a t h ( ) )   +                                     v a l u e O r E m p t y ( r e q u e s t . g e t P a t h I n f o ( ) ) ;                 }                 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 ) ) ;         }   c o n t e x t - p a t h   / ; / t e s t / h e l l o / a a a a   d e c o d e A n d C l e a n U r i S t r i n g   ; / m a p . p u t ( " / h e l l o / * " ,   " a u t h c " ) ; 1 . 5 . 3   g e t S e r v l e t P a t h     g e t P a t h I n f o   u r i u r l         p u b l i c   s t a t i c   S t r i n g   g e t P a t h W i t h i n A p p l i c a t i o n ( 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 )   {                 r e t u r n   n o r m a l i z e ( r e m o v e S e m i c o l o n ( g e t S e r v l e t P a t h ( r e q u e s t )   +   g e t P a t h I n f o ( r e q u e s t ) ) ) ;         }
3 C V E - 2 0 2 0 - 1 3 9 3 3 / h e l l o / % 3 b a a a a   g e t P a t h W i t h i n A p p l i c a t i o n   / h e l l o / ; a a a a   r e m o v e S e m i c o l o n   ;   u r i   / h e l l o /         p r i v a t e   s t a t i c   S t r i n g   r e m o v e S e m i c o l o n ( S t r i n g   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 ( ' ; ' ) ;                 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 ) ;         }   u r i   m a p . p u t ( " / h e l l o / * " ,   " a u t h c " ) ;   f i l t e r     I n v a l i d R e q u e s t F i l t e r   西         p r i v a t e   s t a t i c   f i n a l   L i s t < S t r i n g >   S E M I C O L O N   =   C o l l e c t i o n s . u n m o d i f i a b l e L i s t ( A r r a y s . a s L i s t ( " ; " ,   " % 3 b " ,   " % 3 B " ) ) ;         p r i v a t e   s t a t i c   f i n a l   L i s t < S t r i n g >   B A C K S L A S H   =   C o l l e c t i o n s . u n m o d i f i a b l e L i s t ( A r r a y s . a s L i s t ( " " ,   " % 5 c " ,   " % 5 C " ) ) ; N o . 3 N o . 3   s h i r o     u r i     s p r i n g     u r i  
S R C 1 .     S R C 线 访 2 .     R a n k 3 .     线 4 .     广 5 .         1 .       2 .       3 .       s t r a t e g y @ d b a p p s e c u r i t y . c o m . c n 1 1   V I   广 2 p h o t o s h o p / i l l u s t r a t o r / c o r e l d r e w / 3 1 9 1   s t r a t e g y @ d b a p p s e c u r i t y . c o m . c n W e b  
W e b   1 3 - 3 0 K 1 + 广 1 . ; 2 . 沿 3 . ; 4 . 5 . W A F b y p a s s 1 . 1 2 . H T T P 3 . C M S 4 . p h p j a v a a s p . n e t 5 . W e b   F u z z 6 . O W A S P   T O P   1 0 7 . W e b 8 . A s p . n e t P y t h o n p h p j a v a 1 . 2 . 3 . C I S S P C I S A C S S L P I S O 2 7 0 0 1 I T I L P M P C O B I T S e c u r i t y + C I S P O S C P 4 . S R C C T F 5 . 6 . 7 . 8 . 稿 1 3 - 3 0 K 2 + 1 .
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则