[17890] 2019-09-05_基于JS语义分析的Dom-XSS自动化研究

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2019-09-05_基于JS语义分析的Dom-XSS自动化研究 J S D o m - X S S   w 8 a y   H a c k i n g   2 0 1 9 - 0 9 - 0 5 w 1 3 s c a n j s # ! / u s r / b i n / e n v   p y t h o n 3 #   - * -   c o d i n g :   u t f - 8   - * - #   @ T i m e         :   2 0 1 9 / 8 / 2 1   4 : 5 6   P M #   @ A u t h o r     :   w 8 a y #   @ F i l e         :   t e s t _ j s . p y i m p o r t   u n i t t e s t f r o m   j s _ p a r s e   i m p o r t   D o m x s s c l a s s   T e s t C a s e ( u n i t t e s t . T e s t C a s e ) :         d e f   s e t U p ( s e l f ) :                 s e l f . s i n k   =   {                         " t y p e " :   " M e m b e r E x p r e s s i o n " ,                         " o b j e c t " :   {                                 " t y p e " :   " I d e n t i f i e r " ,                                 " n a m e " :   " d o c u m e n t "                         } ,                         " p r o p e r t y " :   {                                 " t y p e " :   " I d e n t i f i e r " ,                                 " n a m e " :   " w r i t e "                         }                 }                 s e l f . s o u r c e   =   {                         " t y p e " :   " M e m b e r E x p r e s s i o n " ,                         " o b j e c t " :   {                                 " t y p e " :   " I d e n t i f i e r " ,                                 " n a m e " :   " l o c a t i o n "                         } ,                         " p r o p e r t y " :   {                                 " t y p e " :   " I d e n t i f i e r " ,                                 " n a m e " :   " h a s h "                         }                 }         d e f   t e a r D o w n ( s e l f ) :                 p a s s
        d e f   t e s t _ t e s t 0 0 ( s e l f ) :                 t e s t _ 0 0   =   ' ' '                 d o c u m e n t . w r i t e ( l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ) ;                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 0 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 1 ( s e l f ) :                 t e s t _ 0 1   =   ' ' ' v a r   p a r a m   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ; d o c u m e n t . w r i t e ( " H e l l o   "   +   p a r a m   +   " ! " ) ; ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 1 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 2 ( s e l f ) :                 t e s t _ 0 2   =   ' ' '                 v a r   c u s t o o m   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;                 v a r   p a r a m   =   "   c u s t o o m : "   +   c u s t o o m ;                 d o c u m e n t . w r i t e ( " H e l l o   "   +   p a r a m   +   " ! " ) ;                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 2 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 3 ( s e l f ) :                 t e s t _ 0 3   =   ' ' '                 v a r   c u s t o o m   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;                 v a r   c u s t o o m 1   =   ' ' ;                 v a r   p a r a m   =   ' ' ;                 p a r a m   =   "   c u s t o o m : "   +   c u s t o o m ;                 p a r a m   =   p a r a m . r e p l a c e ( ' < ' , ' ' ) ;                 p a r a m   =   p a r a m . r e p l a c e ( ' " ' , ' ' ) ;                 d o c u m e n t . w r i t e ( " H e l l o   "   +   p a r a m   +   " ! " ) ;                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 3 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 4 ( s e l f ) :                 t e s t _ 0 4   =   ' ' '                 v a r   p a r a m   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;                 v a r   d   =   d o c u m e n t . c r e a t e E l e m e n t ( ' d i v ' ) ;                 d . i n n e r H T M L   =   p a r a m ;                 d o c u m e n t . w r i t e ( d ) ;                 ' ' '
                ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 4 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 5 ( s e l f ) :                 t e s t _ 0 5   =   ' ' '                 v a r   p a r a m   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;                 i f   ( p a r a m ) {                         v a r   d   =   d o c u m e n t . c r e a t e E l e m e n t ( ' d i v ' ) ;                         d . i n n e r H T M L   =   p a r a m ;                         i f   ( d o c u m e n t . b o d y   ! =   n u l l ) {                                 d o c u m e n t . w r i t e ( d ) ;                         }                 } e l s e {                         d o c u m e n t . w r i t e ( ' n o   c o n t e n t ' ) ;                 }                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 5 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 6 ( s e l f ) :                 t e s t _ 0 6   =   ' ' ' f u n c t i o n   g e t ( ) {         l e t   p a r a m s   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;         r e t u r n   p a r a m s ; } l e t   p a r a m   =   g e t ( ) ; d o c u m e n t . w r i t e ( " H e l l o   "   +   p a r a m   +   " ! " ) ;                                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 6 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 7 ( s e l f ) :                 t e s t _ 0 7   =   ' ' ' f u n c t i o n   g o ( ) {         l e t   p a r a m   =   g e t ( ) ;         d o c u m e n t . w r i t e ( " H e l l o   "   +   p a r a m   +   " ! " ) ; } f u n c t i o n   g e t ( ) {         l e t   p a r a m s   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ;         l e t   a   =   0 ;         r e t u r n   a ; } g o ( ) ;         ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 7 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t F a l s e ( x s s . e x p l o i t ( ) )
        d e f   t e s t _ t e s t 0 8 ( s e l f ) :                 t e s t _ 0 8   =   ' ' ' f u n c t i o n   x y z ( a s i a ) {   r e t u r n   a s i a ; } m a n g o   =   l o c a t i o n . h a s h . s p l i t ( ' # ' ) [ 1 ] d o c u m e n t . w r i t e ( x y z ( m a n g o ) ) ;                                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 8 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 0 9 ( s e l f ) :                 t e s t _ 0 9   =   ' ' ' f u n c t i o n   t i m e d M s g ( a b c , c a l l b a c k ) {     d o c u m e n t . w r i t e ( c a l l b a c k ) ; } v a r   c a l l   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ; t i m e d M s g ( " 1 2 3 " , c a l l ) ;                                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 0 9 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 1 0 ( s e l f ) :                 t e s t _ 1 0   =   ' ' ' f u n c t i o n   t i m e d M s g ( a b c , c a l l b a c k ) {     d o c u m e n t . w r i t e ( c a l l b a c k ) ; } v a r   c a l l   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ; v a r   c h e c k = 1 1 1 ; c h e c k   =   t i m e d M s g ; c h e c k ( " 1 2 3 " , c a l l ) ;                                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 1 0 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )         d e f   t e s t _ t e s t 1 1 ( s e l f ) :                 t e s t _ 1 1   =   ' ' ' f u n c t i o n   a p p l y ( a b c , c a l l b a c k ) {     r e t u r n   d o c u m e n t . w r i t e ( c a l l b a c k ) ; } v a r   c a l l   =   l o c a t i o n . h a s h . s p l i t ( " # " ) [ 1 ] ; a p p l y ( " 1 2 3 " , c a l l ) ;                                 ' ' '                 x s s   =   D o m x s s ( t e s t _ 1 1 )
1 1 1 1 x s s                 x s s   =   D o m x s s ( t e s t _ 1 1 )                 x s s . s e t ( s e l f . s i n k ,   N o n e ,   s e l f . s o u r c e )                 s e l f . a s s e r t T r u e ( x s s . e x p l o i t ( ) )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则