[hack]教你用本地漏洞Windows Token Kidnapping进行网站提权

2010年8月18日星期三 | | |

话说很久很久没有爆过Windows下比较有影响的漏洞了,这回终于微软也可爱了一回,爆了个可以让大家爽歪歪的本地权限提升漏洞。如果你手里有一大批以前提不了权限的Webshell的话,看完本文之后就赶紧拿出来提权去,效果还是蛮不错的。因为微软并没有修补这一漏洞,只是在安全公告里做了提醒(详见 http://www.microsoft.com/technet/security/advisory/951306.mspx)。

  受此漏洞影响的系统:

  Windows XP Professional Service Pack 2

  Windows XP Professional Service Pack 3

  Windows Server 2003

  Windows Vista

  Windows Server 2008

  漏洞信息:

  Microsoft Windows是一款流行的操作系统。漏洞是由于在NetworkService或LocalService上运行的代码,可以访问同样是在 NetworkService或LocalService上运行的进程,部分进程允许提升权限到LocalSystem。对于IIS,默认安装是不受影响的,但以Full Trust运行的ASP.NET代码受此漏洞影响,如果权限低于Full Trust,也不受此漏洞影响。同样ASP代码不受此漏洞影响,只有ASP.NET才受影响。针对SQL Server,如果用户以administrative权限运行代码,则受此漏洞影响。针对Windows Server 2003,攻击者可以通过MSDTC获取token访问其他同样token的进程,从而提升权限。任何具有SeImpersonatePrivilege 的进程都有可能造成权限提升。

  漏洞相关描述就先看这么多了,本地权限提升嘛,当然前提是你要能访问到Windows,比如你已经获得了目标的一个Webshell,而且这个目标支持ASP.NET程序,而你又能够执行命令,那么基本上这台服务器就跑不掉了(当然还得人家没做相应的安全设置,因为这个洞也是可以防的嘛)。

  一、攻

  耳听为虚,眼见为实。那我们就来实地演练一下这个漏洞到底有多么的酷!

  测试环境:

  操作系统:Microsoft Windows Server 2003 Enterprise Edition Service Pack 2(已更新所有补丁)

  IIS版本:IIS 6.0

  ASP.NET版本:Microsoft.NET Framework 1.1

  如图1。

                     教你用本地漏洞Windows <wbr>Token <wbr>Kidnapping进行网站提权 

  添加IIS支持.NET程序,然后在WEB目录放一个ASPX的Webshell。为了方便演示,直接使用ASPX脚本,其实用ASP的 Webshell也是可以的,前提是要目标支持ASPX(当前目录不支持也不要紧,ASP的Webshell能执行命令都不妨一试),而且 Webshell是可以执行命令的,如图2。

                        教你用本地漏洞Windows <wbr>Token <wbr>Kidnapping进行网站提权 

  然后就把利用程序上传到WEB目录(老外公布的东西,有源代码,编译好的利用工具和源代码都会打包在光盘里),然后就可以执行提权操作了。执行如下命令:

  ●/c D:\wwwroot\Churrasco.exe "net user hackest estidc.com /add"●

  Churrasco.exe是利用工具名,后面是要执行的命令,注意要用英文双引号括住。稍等一下之后返回执行结果,可以看到提示成功了,当然不同的环境PID可能不一样,如图3。

                                   教你用本地漏洞Windows <wbr>Token <wbr>Kidnapping进行网站提权

再看看是否真的成功添加了用户,这回放心了吧,证实已经成功添加了用户hackest,如图4。

                             教你用本地漏洞Windows <wbr>Token <wbr>Kidnapping进行网站提权 

  要添加进管理员组就执行如下命令:

  ●/c D:\wwwroot\Churrasco.exe "net localgroup administrators hackest /add"●

  然后就可以看到用户hackest已经老老实实地躲在管理员组里了,如图5。

                         教你用本地漏洞Windows <wbr>Token <wbr>Kidnapping进行网站提权 

  利用相当的简单吧,出乎你的意料?本地权限提升就是这么帅!利用就基本介绍完了,注意命令格式就可以了。

  二、防

  下面再介绍下怎么防止被黑客利用该漏洞胡作非为。

  IIS管理员可参考如下临时解决方案:

  在IIS管理器中使用建立一个已建立帐户,为IIS中为应用程序池配置WPI,并禁用MSDTC(Microsoft Windows Distributed Transaction Coordinator)。

  IIS 6.0:

  IIS6.0下可以按如下操作为应用程序池指定WPI:

  Internet 信息服务(IIS)管理器->本地计算机->应用程序池->右键点击"应用程序池"->选择"属性"->点击"标识"- >点击"配置"->在"用户名"和"密码"栏里输入工作进程要操作的帐户的用户名和密码->添加选择的用户到IIS_WPG组。

  禁用MSDTC可帮助保护受影响系统不被此漏洞利用,要禁用MSDTC,可执行如下步骤:

  点击"开始"->"控制面板"->"管理工具"->"服务",在弹出的服务管理界面,找到"Distributed Transaction Coordinator"项并双击打开属性对话框,在"启动类型"列表中选择"禁用"。如果服务已启动,停止该服务,然后点击确定退出。也可以在CMD窗口里使用如下命令停止和禁用MSDTC服务:

  ●sc stop MSDTC & sc config MSDTC start= disabled●

  IIS 7.0:

  IIS7.0下可以使用命令行工具appcmd.exe为应用程序池指定WPI:

  在CMD中,更改至%systemroot%\system32\inetsrv目录,使用如下语法执行appcmd.exe命令,string是应用程序池名,username是指定给应用池帐户的用户名,password字符串是帐户密码:

  ●

  appcmd set config /section:applicationPools /

  [name='string'].processModel.identityType:SpecificUser /

  [name='string'].processModel.userName:string /

  [name='string'].processModel.password:string

  ●

  注:应用程序池身份标识在IIS7中动态添加到IIS_WPG组中,无需手动添加。

参考:http://blog.sina.com.cn/s/blog_5f64b3b20100cu40.html
 
我的QQ空间
用Churrasco.exe进行提权的方法(附下载地址)
说起WebShell提权的方法网上文章是多得所处可见!那么在这里我写...
 

0 评论:


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]