[13862] 2019-03-13_Java代码审计之SpEL表达式注入

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2019-03-13_Java代码审计之SpEL表达式注入 J a v a S p E L L a t e i n k   F r e e B u f   2 0 1 9 - 0 3 - 1 3 S p E L   S p r i n g   E x p r e s s i o n   L a n g u a g e   S p E L   U n i f i e d   E L S p E L     S p r i n g     S p r i n g     S p E L   i n s t a n c e o f   B e a n     L i s t 访 S p E L     p o m . x m l     m a v e n   " o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n - 3 . 0 . 5 . R E L E A S E . j a r " S p E L   使 S p E L   1 . S p E L   使 使   E x p r e s s i o n P a r s e r     S p e l E x p r e s s i o n P a r s e r   < p r o p e r t i e s >         < o r g . s p r i n g f r a m e w o r k . v e r s i o n > 5 . 0 . 8 . R E L E A S E < / o r g . s p r i n g f r a m e w o r k . v e r s i o n > < / p r o p e r t i e s > < d e p e n d e n c y >             < g r o u p I d > o r g . s p r i n g f r a m e w o r k < / g r o u p I d >             < a r t i f a c t I d > s p r i n g - e x p r e s s i o n < / a r t i f a c t I d >             < v e r s i o n > $ { o r g . s p r i n g f r a m e w o r k . v e r s i o n } < / v e r s i o n > < / d e p e n d e n c y >   E x p r e s s i o n P a r s e r   p a r s e r   =   n e w   S p e l E x p r e s s i o n P a r s e r ( ) ;   E x p r e s s i o n   e x p r e s s i o n   =   p a r s e r . p a r s e E x p r e s s i o n ( " ( ' H e l l o '   +   '   f r e e b u f ' ) . c o n c a t ( # e n d ) " ) ;   E v a l u a t i o n C o n t e x t   c o n t e x t   =   n e w   S t a n d a r d E v a l u a t i o n C o n t e x t ( ) ;   c o n t e x t . s e t V a r i a b l e ( " e n d " ,   " ! " ) ;   S y s t e m . o u t . p r i n t l n ( e x p r e s s i o n . g e t V a l u e ( c o n t e x t ) ) ;
2 . 使   E x p r e s s i o n P a r s e r     p a r s e E x p r e s s i o n     E x p r e s s i o n   3 . 4 .   E x p r e s s i o n     g e t V a l u e   S p E L   1 . E x p r e s s i o n P a r s e r     o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n . s p e l . s t a n d a r d   S p e l E x p r e s s i o n P a r s e r   使   p a r s e E x p r e s s i o n     E x p r e s s i o n     P a r s e r C o n t e x t     d e m o 使   P a r s e r C o n t e x t     P a r s e r C o n t e x t   # { } 使   p a r s e E x p r e s s i o n   # { }   H e l l o   W o r l d E v a l u a t i o n C o n t e x t     o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n . s p e l . s u p p o r t   S t a n d a r d E v a l u a t i o n C o n t e x t   使   s e t R o o t O b j e c t   使   s e t V a r i a b l e   使   r e g i s t e r F u n c t i o n   E x p r e s s i o n     o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n . s p e l . s t a n d a r d   S p e l E x p r e s s i o n   g e t V a l u e     s e t V a l u e   S p E L     -   使 使 " T ( T y p e ) "   j a v a . l a n g . C l a s s   " T y p e " " j a v a . l a n g " 使 访 使 访 使 p u b l i c   i n t e r f a c e   E x p r e s s i o n P a r s e r   {             E x p r e s s i o n   p a r s e E x p r e s s i o n ( S t r i n g   e x p r e s s i o n S t r i n g ) ;             E x p r e s s i o n   p a r s e E x p r e s s i o n ( S t r i n g   e x p r e s s i o n S t r i n g ,   P a r s e r C o n t e x t   c o n t e x t ) ;     } E x p r e s s i o n P a r s e r   p a r s e r   =   n e w   S p e l E x p r e s s i o n P a r s e r ( ) ; P a r s e r C o n t e x t   p a r s e r C o n t e x t   =   n e w   P a r s e r C o n t e x t ( )   {         @ O v e r r i d e         p u b l i c   b o o l e a n   i s T e m p l a t e ( )   {         r e t u r n   t r u e ;         }         @ O v e r r i d e         p u b l i c   S t r i n g   g e t E x p r e s s i o n P r e f i x ( )   {         r e t u r n   " # { " ;         }         @ O v e r r i d e         p u b l i c   S t r i n g   g e t E x p r e s s i o n S u f f i x ( )   {         r e t u r n   " } " ;         } } ; S t r i n g   t e m p l a t e   =   " # { ' h e l l o   ' } # { ' f r e e b u f ! ' } " ; E x p r e s s i o n   e x p r e s s i o n   =   p a r s e r . p a r s e E x p r e s s i o n ( t e m p l a t e ,   p a r s e r C o n t e x t ) ; S y s t e m . o u t . p r i n t l n ( e x p r e s s i o n . g e t V a l u e ( ) ) ;
使   j a v a   n e w   j a v a . l a n g   S t r i n g I n t e g e r i n s t a n c e o f   S p E L     i n s t a n c e o f     J a v a   使 " ' h a h a '   i n s t a n c e o f   T ( S t r i n g ) "   t r u e   E v a l u a t i o n C o n t e x t     s e t V a r i a b l e ( v a r i a b l e N a m e ,   v a l u e )   使 " # v a r i a b l e N a m e " S p E   使 " # r o o t " 使 " # t h i s " S p E L   使   S t a n d a r d E v a l u a t i o n C o n t e x t   r e g i s t e r F u n c t i o n   使   s e t V a r i a b l e     S p r i n g   M e s s a g e     o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n . s p e l . s t a n d a r d   D e f a u l t S u b s c r i p t i o n R e g i s t r y . j a v a   S p e l E x p r e s s i o n P a r s e r E x p r e s s i o n P a r s e r   p a r s e r   =   n e w   S p e l E x p r e s s i o n P a r s e r ( ) ;                 / /   j a v a . l a n g   访 C l a s s < S t r i n g >   r e s u l t 1   =   p a r s e r . p a r s e E x p r e s s i o n ( " T ( S t r i n g ) " ) . g e t V a l u e ( C l a s s . c l a s s ) ; S y s t e m . o u t . p r i n t l n ( r e s u l t 1 ) ;                 / / 访 S t r i n g   e x p r e s s i o n 2   =   " T ( j a v a . l a n g . 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   / 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 ' ) " ; C l a s s < O b j e c t >   r e s u l t 2   =   p a r s e r . p a r s e E x p r e s s i o n ( e x p r e s s i o n 2 ) . g e t V a l u e ( C l a s s . c l a s s ) ; S y s t e m . o u t . p r i n t l n ( r e s u l t 2 ) ;                 / / 访 i n t   r e s u l t 3   =   p a r s e r . p a r s e E x p r e s s i o n ( " T ( I n t e g e r ) . M A X _ V A L U E " ) . g e t V a l u e ( i n t . c l a s s ) ; S y s t e m . o u t . p r i n t l n ( r e s u l t 3 ) ;                 / / i n t   r e s u l t 4   =   p a r s e r . p a r s e E x p r e s s i o n ( " T ( I n t e g e r ) . p a r s e I n t ( ' 1 ' ) " ) . g e t V a l u e ( i n t . c l a s s ) ; S y s t e m . o u t . p r i n t l n ( r e s u l t 4 ) ; g i t   c l o n e   h t t p s : / / g i t h u b . c o m / s p r i n g - g u i d e s / g s - m e s s a g i n g - s t o m p - w e b s o c k e t g i t   c h e c k o u t   6 9 5 8 a f 0 b 0 2 b f 0 5 2 8 2 6 7 3 8 2 6 b 7 3 c d 7 a 8 5 e 8 4 c 1 2 d 3
  t h i s . s u b s c r i p t i o n R e g i s t r y   e x p r e s s i o n   t h i s . s u b s c r i p t i o n R e g i s t r y . g e t S u b s c r i p t i o n s ( s e s s i o n I d )     i n f o - > s u b - >   e x p r e s s i o n   e x p r e s s i o n . g e t V a l u e ( )   S p E L     f i l t e r S u b s c r i p t i o n s   @ O v e r r i d e p r o t e c t e d   v o i d   a d d S u b s c r i p t i o n I n t e r n a l ( S t r i n g   s e s s i o n I d ,   S t r i n g   s u b s I d ,   S t r i n g   d e s t i n a t i o n ,   M e s s a g e < ? >   m e s s a g e )   { E x p r e s s i o n   e x p r e s s i o n   =   n u l l ; M e s s a g e H e a d e r s   h e a d e r s   =   m e s s a g e . g e t H e a d e r s ( ) ;                 / /     S p E L     e x p r e s s i o n     h e a d e r s     s e l e c t o r   S t r i n g   s e l e c t o r   =   S i m p M e s s a g e H e a d e r A c c e s s o r . g e t F i r s t N a t i v e H e a d e r ( g e t S e l e c t o r H e a d e r N a m e ( ) ,   h e a d e r s ) ; i f   ( s e l e c t o r   ! =   n u l l )   { t r y   {                                 / /   e x p r e s s i o n   e x p r e s s i o n   =   t h i s . e x p r e s s i o n P a r s e r . p a r s e E x p r e s s i o n ( s e l e c t o r ) ; t h i s . s e l e c t o r H e a d e r I n U s e   =   t r u e ; i f   ( l o g g e r . i s T r a c e E n a b l e d ( ) )   { l o g g e r . t r a c e ( " S u b s c r i p t i o n   s e l e c t o r :   [ "   +   s e l e c t o r   +   " ] " ) ; } } c a t c h   ( T h r o w a b l e   e x )   { i f   ( l o g g e r . i s D e b u g E n a b l e d ( ) )   { l o g g e r . d e b u g ( " F a i l e d   t o   p a r s e   s e l e c t o r :   "   +   s e l e c t o r ,   e x ) ; } } }                 / /   e x p r e s s i o n     a d d S u b s c r i p t i o n     t h i s . s u b s c r i p t i o n R e g i s t r y t h i s . s u b s c r i p t i o n R e g i s t r y . a d d S u b s c r i p t i o n ( s e s s i o n I d ,   s u b s I d ,   d e s t i n a t i o n ,   e x p r e s s i o n ) ; t h i s . d e s t i n a t i o n C a c h e . u p d a t e A f t e r N e w S u b s c r i p t i o n ( d e s t i n a t i o n ,   s e s s i o n I d ,   s u b s I d ) ; }   f i l t e r S u b s c r i p t i o n s   - >   f i n d S u b s c r i p t i o n s I n t e r n a l   - >   f i n d S u b s c r i p t i o n s   - >   s e n d M e s s a g e T o S u b s c r i b e r s
