网站提权,我用本地漏洞Windows Token Kidnapping
2008/11/10 14:25 by hackest 本站原创
题目:网站提权,我用本地漏洞Windows Token Kidnapping
作者:hackest [H.S.T.]

此文章已发表在《黑客X档案》2008年第11期杂志上
后经作者发布在博客上,如转载请务必保留此信息!


话说很久很久没有爆过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。

点击在新窗口中浏览此图片

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

点击在新窗口中浏览此图片

然后就把利用程序上传到WEB目录(老外公布的东西,有源代码,编译好的利用工具和源代码都会打包在光盘里),然后就可以执行提权操作了。执行如下命令:
●/c D:\wwwroot\Churrasco.exe "net user hackest estidc.com /add"●
Churrasco.exe是利用工具名,后面是要执行的命令,注意要用英文双引号括住。稍等一下之后返回执行结果,可以看到提示成功了,当然不同的环境PID可能不一样,如图3。


点击在新窗口中浏览此图片

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

点击在新窗口中浏览此图片

要添加进管理员组就执行如下命令:
●/c D:\wwwroot\Churrasco.exe "net localgroup administrators hackest /add"●
然后就可以看到用户hackest已经老老实实地躲在管理员组里了,如图5。

点击在新窗口中浏览此图片

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


二、防

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

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组中,无需手动添加。
(文章中涉及到的工具Churrasco.exe、x.aspx已经收录在光盘中)
COMMENT[6]
小帅
2009/01/03 19:43
grin非system
注意牙齿!
ainideX
2008/11/23 12:56
就用你这招拿下了台服务器。。呵呵
不是我的招,我只是个职业翻版的穷家伙
ninty
2008/11/17 19:37
妈的,为啥我现在对这玩意提不起兴趣????
能好好过日子就行,没有必要太执着于某些事情
shkeydeven
2008/11/16 17:30
恭喜,又挣稿费了,这个应该是你纯手工发现的吧,不会是其他有先发表了吧。。你还是蛮厉害的呦。。
我没那水平,纯属骗稿费行为。
如楼下所说,这么垃圾的东西……
FACK
2008/11/14 21:35
这种垃圾你也好意思投稿..老早就出来的东西了.还投什么稿哦.大部分人都晓得.
既然是大部份,那就是还有不知道的,那就有必要写。
幻影
2008/11/11 17:35
非常强大....
简直屡试不爽啊.....
以前没提下的用这个方法几乎都提下了.....
感谢hackest,祝你和你老婆早生贵子^_^
谢谢
分页: 1/1 第一页 1 最后页
发表评论
昵称 [注册]
网址
打开HTML 打开UBB 打开表情 隐藏 记住我