大家好,我是ABC_123,不知不觉,我一个人已经连续写了51篇原创文章了。本期复盘一次之前做过的某运营商的外网打点到内网横向过程,由于是好多年前的了,很多细节记不清了,但是关键步骤还记得。这次渗透过程的特点是内网很大,打到了域控及核心数据库区,但是却没用到什么高深技术,用的都是常规手段,经验很重要。接下来就把完整过程分享给大家,希望对大家有一些帮助。
欢迎关注我的公众号"ABC123安全研究实验室",ABC_123坚持99%原创,不抄袭文章,不发水文,不发广告。
首先放出一张我做的渗透测试流程图,方便大家理解整个过程。
首先客户给出了一个excel的资产列表,这个资产类表已经被各个厂商搞过好几轮了,基本上在外网发现一个代码执行漏洞是很难的,但是不能给自己提前下结论,渗透测试该走的流程还是得走,也许就会有意外收获。于是我做了以下的工作:
1 把客户给的各种域名解析成ip地址,结合Excel表中已有的ip地址,合并去重,整理成一个ip地址的列表。
2 对上述ip地址进行全端口扫描,然后使用nmap进行服务识别,重点整理开放了HTTP/HTTPS的ip地址,形成URL列表。
3 各种漏洞测试与查找,结果在外网没有发现有价值的漏洞,于是我接下来又做了以下两件事情。
4 把前面整理的ip地址列表,扩充整理成C段列表,比如说出现了12.12.12.19、12.12.12.46等地址,那么我们就统一整理成一个C段12.12.12.1/24。
5 经过初步扫描,发现了一个属于客户的资产,但是客户自己却不知道。点开页面源码中有.action地址,直接用struts2工具就可以拿下权限。
6 对上述整理的URL列表挨个手工查看,通过经验一层层地翻看各种js文件和链接,又发现了一个废弃的3级域名的站点,上面直接一个struts2漏洞,然后又是拿下权限。
小结: 其中有一个Struts2漏洞,客户扫过好几轮了都没发现。原因是这个网站如果发现攻击行为超过3次,后续一段时间内就会直接返回另一个正常页面,导致工具继续扫描扫不出漏洞,因此这个Struts2漏洞只能手工测试才能发现,当然你用轮换代理的方式也能发现。
1 获取两个webshell之后,接下来就是搭建通往内网的代理通道了,这两个webshell都是不出网的,于是上传了reGeorg脚本,通过http隧道对内网进行渗透。这两台服务器都是Windows主机,IP属于192.168.x.x段。
2 接下来在其中一台Windows主机上传了一个爆破密码的小工具,另一台Windows主机不作任何扫描,如果权限丢失,至少还有一个入口存活。一般不建议在本地用Proxifier挂上代理的方式进行扫描,因为http隧道代理通常不稳定,这样做容易导致扫描结果大量漏报。这样很快通过SMB口令、SQLServer口令提权、SSH口令、RMI 1099代码执行等方式,获取了几台内网主机权限。
3 接下来通过拿到的权限,收集本地shadow文件、linux环境变量、linux的history文件、浏览器记录、服务器上的数据库配置文件等,继续做成密码字典,重新进行内网各种口令爆破,继续拿权限,这样周而复始做过几轮之后,拿了很多权限,有windows主机,也有Linux主机。
4 通过整理已经获取的主机权限发现,内网获取的权限集中在192.168.x段,内网各段功能划分比较规整,比如在192.168.1.1/24网段内,存放的都是Linux的FTP服务器,提供一些操作系统镜像文件、常用软件、各种文档的下载;在192.168.19.1/24网段内,有一些win7系统,还有一些打印机设备,推测是一些员工机器。
接下来需要想办法获取10.x的机器,一般重要的系统都放在10.x网段。于是在获取的主机权限上,挨个执行ipconfig /all命令并分析结果,挑选了一台双网卡机器作为跳板机,它同时能通192.168.x和10.x网段,接下来面临的问题就是怎么找到10.x网段的存活机器,因为这个网段太大了。
我记得当时试过了nmap判断内网存活主机的命令,我记得命令很长很长,各种参数,但是这个命令怎么说呢,有效果,但是在当时的内网环境中效果一般,很多机器是禁ping的扫不出来。
最终研究了好长时间,最终在跳板机上上传一个扫描snmp弱口令的工具,很快找到了10.x网段内的10几个snmp服务弱口令,通过一个snmp信息查看工具,每一个snmp口令登陆之后通过OID查看各种信息,有的SNMP服务可以看到很多内网IP地址,比如说10.10.2.13、10.23.1.106、10.16.0.121等等,于是我把这些10.x网段的IP地址整理成列表,然后扩充成相应的C段,然后对这些C段列表扫描常用的几个端口,用这种方法快速得到10.x的一些存活机器,接下来又是放上扫描工具扫描一下试试。
使用工具在10.x段内进行漏洞扫描,通过各种口令、通过各种漏洞获取了很多内网服务器权限,部分机器是有多个管理员账号的,本地提取shadow文件,对hash进行破解,找到了两个疑似运维账号的弱口令yunwei:[email protected]、[email protected],接下来使用这两个密码,在内网重新扫描,最终发现了一台最为关键的linux主机,在这个主机执行netstat -an发现,连接着众多的10.x段服务器,最终在这台机子上,上传一个二级代理,后续的内网横向就以此为跳板机。把netstat -an结果中的很多10.x的网段进行整理,重新进行漏洞扫描及密码爆破。这个二级代理所在的网段,大概许久没人进来过,所以权限非常好拿,各种漏洞很多,没啥技术含量,最终找到了一台非常大的mysql数据库权限,后续又进入了Oracle核心数据库区,这里就不展开说了。
最后说一下域控权限获取,放在最后讲是怕给大家误导。有一天有一个管理员登录了我在内网的一个跳板机,在3389连接框上面显示了从未见过的账号,于是赶紧用mimikatz提取哈希,发现是一个高权限的域管账号。
拿了域控自然是很高兴,但是别高兴得太早,这个域控能控制大约800多台主机,我记得当时域内有很多英文的操作系统,还有一些有关HP的服务器,我在里面转了一晚上,没找到有价值的业务系统,最后我也没搞明白这么多机器是用来做什么的。所以这个域控拿到手,看起来很高大上,对进一步内网横向工作用处不大,所以果断放弃,寻求其它思路继续进行内网横向工作。
1. 外网打点需要注重信息收集,客户给的资产不一定准确,需要自己收集扩充。
2. 漏洞的利用除了用好工具以外,手工测试也是必要的。
3. 通过ipconfig /all 及 netstat -an等简单的命令,在内网中定位了关键跳板机。
4. 本次内网横向的主要手段就是内网密码收集及密码整理爆破,不断扩充字典,以滚雪球方式扩大战果。
5. 在查找10.x网段的存活主机时,借助了snmp弱口令来确定内网存活ip段。
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
加入安全交流群
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读