经验总结
我的内网渗透沉思录
2019-10-13 09:10

最近一段时间都在捣鼓学校里拿下的一台老服务器,虽然说它所在的网段对于我的校园网来说并不算是内网了,但在这段时间里我也学习了很多的内网快速探测的技巧,很可惜没有再拿下一台机器。一方面是因为这台服务器有很长段时间没有管理员上线了,另一方面是因为在它同网段下的机器安全性还算不错(我的ms17-010都没有打成功) 但是这段时间的信息搜集和攻击手段都是值得来总结一下的,本文中采用msf作为后渗透主要工具,一切都已建立在得到了webshell的基础上了。

0X00 拿到机器webshell之后的思路

在拿到一台webshell机器后,看到权限并不高的时候,我们往往直接想着各种手段去提取到最高权限再做各种操作。其实我觉得我们首先应该考虑的是这台机器的重要程度,一般可以从几个角度来观察:

①这台服务器是否连接了内网中其他很多的服务器

②这台服务器对应的站点权值如何

③服务器的管理员是否经常上线

而这一次的渗透过程中,我其实是先从提权开始的,在多次失败之后才转向内网中其他的机器。

0X01 失败的提权历程

windows服务器的提权思路其实比linux简单很多,查找服务器上未打的补丁的漏洞,然后直接msf提权就可以了,我们systeminfo出来自己看补丁数是不太可能的了。这里推荐一个检测服务器补丁的脚本:Windows-Exploit-Suggester
附上下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester

工具的配置使用就不过多介绍了,其中集成的漏洞库还是可以的,我检测出来的结果如下

图片1.jpg

刚开始发现还是有可利用的exp还是很开心的,后来发现这些其实都没办法使用,因为这台机器是Windows2008R2(但是可惜没有永恒之蓝)

但是2008还有一个可利用的本地提权漏洞,也就是大家常说的烂土豆提权(又名ms16-075)

图片2.jpg

直接使用msf自带的exp,设置好payload和session就可以run了。但这个漏洞是要偷取管理员令牌来提权,所以是有几率的,像我试了好几次都没成功。payload我觉得要设置成bind类型,虽然获得了该机器的一个meterpreter会话,但payload中反弹的会话还是到本地的ip和端口。但是这里要提一点,bind连接一次会话,会在被攻击机器上开启一个监听端口,而且这个端口不会在服务结束后关闭。也就是说我们停掉了一次会话的话,下次bind再连接要换一个端口才可以。

而我们常用的反弹会话一般都要通过frp穿透到公网上的一台服务器,原理就是:被攻击机器反弹自己的shell给公网机器上的一个端口,而这台公网机器把这个端口的流量转发到我们自己内网机器的一个端口,我们在本地监听这个端口就可以获得会话了。frp内网穿透网上有很多教程了,后续我也会自己再弄一个服务器来做frp(现在用的是大哥的)

我的提权尝试就到这结束了,因为我觉得可以先去它的内网漫游一下!

0X02 意外发现:数据库!

经过了一晚上的各种提权尝试失败后,我打算第二天再通过meterpreter会话来加路由进内网漫游。

一夜过去了......

在我的jsp课程上打开了电脑正准备大干一场!一看我的frp无法连接上了!!!我靠,这不会意味着我以后都不能内网穿透了吧!重装虚拟机,配置frp服务器,一顿操作还是没修好,后来发现,可能是我昨天晚上没正常关闭frp客户端,导致服务端拒绝连接了。

然后我就打开了冰蝎连接webshell,准备在服务器上看看有没有什么敏感的文件(比如数据库)然后就发现了两个文件!web.config,mssql的连接账号密码地址一般会放在这里。

图片3.jpg

我发现了一个内网的地址,但是这个连接地址是带有domain的,要通过sqlserver来连接,所以先放在一旁,来先试试这个218的地址(因为218我是可以直接访问的)一开始我是用大马来连接数据库的,但其实msf也有一些mssql的模块很好用。比如先用mssql_login来测试账号密码是否正确,再用exploit/windows/mssql/mssql_clr_payload 这个模块来获得一个meterpreter会话(也要设置payload为bind模式)

图片4.jpg

0X03 又陷难题:密码破解失败

whoami一看把我笑了,直接就是system权限,说明这个数据库服务是由最高权限用户直接运行的,没有使用一个专门的数据库用户来运行。既然已经得到system权限了,我们就可以直接用mimikatz来查看当前主机的administrator的密码,在一个统一管理的小型内网中,很多机器的登录密码有可能是一样的。我们搜集这些密码做出字典来撞库。

图片5.jpg

但是这里我们看到mimikatz导出的明文密码,发现只有test用户,这是我之前用大马连数据库创建的,为什么没有administrator呢?因为管理员并没有在线,所以此时我们从在线的用户中导不出它的明文密码。但是我们可以导出administrator的hash值,然后再去彩虹表碰撞。这里我们可以使用hashdump或者msf自带的模块(mimikatz_command -f samdump::hashes)

图片6.jpg

0X04 思路转换:内网漫游

我拿去各大解密网站解,用hashcat跑也都没有把密码给解出来,只能说很可惜吧。这个时候我们就应该考虑对内网中的其他机器开始探测了,下面介绍一些可以快速探测可入侵机器的方法。在此之前,我们先配置好msf的数据库,这样有利于把我们探测的结果都放到数据库里,更方便观察。

