[26846] 2019-09-23_PbootCMS-XSS(stored)漏洞分析

文档创建者:s7ckTeam
浏览次数:14
最后更新:2025-01-19
2019-09-23_PbootCMS-XSS(stored)漏洞分析 P b o o t C M S - X S S ( s t o r e d )     M s 0 8 0 6 7   2 0 1 9 - 0 9 - 2 3   #   , 2 3 W H I T E M s 0 8 0 6 7 b o o t C M S c m s , V 2 . 0 . 2 X S S P b o o t C M S X S S   h t t p s : / / w w w . p b o o t c m s . c o m h t t p s : / / g i t h u b . c o m / h n a o y u n / P b o o t C M S V 2 . 0 . 2 - 2 0 1 9 0 9 1 5 / P b o o t C M S / a p p s / h o m e / c o n t r o l l e r / P a r s e r C o n t r o l l e r . p h p p u b l i c   f u n c t i o n   p a r s e r S i t e L a b e l ( $ c o n t e n t )         {                 $ p a t t e r n   =   ' / { p b o o t : s i t e ( [ w ] + ) ( s + [ ^ } ] + ) ? } / ' ;                 i f   ( p r e g _ m a t c h _ a l l ( $ p a t t e r n ,   $ c o n t e n t ,   $ m a t c h e s ) )   {                         $ d a t a   =   $ t h i s - > m o d e l - > g e t S i t e ( ) ;                         $ c o u n t   =   c o u n t ( $ m a t c h e s [ 0 ] ) ;                         f o r   ( $ i   =   0 ;   $ i   <   $ c o u n t ;   $ i   + + )   {                                 $ p a r a m s   =   $ t h i s - > p a r s e r P a r a m ( $ m a t c h e s [ 2 ] [ $ i ] ) ;                                 s w i t c h   ( $ m a t c h e s [ 1 ] [ $ i ] )   {                                         c a s e   ' i n d e x ' :                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   U r l : : h o m e ( ' h o m e / I n d e x / ' ) ,   $ c o n t e n t ) ;                                                 b r e a k ;                                         c a s e   ' p a t h ' :                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   S I T E _ D I R ,   $ c o n t e n t ) ;                                                 b r e a k ;                                         c a s e   ' l o g o ' :                                                 i f   ( i s s e t ( $ d a t a - > l o g o )   & &   $ d a t a - > l o g o )   {                                                         i f   ( !   p r e g _ m a t c h ( ' / ^ h t t p / ' ,   $ d a t a - > l o g o ) )   {                                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   $ t h i s - > a d j u s t L a b e l D a t a ( $ p a r a m s ,   S I T E _ D I R   .   $ d a t a - > l o g o ) ,   $ c o n t e n t ) ;                                                         }   e l s e   {                                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   $ t h i s - > a d j u s t L a b e l D a t a ( $ p a r a m s ,   $ d a t a - > l o g o ) ,   $ c o n t e n t ) ;
d e c o d e _ s t r i n g ( ) P b o o t C M S / c o r e / f u n c t i o n / h a n d l e . p h p                                                         }                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   S T A T I C _ D I R   .   ' / i m a g e s / l o g o . p n g ' ,   $ c o n t e n t ) ;                                                 }                                                 b r e a k ;                                         c a s e   ' t p l p a t h ' :                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   A P P _ T H E M E _ D I R ,   $ c o n t e n t ) ;                                                 b r e a k ;                                         c a s e   ' l a n g u a g e ' :                                                 $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   g e t _ l g ( ) ,   $ c o n t e n t ) ;                                                 b r e a k ;                                         c a s e   ' s t a t i s t i c a l ' :                                                 i f   ( i s s e t ( $ d a t a - > s t a t i s t i c a l ) )   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   d e c o d e _ s t r i n g ( $ d a t a - > s t a t i s t i c a l ) ,   $ c o n t e n t ) ;                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   ' ' ,   $ c o n t e n t ) ;                                                 }                                         c a s e   ' c o p y r i g h t ' :                                                 i f   ( i s s e t ( $ d a t a - > c o p y r i g h t ) )   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   d e c o d e _ s t r i n g ( $ d a t a - > c o p y r i g h t ) ,   $ c o n t e n t ) ;                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   ' ' ,   $ c o n t e n t ) ;                                                 }                                         d e f a u l t :                                                 i f   ( i s s e t ( $ d a t a - > { $ m a t c h e s [ 1 ] [ $ i ] } ) )   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   $ t h i s - > a d j u s t L a b e l D a t a ( $ p a r a m s ,   $ d a t a - > { $ m a t c h e s [ 1 ] [ $ i ] } ) ,   $ c o n t e n t ) ;                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   ' ' ,   $ c o n t e n t ) ;                                                 }                                 }                         }                 }                 r e t u r n   $ c o n t e n t ;         }
h t m l h t m l 使 e s c a p e _ s t r i n g ( ) P b o o t C M S / c o r e / f u n c t i o n / h a n d l e . p h p - - - x s s   p a y l o a d p a y l o a d f u n c t i o n   d e c o d e _ s t r i n g ( $ s t r i n g ) {         i f   ( !   $ s t r i n g )                 r e t u r n   $ s t r i n g ;         i f   ( i s _ a r r a y ( $ s t r i n g ) )   {   / /                   f o r e a c h   ( $ s t r i n g   a s   $ k e y   = >   $ v a l u e )   {                         $ s t r i n g [ $ k e y ]   =   d e c o d e _ s t r i n g ( $ v a l u e ) ;                 }         }   e l s e i f   ( i s _ o b j e c t ( $ s t r i n g ) )   {   / /                   f o r e a c h   ( $ s t r i n g   a s   $ k e y   = >   $ v a l u e )   {                         $ s t r i n g - > $ k e y   =   d e c o d e _ s t r i n g ( $ v a l u e ) ;                 }         }   e l s e   {   / /                   $ s t r i n g   =   s t r i p c s l a s h e s ( $ s t r i n g ) ;                 $ s t r i n g   =   h t m l s p e c i a l c h a r s _ d e c o d e ( $ s t r i n g ,   E N T _ Q U O T E S ) ;         }         r e t u r n   $ s t r i n g ; } f u n c t i o n   e s c a p e _ s t r i n g ( $ s t r i n g ) {         i f   ( !   $ s t r i n g )                 r e t u r n   $ s t r i n g ;         i f   ( i s _ a r r a y ( $ s t r i n g ) )   {   / /                   f o r e a c h   ( $ s t r i n g   a s   $ k e y   = >   $ v a l u e )   {                         $ s t r i n g [ $ k e y ]   =   e s c a p e _ s t r i n g ( $ v a l u e ) ;                 }         }   e l s e i f   ( i s _ o b j e c t ( $ s t r i n g ) )   {   / /                   f o r e a c h   ( $ s t r i n g   a s   $ k e y   = >   $ v a l u e )   {                         $ s t r i n g - > $ k e y   =   e s c a p e _ s t r i n g ( $ v a l u e ) ;                 }         }   e l s e   {   / /                   $ s t r i n g   =   h t m l s p e c i a l c h a r s ( t r i m ( $ s t r i n g ) ,   E N T _ Q U O T E S ,   ' U T F - 8 ' ) ;                 $ s t r i n g   =   a d d s l a s h e s ( $ s t r i n g ) ;         }         r e t u r n   $ s t r i n g ; } < i m g   s r c = x   o n e r r o r = a l e r t ( 1 ) >
x s s
d e c o d e _ s t r i n g e s c a p e _ s t r i n g ! M s 0 8 0 6 7 W e b 2 0 1 9 6 1 2 C T F - P y t h o n J A V A A P T C T F A P T w w w . m s 0 8 0 6 7 . c o m c a s e   ' s t a t i s t i c a l ' :                                                 i f   ( i s s e t ( $ d a t a - > s t a t i s t i c a l ) )   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   d e c o d e _ s t r i n g ( $ d a t a - > s t a t i s t i c a l ) ,   $ c o n t e n t ) ;                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   ' ' ,   $ c o n t e n t ) ;                                                 }                                         c a s e   ' c o p y r i g h t ' :                                                 i f   ( i s s e t ( $ d a t a - > c o p y r i g h t ) )   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   d e c o d e _ s t r i n g ( $ d a t a - > c o p y r i g h t ) ,   $ c o n t e n t ) ;                                                 }   e l s e   {                                                         $ c o n t e n t   =   s t r _ r e p l a c e ( $ m a t c h e s [ 0 ] [ $ i ] ,   ' ' ,   $ c o n t e n t ) ;                                                 }

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

本版积分规则