当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-067527

漏洞标题:日本北海道大学能源管理系统加三菱Q系列PLC以太网模块泄露

相关厂商:日本北海道大学

漏洞作者: Z-0ne

提交时间:2014-07-05 17:50

修复时间:2014-08-19 17:52

公开时间:2014-08-19 17:52

漏洞类型:网络未授权访问

危害等级:高

自评Rank:10

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-05: 细节已通知厂商并且等待厂商处理中
2014-07-10: 厂商已经确认,细节仅向厂商公开
2014-07-20: 细节向核心白帽子及相关领域专家公开
2014-07-30: 细节向普通白帽子公开
2014-08-09: 细节向实习白帽子公开
2014-08-19: 细节向公众公开

简要描述:

针对三菱Q系列PLC的安全分析可以参照前文,而这个就是一个控制设备跑在公网的切实的案例,同样也是本次能根据title确认的一个案例。
理论上PLC如果没设置密码是可通过编程软件是实现远程管理操作,即工程上载和下载,停止运行等。
该案例中确认了涉事地址开放的web服务为ecoserver(应该同为三菱的小型web能源监控管理系统,主要用来监视当前电力使用情况,加载java后可以查看趋势图等)通过开放的udp端口确认了PLC型号为Q系列PLC(Q12DCCPU-V)。
识别方式可以参照上一篇分析,通用批量验证的话可以使用文中的基于NMAP的nse脚本。

详细说明:

Web部分截图:
首页

1.png


2.png


趋势图

3.png


测点信息

4.png


利用NMAP脚本识别的信息:

nmapxml.png

漏洞证明:

NMAP通用型发现脚本
tcp版本

http://plcscan.org/blog/wp-content/uploads/2014/07/melsecq-discover.nse_.txt


udp版本

http://plcscan.org/blog/wp-content/uploads/2014/07/melsecq-discover-udp.nse_.txt


-- Nmap Scripting Engine
-- required packages for this script
--
local bin = require "bin"
local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
local string = require "string"
local table = require "table"
--Output Example:
--PORT STATE SERVICE REASON
--5006/udp open Mitsubishi/Melsoft udp syn-ack
--| melsecq-discover:
--|_ CPUINFO: Q03UDECPU
description = [[
discovery Mitsubishi Electric Q Series PLC
GET CPUINFO
]]
author = "ICS Security Workspace(plcscan.org)"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"discovery","intrusive"}
function set_nmap(host, port)
port.state = "open"
port.version.name = "Mitsubishi/Melsoft Udp"
port.version.product = "Mitsubishi Q PLC"
nmap.set_port_version(host, port)
nmap.set_port_state(host, port, "open")
end
function send_receive(socket, query)
local sendstatus, senderr = socket:send(query)
if(sendstatus == false) then
return "Error Sending getcpuinfopack"
end
local rcvstatus,response = socket:receive()
if(rcvstatus == false) then
return "Error Reading getcpuinfopack"
end
return response
end
portrule = shortport.port_or_service(5006, "Melsoft/TCP", "udp")
action = function(host,port)
local getcpuinfopack = bin.pack("H","57000000001111070000ffff030000fe03000014001c080a080000000000000004" .. "0101" .. "010000000001")
local response
local output = stdnse.output_table()
local sock = nmap.new_socket()
local constatus,conerr = sock:connect(host,port)
if not constatus then
stdnse.print_debug(1,
'Error establishing connection for %s - %s', host,conerr
)
return nil
end
response = send_receive(sock, getcpuinfopack)
local mel, pack_head = bin.unpack("C", response, 1)
-- local mel, space_id = bin.unpack("C", response, 55)
local offset = 0
if ( pack_head == 0xd7) then
-- if ( space_id == 0x20) then
local mel
local mel, cpuinfo = bin.unpack("z", response, 42 + offset)
output["CPUINFO"] = string.sub(cpuinfo, 1, 16)
set_nmap(host, port)
sock:close()
return output
-- end
else
sock:close()
return nil

end


end

修复方案:

内部系统和外部设备还是不应该对外

版权声明:转载请注明来源 Z-0ne@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-07-10 17:14

厂商回复:

CNVD确认所述情况(不直接复现),已经转由CNCERT直接向JPCERT/JVN通报所述漏洞案例情况。给z-0ne建立的 rank 20。建议有兴趣在工控方面研究的白帽子共同参与。

最新状态:

暂无