图片7.jpg

我们先加一条路由到这台机器的内网网段中,(run get_local_subnets命令用于获取内网网段)当然也可以用arp -a来看。接着使用 run autoroute -s  xxx.xxx.xxx.xxx/28 就可以加路由到该网段中了,最好再用-p参数打印出来当前的路由表来看看是否成功。当然,我们也可以使用socks来做流量转发。因为加路由只能让我们的机器在msf里访问它的内网,而想要用浏览器来访问内网中的机器的话,我们就要做一个socks的流量转发,操作很简单。

图片8.jpg

添加工作区

然后我们建立一个工作区用于存储扫描的机器有关的信息,具体的操作如下

msf5 > workspace -a/-d demo 添加/删除工作区

msf5 > workspace demo 选择工作区

msf5 > workspace 查看当前所在的工作区

图片9.jpg

msf5 > db_rebuild_cache 在后台创建 msf 表结构[所谓的缓存],说白点儿,就是个建库,建表,建字段,写数据[将 msf 中的所有模块路径都写到指定的字段[该字段一般都会加索引]下,加快查询速度] 的过程

msf5 > db_connect 连接到指定的数据库上,如, db_connect msf:admin@127.0.0.1/msf

msf5 > db_disconnect 断开数据库 msf5 > db_export 把库中的数据导出到指定文件中

msf5 > db_import 把指定文件中的数据导到库中

msf5 > db_nmap 在 msf 内部调用 nmap 对目标内网进行各种扫描探测

msf5 > db_status 查看当前数据库的连接状态

msf5 > hosts 根据前面的各种结果,查看库中所有的机器列表

msf5 > loot 根据前面的各种结果,查看密码库

msf5 > services 根据前面的各种结果,查找特定服务,通常是指可被快速 getshell 的漏洞服务

msf5 > vulns 根据前面的各种结果,查找存在漏洞的主机,在前面利用的一些漏洞模块扫描时,会自动把扫描结果记录下来

msf5 > workspace 建立工作区

内网机器漏洞快速探测

图片10.jpg

首先使用ms17-010的检测模块来探测是性价比最高的,因为永恒之蓝漏洞一旦攻击成功就是system权限,对于我们的渗透非常有利。这里可以看到我们已经探测出有两台机器存在永恒之蓝漏洞,不过我在尝试攻击之后再次失败了。还有一台2003的32位的机器,这个我不知道到底能不能攻击,我用了32位的exp去攻击并没有成功,可能不支持2003版本的机器吧。

永恒之蓝攻击32位的机器不能直接通过msf上的模块,要从github上下载rb文件导入到msf中然后再利用,我还没有用虚拟机测试,不过按照网上的步骤来应该没问题。参考文章:https://blog.csdn.net/qq_41617034/article/details/91051614

图片11.jpg

然后可以探测ms08-067的漏洞,msf上并没有scanner模块,但是nmap里集成了扫描模块,所以我们直接用nmap的模块(nmap里还有很多其他的漏洞探测模块 /usr/share/nmap/scripts下)

后面的一些探测就直接以命令的形式记录,不再附上截图(太麻烦了)

use auxiliary/scanner/http/http_put   探测内网中可直接利用put方法的机器,直接getshell

use auxiliary/scanner/http/webdav_scanner  探测内网中开启了web服务的机器

use auxiliary/scanner/rdp/rdp_scanner   探测开启3389的机器,爆破,撞库

use auxiliary/scanner/ssh/ssh_version   探测开启22端口的机器,爆破,撞库

use auxiliary/scanner/postgres/postgres_version

use auxiliary/scanner/mysql/mysql_version

use auxiliary/scanner/mssql/mssql_ping   探测三种数据库,mssql应该用处更大一些

还有很多可探测的服务我就没有一一列出来,我都是照着micro8的渗透技术分享来的。

当然也可以直接通过远程桌面连到我们已取得最高权限的跳板机上去,在这台机器上找寻一些敏感文件(.txt/.doc/.mdb等等)像我做了几天的搜集,在这台机器上发现了很多其他机器的备份文件,那这些网站的目录结构一下就变得十分清晰了,我们可以找寻可利用的点来从web服务入手。同时我还发现了很多数据库的文件,里面有很多网站后台的账号密码,且都是弱口令(md5一下就解出来了)不过很可惜,这些文件都有些久远了,我在尝试登录这些网站后台时都显示密码错误,密码应该在之前就改过了,毕竟学校做了等保,不能还有这么多弱口令吧。

0X05 结语

我的这一次渗透测试就到这告一段落了,虽然没有获得第二台机器的权限,但也积累了很多内网快速探测的技巧。毕竟学习的过程更有收获,其实我可能遗漏了很多可拿到其他机器的点,但是因为这一次的渗透时间拉的有点长了,难免会有一点疲倦和遗漏(说明我应该就不适合做APT了吧)

相关实操推荐——EternalBlue漏洞利用复现,快去合天网安实验室学习操作吧!

上一篇:Meterpreterpowershell爬坑指南
下一篇:通过LD_PRELOAD绕过disable_functions
版权所有 合天智汇信息技术有限公司 2013-2021 湘ICP备14001562号-6
Copyright © 2013-2020 Heetian Corporation, All rights reserved
4006-123-731