<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("戴尔,戴尔VPN,VPN,VPN客户端,Netextender 0day,0day分析") PageTitle=stripHTML("戴尔VPN客户端Netextender 0day分析") ArticleIntro=stripHTML("VPN客户端是大多数IT安全专家都会使用的一个工具,使用它可以连接到一个“受限制”的局域网,进行匿名上网、确保网络流量安全等。但试想一下,如果VPN客户端可以导致机器的权限提升呢?") Articlecontent=stripHTML("            注意:目前这已经不再是一个0day了,因为当时我立即向戴尔安全团队报告了这个漏洞,你可以从这里了解报告的详细情况:《戴尔SonicWAL…") ModuleName = stripHTML("exploits") InfoID = stripHTML("224074") ChannelShortName=stripHTML("漏洞") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("exploits") %> 戴尔VPN客户端Netextender 0day分析 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 漏洞 >> 最新漏洞 >> 其它漏洞 >> 正文

[组图]戴尔VPN客户端Netextender 0day分析

2016/1/31 作者:亲爱的兔子 来源: 网络收集
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

         

  注意:目前这已经不再是一个0day了,因为当时我立即向戴尔安全团队报告了这个漏洞,你可以从这里了解报告的详细情况:《戴尔SonicWALL通知:关于在Mac OS X和Linux平台上,NetExtender客户端中的root权限提升漏洞

  0×01 从头说起(2015年9月)

  记得那是一个晴朗的日子,阳光明媚…哈哈,开个玩笑。

  其实,当时我在家里无事可做,所以我决定尝试在Mac OS X(2015年9月份的Yosemite系统)中寻找漏洞,因为它对我来说是一个全新的操作系统,所以在OS X上寻找漏洞是一个不错的尝试。

  我决定从最基本的内容开始学:首先搜索suid文件。

  1 从头说起(2015年9月)

  记得那是一个晴朗的日子,阳光明媚…哈哈,开个玩笑。

  其实,当时我在家里无事可做,所以我决定尝试在Mac OS X(2015年9月份的Yosemite系统)中寻找漏洞,因为它对我来说是一个全新的操作系统,所以在OS X上寻找漏洞是一个不错的尝试。

  我决定从最基本的内容开始学:首先搜索suid文件。

sudo find / -user root -perm -4000 -print

  除了常规的系统文件之外,有一个地方吸引了我:

1321668 -rwsr-xr-x@ 1 root  wheel    1816 Apr 17:47 /usr/sbin/uninstallNetExtender

  什么?我之前安装的VPN客户端(戴尔的NetExtender)创建了一个SUID二进制文件,下面就让我们对它进行探索分析吧。

  2 Pa(th)zuzu进入视线

  就在那几天,我正在编写一个脚本来测试PATH欺骗(PATH Spoofing)漏洞(注:PA(TH)ZUZU,现在它工作的很好),所以当时我觉得有一件事尝试一下应该会很有趣,那就是欺骗PATH。

  bash中的PATH变量($PATH)包含了所有二进制文件的目录,这样你就可以在不必输入完整路径的情况下调用这些程序了。例如下面的例子:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

  这是OS X系统中的默认$PATH。通过分解它可以看到,它实际上是5个目录:

       

  所以,如果我运行一条命令,那么将会从上面列举的几个目录中搜索命令中给出的文件名。以ping指令为例:

         

  所以,现在的问题是:如果在运行一个可执行文件之前,你改变了(欺骗)$PATH变量值,那么将会发生什么呢?

       

  经过上面的修改操作,从现在开始,如果我试着在不指定完整路径的情况下运行任何程序,那么将只会从“/tmp”目录下搜索该程序。

  3 好戏正式开始

  首先要尝试的是:查看二进制文件中是否存在一些有趣的字符串。

        

  哇,setuid !如果我们可以破解这个脚本,那么我们很可能获取到root权限。其他的字符串看起来没什么特别的,都是直接传递给bash。下面,让我们尝试体验一下欺骗的魔力吧。

  现在,我们将PATH指向一个目录(当前目录”.”),该目录中并没什么有趣的内容。

  

  等等,什么?它竟然能够正常工作!从这张图中我们可以看到,从卸载程序中调用了3个程序:

  1.dscacheutil

        2.arp

        3.rm

  现在,我们试着编写一个利用程序,它将会在当前目录中创建一个假的dscacheutil可执行文件(它仅仅调用bash),并会以被欺骗的$PATH调用卸载程序。

       

  我们执行chmod +x来授予执行权限,然后运行它:

    

   Root成功。(注意:这个利用能够同时在OS X和Linux系统上工作)

  4 最后感想

  在你安装软件之前和之后,一定要检查电脑上都存在什么内容,即使你非常信任软件来源,也要做这种检测,因为它能够有助于你摆脱不必要的麻烦。



  • 上一篇漏洞:

  • 下一篇漏洞: 没有了