[13958] 2019-04-07_RubyonRails路径穿越与任意文件读取漏洞分析

文档创建者:s7ckTeam
浏览次数:13
最后更新:2025-01-18
2019-04-07_RubyonRails路径穿越与任意文件读取漏洞分析 R u b y   o n   R a i l s 穿 L E d g e 1   F r e e B u f   2 0 1 9 - 0 4 - 0 7 R u b y   o n   R a i l s   W e b   ,   W e b     R u b y     W e b   C V E - 2 0 1 9 - 5 4 1 8   使 r e n d e r   f i l e 访 . . / . . / . . / . . / 穿 { { 使 访 C e n t o s 7 R u b y   O n   R a i l s R u b y   O n   R a i l s 1 .       g i t     # y u m   i n s t a l l   g i t 2 .       r b e n v ~ / . r b e n v 3 .       r b e n v   r u b y 4 .         g e m s e t ,   ,     b u n d l e r   5 .         g e m     g e m     r b e n v   r e h a s h   6 .         r b e n v   u p d a t e     r b e n v   V e r s i o n s   A f f e c t e d :     A l l .   N o t   a f f e c t e d :               N o n e .   F i x e d   V e r s i o n s :           6 . 0 . 0 . b e t a 3 ,   5 . 2 . 2 . 1 ,   5 . 1 . 6 . 2 ,   5 . 0 . 7 . 2 ,   4 . 2 . 1 1 . 1   I m p a c t   T h e r e   i s   a   p o s s i b l e   f i l e   c o n t e n t   d i s c l o s u r e   v u l n e r a b i l i t y   i n   A c t i o n   V i e w .   S p e c i a l l y   c r a f t e d   a c c e p t   h e a d e r s   i n   c o m b i n a t i o n   w i t h   c a l l s   t o   r e n d e r   f i l e :   c a n   c a u s e   a r b i t r a r y   f i l e s   o n   t h e   t a r g e t   s e r v e r   t o   b e   r e n d e r e d ,   d i s c l o s i n g   t h e   f i l e   c o n t e n t s .   T h e   i m p a c t   i s   l i m i t e d   t o   c a l l s   t o   r e n d e r   w h i c h   r e n d e r   f i l e   c o n t e n t s   w i t h o u t   a   s p e c i f i e d   a c c e p t   f o r m a t .     I m p a c t e d   c o d e   i n   a   c o n t r o l l e r   l o o k s   s o m e t h i n g   l i k e   t h i s :   c l a s s   U s e r C o n t r o l l e r   <   A p p l i c a t i o n C o n t r o l l e r   d e f   i n d e x           r e n d e r   f i l e :   " # { R a i l s . r o o t } / s o m e / f i l e "   e n d   e n d g i t   c l o n e g i t : / / g i t h u b . c o m / s s t e p h e n s o n / r b e n v . g i t ~ / . r b e n v g i t   c l o n e g i t : / / g i t h u b . c o m / s s t e p h e n s o n / r u b y - b u i l d . g i t ~ / . r b e n v / p l u g i n s / r u b y - b u i l d g i t   c l o n e   g i t : / / g i t h u b . c o m / j a m i s / r b e n v - g e m s e t . g i t   ~ / . r b e n v / p l u g i n s / r b e n v - g e m s e t g i t   c l o n e g i t : / / g i t h u b . c o m / s s t e p h e n s o n / r b e n v - g e m - r e h a s h . g i t ~ / . r b e n v / p l u g i n s / r b e n v - g e m - r e h a s h g i t   c l o n e   g i t : / / g i t h u b . c o m / r k h / r b e n v - u p d a t e . g i t ~ / . r b e n v / p l u g i n s / r b e n v - u p d a t e
7 .       使   R u b y   C h i n a     R u b y ,   8 .       b a s h 9 .       . b a s h _ p r o f i l e U b u n t u . b a s h r c 使 1 0 .   r u b y 1 1 .   使 r u b y 1 2 .   r a i l s r u b y r a i l s r a i l s 1 r u b y r a i l s 2 r a i l s 3 b u n d l e b u n d l e i n s t a l l b u n d l e i n s t a l l   1 .       ; " > / r o o t   / C V E - 2 0 1 9 - 5 4 1 8 /   2 .       / r o o t s o u r c e   . b a s h _ p r o f i l e g i t   c l o n e g i t : / / g i t h u b . c o m / A n d o r C h e n / r b e n v - c h i n a - m i r r o r . g i t ~ / . r b e n v / p l u g i n s / r b e n v - c h i n a - m i r r o r e x p o r t   P A T H = " $ H O M E / . r b e n v / b i n : $ P A T H " e v a l   " $ ( r b e n v   i n i t   - ) " s o u r c e   ~ / . b a s h r c r b e n v   i n s t a l l   - - l i s t     #   r u b y   r b e n v   i n s t a l l   2 . 3 . 3       # 2 . 3 . 3 R u b y r b e n v   g l o b a l   2 . 3 . 3             #   使 2 . 3 . 3 r u b y   v                                 # R u b y g e m   i n s t a l l   r a i l s   - v   5 . 2 . 1       # r a i l s   v b u n d l e   c o n f i g   m i r r o r . h t t p s : / / r u b y g e m s . o r g h t t p s : / / g e m s . r u b y - c h i n a . o r g y u m   - y   i n s t a l l   g c c y u m   i n s t a l l   f l e x   a u t o c o n f   z l i b   c u r l z l i b - d e v e l   c u r l - d e v e l   b z i p 2   b z i p 2 - d e v e l n c u r s e s - d e v e l   l i b j p e g - d e v e l   l i b p n g - d e v e l   l i b t i f f - d e v e l f r e e t y p e - d e v e l   p a m - d e v e l g c c +   g c c - c + +   l i b x m l 2   l i b x m l 2 - d e v e l   l i b x s l t   l i b x s l t - d e v e l   y u m   i n s t a l l   s q l i t e *
3 .       d e m o 4 .       d e m o r a i l s   s , 5 .       使 访 访 6 .       访 c h y b e t a 7 .       使 f 1 2 b u n d l e   i n s t a l l   . . / . . / . . / . . / . . / . . / e t c / p a s s w d { {
8 .       p a s s w d
9 .       使 b u r p   s u i t e 访 / c h y b e t a . 使 B u r p   s u i t e p a s s w d r a i l s 访 R u b y O n   R a i l s 使 R e n d e r   f i l e * *   * * r a i l s r e n d e r   f i l e . r b e n v / v e r s i o n s / 2 . 3 . 3 / l i b / r u b y / g e m s / 2 . 3 . 0 / g e m s / a c t i o n v i e w - 5 . 2 . 1 / l i b / a c t i o n v i e w / r e n d e r e r / t e m p l a t e r e n d e r e r . r b o p t i o n s . k e y ? ( : f i l e ) f i n d _ f i l e   f i n d f i l e . r b e n v / v e r s i o n s / 2 . 3 . 3 / l i b / r u b y / g e m s / 2 . 3 . 0 / g e m s / a c t i o n v i e w - 5 . 2 . 1 / l i b / a c t i o n v i e w / l o o k u p _ c o n t e x t . r b 6 . 0 . 0 . b e t a 3 , 5 . 2 . 2 . 1 5 . 1 . 6 . 2 5 . 0 . 7 . 2 4 . 2 . 1 1 . 1 m o d u l e   A c t i o n V i e w     c l a s s   T e m p l a t e R e n d e r e r   <   A b s t r a c t R e n d e r e r # : n o d o c :         #   D e t e r m i n e   t h e   t e m p l a t e   t o   b e   r e n d e r e d u s i n g   t h e   g i v e n   o p t i o n s .             d e f   d e t e r m i n e _ t e m p l a t e ( o p t i o n s )                 k e y s   =   o p t i o n s . h a s _ k e y ? ( : l o c a l s )   ? o p t i o n s [ : l o c a l s ] . k e y s   :   [ ]                 i f   o p t i o n s . k e y ? ( : b o d y )                     . . .                 e l s i f   o p t i o n s . k e y ? ( : f i l e )                     w i t h _ f a l l b a c k s   { f i n d _ f i l e ( o p t i o n s [ : f i l e ] ,   n i l ,   f a l s e ,   k e y s ,   @ d e t a i l s )   }                 . . .             e n d e n d
f i n d f i l e * a r g s f o r l o o k u p , a r g s f o r _ l o o k u p   p a y l o a d d e t a i l s [ f o r m a t s ] ( 访 访 )   f i n d f i l e . r b e n v / v e r s i o n s / 2 . 3 . 3 / l i b / r u b y / g e m s / 2 . 3 . 0 / g e m s / a c t i o n v i e w - 5 . 2 . 1 / l i b / a c t i o n v i e w / p a t h _ s e t . r b o u t s i d e a p p , f i n d a l l a n y w h e r e . r b e n v / v e r s i o n s / 2 . 3 . 3 / l i b / r u b y / g e m s / 2 . 3 . 0 / g e m s / a c t i o n v i e w - 5 . 2 . 1 / l i b / a c t i o n v i e w / t e m p l a t e / r e s o l v e r . r b f i n d _ t e m p l a t e s 便 d e t a i l s [ : f o r m a t s ] , . . / 穿 { { / e t c / p a s s w d 使 I D E 1 .     使 c l a s s   P a t h S e t   # : n o d o c :       d e f   f i n d _ f i l e ( p a t h ,   p r e f i x e s   =   [ ] ,   * a r g s )           _ f i n d _ a l l ( p a t h ,   p r e f i x e s ,   a r g s ,   t r u e ) . f i r s t   | | r a i s e ( M i s s i n g T e m p l a t e . n e w ( s e l f ,   p a t h ,   p r e f i x e s ,   * a r g s ) )       e n d       p r i v a t e         #   a r g s   a r g s _ f o r _ l o o k u p d e t a i l s               d e f   _ f i n d _ a l l ( p a t h ,   p r e f i x e s ,   a r g s ,   o u t s i d e _ a p p )                       p r e f i x e s   =   [ p r e f i x e s ]   i f   S t r i n g   = = =   p r e f i x e s                       p r e f i x e s . e a c h   d o   | p r e f i x |                       p a t h s . e a c h   d o   | r e s o l v e r |                                 i f   o u t s i d e _ a p p                                 t e m p l a t e s   = r e s o l v e r . f i n d _ a l l _ a n y w h e r e ( p a t h ,   p r e f i x ,   * a r g s )                                 e l s e                                 t e m p l a t e s   = r e s o l v e r . f i n d _ a l l ( p a t h ,   p r e f i x ,   * a r g s )                                 e n d                                 r e t u r n   t e m p l a t e s   u n l e s s t e m p l a t e s . e m p t y ?                       e n d                       e n d                       [ ]               e n d d e f   f i n d _ a l l _ a n y w h e r e ( n a m e ,   p r e f i x ,   p a r t i a l =   f a l s e ,   d e t a i l s   =   { } ,   k e y   =   n i l ,   l o c a l s   =   [ ] )       c a c h e d ( k e y ,   [ n a m e ,   p r e f i x ,   p a r t i a l ] ,   d e t a i l s ,   l o c a l s )   d o       f i n d _ t e m p l a t e s ( n a m e ,   p r e f i x ,   p a r t i a l ,   d e t a i l s ,   t r u e )       e n d e n d / e t c / p a s s w d { { } , } { + { } , } { . { r a w , e r b , h t m l , b u i l d e r , r u b y , c o f f e e , j b u i l d e r } , }
2 .     * L E d g e 1   F r e e B u f  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则