Part1 前言
大家好,上期分享了一篇Shiro Oracle Padding反序列化漏洞无key的实战文章,这期讲一个MS12-020蓝屏漏洞的真实利用过程。这个案例源于2013年我在读研期间,印象是比较深的。在学校期间,我偶尔会帮网络部那边处理一些网站故障,还帮忙修补过安全漏洞。在那个年代,大学网站的漏洞是非常多的,基本上没有什么WAF设备防护。期间有一个大学网站大概是长时间没有人用,崩溃了,访问一直是卡死状态,服务器密码学校那边也不记得了。于是我就来了一顿操作,帮忙恢复了一下,中间也踩了不少坑。首先肯定是要想办法拿到服务器权限,然后帮学校把密码读出来,下面凭着记忆,把过程写出来。
Part2 研究过程
- Web应用层面
首先对这个特殊任务进行分析,首先是Web应用层面上,可以找各种Web漏洞拿权限,比如SQL注入漏洞、上传漏洞、列目录漏洞、XSS盲打后台、找CMS公开或未公开的漏洞、框架漏洞等。但是本次案例中Web应用崩溃了,访问不了,所以这个思路不适用。
- 中间件层面
Web应用没法搞,接下来重点看中间件上有没有可突破的点。从搜索引擎网页快照上看,大致判断中间件是IIS6.0。对于IIS中间件,可利用的漏洞有IIS PUT文件上传、IIS5.0远程代码执行、HTTP.sys远程代码执行漏洞(MS15-034)、IIS6.0远程溢出漏洞(CVE-2017-7269)等。在2013年,那时候IIS6.0中间件还没有爆出远程溢出漏洞(CVE-2017-7269),MS15-034这个漏洞没有能拿权限的exp,IIS中间件也没有开启PUT上传功能,所以是没办法直接PUT上传写shell。中间件这条路基本上也走不通。
( 下面放一个老工具的图,怀旧一下,zwell和桂林老兵写的,在10几年前检测IIS漏洞很好用,zwell就是现在goby和fafo搜索引擎的作者)
- 服务器IP层面
中间件IIS也没有漏洞可利用,那么只能把精力放在服务器层面上了。接下来nmap全端口扫一下服务器IP,看看开放了哪些端口。结果开放了135、139、445、80、3389端口(我处于学校内网中,所以445端口是开着的),操作系统识别为Win2003。
接下来分析一下这几个端口的服务有哪些可利用的漏洞:
135端口:可爆破Administrator的密码,135端口早年爆出过远程代码执行漏洞,但是貌似是02年还是03年左右的漏洞了,太老了,没法利用。我记得那时候很多人流行用135漏洞批量扫IP。
139端口、445端口:这两个端口都可爆破Administrator的密码,这里有些读者可能会想到MS08-067,但是没那么简单,因为当时的各种exp我都试过了,打不成功Win2003中文版系统。
( 放一个老工具的图,那个年代爆破密码这个工具特别好用,现在这个工具不行了)。
我试了BackTrack(BackTrack是Kali Linux的前身,那时候名字是BT4还是BT5的,记不清了)里的Metasploit打Win2003的中文系统,根本打不成功。我用Metasploit打Windows2003中文系统就从来没成功过,打Windows XP系统可以打成功。后期看雪论坛有人放出了MS08-067的适用于中文系统exp,还有很详细的分析文章,但那是好多年后的事情了,那个exp我后来也测试过,能打成功,但是也不太稳定。当时还没有NSA的方程式工具包泄露,否则很轻易就用MS17-010打下来了。
后来我又下载了国内大牛改的MS08-067的exp,对于Win2003系统同样也打不成功。
( 放个那时候工具的图,14年前的老工具了,现在可以用方程式工具包替代 )
接下来对445端口爆破账号密码,445端口爆破密码要比135、139、3389速度快很多,在内网环境中,有时候一秒就可以破几百次,挂了一个超大字典,结果没跑出密码。
组后只剩下3389端口了,3389服务可以爆破密码,但是速度是比445要慢太多了。况且刚才445的SMB服务,也没爆出密码,所以3389爆破密码是多余的。
- MS12-020蓝屏漏洞
这样貌似就没办法了,等到晚上去食堂吃饭,在回来的路上灵光一闪,来思路了!3389的RDP服务不是曾经爆出一个漏洞MS12-020吗?那么干脆用这个漏洞把服务器打蓝屏,重启一下服务器,网站不就恢复正常了吗?
但是为了谨慎起见,我想到了以下几个情况:
1、MS12-020蓝屏后,Win2003会不会重启?可别一直卡在那里就不动了。
2、重启后IIS服务器是不是能自启动,别重启后,IIS6.0服务起不来了。
为了确保万无一失,还是搭建虚拟机环境测试一下吧,我本地搭建了一个虚拟机环境,使用Metasploit的MS12-020漏洞攻击后,蓝屏后几十秒,服务器就重启了,IIS6.0默认是自启动的,也可以顺利起来。没有问题,蓝屏这个思路可以在实战中应用。
于是开始实战了,结果意外出现了,不知道为什么,Metasploit的MS12-020的exp怎么打都不蓝屏,打了7、8遍没打蓝屏。
接下来怎么办,我在想,学校的这种系统很少有打补丁的情况,在当时,大学网站是不太关心网络安全问题的。想来想去换个exp再试试吧,于是我从网上下载了另一个利用程序,用nc发一个包过去(当时nc很流行,测试上传漏洞都是用nc来测试的),结果服务器立马就蓝屏了。蓝屏后,服务器自动重启,部署在IIS上的网站也恢复正常了。
( 放一个其它工具的图吧,我清楚地记得当时是用nc载入一个poc文本文件发包利用成功的,但是工具找不到了,没法贴图了 )
蓝屏后是这个样子,过几十秒系统会自动重启,一切自启动的服务恢复正常。
网站恢复正常后,后续通过Web应用的后台上传漏洞打进去恢复密码的,都是常规思路,这里就不多讲了。
Part3 总结
1. 虚拟机环境与实战环境是不一样的,一个漏洞准备多个EXP看来很有必要。
2. 蓝屏漏洞有时候也可以派上用场,具体情况具体分析。在日常红队项目中,大家尽量提前跟客户报备一下,因为现在一个服务器上放的业务很多,蓝屏重启可能造成不可挽回的损失,这里只是提供一个思路。
3. Tomcat等中间件在Windows下尽量别用这个方法了,因为很多都是批处理脚本启动的,重启后,就起不来了。