s e n d M e s s a g e T o S u b s c r i b e r s   S p E L     h e a d e r s     s e l e c t o r     s e l e c t o r     h e a d e r     e x p r e s s i o n     t h i s . s u b s c r i p t i o n R e g i s t r y t h i s . s u b s c r i p t i o n R e g i s t r y     e x p r e s s i o n . g e t V a l u e ( )     S p E L     e x p r e s s i o n . g e t V a l u e ( )   B i n g o   S p E L     o r g . s p r i n g f r a m e w o r k . e x p r e s s i o n . s p e l . s t a n d a r d ,   e x p r e s s i o n . g e t V a l u e ( ) e x p r e s s i o n . s e t V a l u e ( ) S p r i n g   D a t a   C o m m o n s   R e m o t e   C o d e   E x e c u t i o n     S p E L   S i m p l e E v a l u a t i o n C o n t e x t S t a n d a r d E v a l u a t i o n C o n t e x t     S p E L     E v a l u a t i o n C o n t e x t S i m p l e E v a l u a t i o n C o n t e x t -     S p E L     S p a l   S t a n d a r d E v a l u a t i o n C o n t e x t -     S p E L   使 S i m p l e E v a l u a t i o n C o n t e x t     S p E L     J a v a     b e a n   使   S i m p l e E v a l u a t i o n C o n t e x t   S t a n d a r d E v a l u a t i o n C o n t e x t s p r i n g - m e s s a g i n g   R e m o t e   C o d e   E x e c u t i o n   S p E L   * L a t e i n k F r e e B u f

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则