[28138] 2020-02-06_深入研究CitrixADC远程执行代码,CVE-2019-19781

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

本版积分规则