第一次的pentest show总结
前言
开始之前,我特别感谢TryHackMe(英)、HackTheBox(美)、zero-point security(英)、offsec(美)等平台,使我们能够通过网络以线上的方式学习与练习,打破传统线下各地区教育资源差异大的限制,对网络教育资源方面做出全球性的巨大贡献。
事实上我这次连续参加了两场攻防演练。第一场攻防演练也是本人第一次攻防演练,将thm、htb等的知识交付于现实,由于参加的第一场某市的攻防演练没有任何经验,我独自一人也打的非常困难,并没有取得大成果反而还吃了不少亏。
但虽第一次演练没有好成果,但这五天的坐牢,让我对国内的常见环境、攻防演练如何进行等,有了很新的认识。
总结
最简单而具有代表性的总结:之前所学的知识为我带来了大量帮助,坚持不懈,重新分析所有信息、战至攻防最后一刻是我这次做的最正确的事情。
第二场某市的攻防演练,也就是我们本文的重点,有了第一次攻防演练的教训和哑巴亏、以及经验,第二场攻防在与队友的配合之下,取得很多成果,在众多企业队伍的高排名中,我们夺得了属于我学校队伍的一席之地。
以下所有内容均以技术角度进行分享,不涉及任何保密协议相关的内容,所有截图也已脱敏,确保不泄露任何不利信息,仅在技术角度做技术知识、经验共享。
第二场攻防我们的总分约1.44w,被打穿内网的单靶标 得分为5200左右。
首先就是外网方面,在这两场攻防里面用的最多的信息收集工具恐怕就是鹰图了,它的名字也和我很配,它给出来的资产信息也算是相当清晰和准确了,主要还是可以通过企业名字进行过滤和准确搜索,相当不错,正如它的名字一样
我们来看一下我们的一部分成果类型:
1.在两场攻防中,都有同样的且数量占比比较高的、且简单粗暴能获取web网站权限的方式:弱口令,我的队友弱口令战神凭借弱口令为我们取得不错的优势,进入后台我能够获取更多有价值的信息以及进行漏洞挖掘以进行危害提升。
2.除了弱口令外,还有不少Springboot的heapdump信息泄露,导致泄露某些web服务、数据库凭据,虽然大部分都是泄露的内网服务,但仍有一小部分泄露了外网的服务凭据。
3.扫描结果出现频率较多的 且100%存在漏洞的web框架就是nacos,只要碰到nacos,该说不说一百分的权限分是稳了,但也有一小部分的nacos是有料的,nacos后台有一些数据库、存储桶的连接凭据,我们在这次攻防中也获得了不少阿里云、七牛云、腾讯云存储桶控制权
另一个则是shiro,本场攻防打的第一个某某特别敏感的内网就是通过shiro的key爆破打进去的
(由于该内网涉及非常敏感,相关成果便不再叙述。)
4.数据库。虽然我们在外网获得的许多数据库不是空的就是权限低有限制,但仍有小部分可以利用其来获得敏感数据,以及相关的账号密码策略等有价值的信息,更有甚者可以通过udf、xp_cmdshell来getshell获得服务器系统控制权限。
5.OSS存储桶,其实我也是第一次认识存储桶这种东西,打之前我甚至都没有这种概念,但是我们只需要知道,存储桶大概率会包含大量无价值图片,但就我本次攻防所遇到的所有存储桶中,依然也有小部分存储桶存储着一些信息文件、甚至是身份证等敏感信息,这个时候,想要确定一个存储桶有没有我们想得到的东西,那就得看你翻找得够不够仔细和认真了,这是一个究极耗费时间的过程
被打穿的内网(故事)(纯享版)(爽文)
首先还是外网入口方面,某天晚上11点 12点的时候,我的弱口令战神队友在企业X的资产的web系统上找到了两个弱口令,我登录其中一个系统后台,进行信息收集与分析、漏洞挖掘时,我发现了一处RCE,并且通过C#常规reverse shellcode获得目标服务器系统控制权。
没有域
权限比较高,经过多次免杀尝试,最终我们直接通过WinDefender开启白名单更方便,这样省的所有工具都需要免杀,并且搭建了socks5隧道
我转储了lsass内存、转储sam,获得了admin的ntlm hash
然后发现端口开着5985,我直接用evil-winrm连了上去
然后找好兄弟帮我cmd5解开hash
根据这个密码,我发现了大概的密码策略,类似于:password123
于是使用crunch生成了000-999的字典,对内网进行爆破,然鹅没有任何成果。
我在administrator的桌面中,发现了一个类似配置文件的东西,里面保存着内网其它服务器的数据库的密码,我通过这个密码再次对内网进行密码喷洒
获得两个内网linux服务器的ssh root控制权(不要认为这是离谱的,更离谱的还在后面)
我在我手上控制的三台机器上反复进行各种信息收集,很漫长、很煎熬。
最终还是在linux服务器上发现了一条加密密码被存放在root家目录下,
继续让好兄弟帮我去cmd5解密,得到的结果类似于:password123
没错,这个密码类似于我们刚刚windows服务器的administrator的密码,只是数字部分不同
然后我再次对内网进行密码喷洒,发现一个mssql数据库的sa账户被匹配
但我000-999居然没有喷洒出来,其实我也早已知道什么原因了,因为目标开启了登录失败次数限制,这一点属于我的疏忽,也属于opsec问题
随后我登录数据库看了一下,成功找到约100万敏感数据
之后我尝试通过xp_cmdshell尝试getshell,发现卡住,我的队友弱口令战神也无法成功getshell
(我以为目标开了什么保护,直到比赛的最后一天,想知道结果请继续看下去)
就这样,我们的内网就在这里卡住了,再也没有了进展。
被卡住的这些天,我反反复复对已经获得的所有信息、所有服务器和数据库进行反反复复的重新分析,结果确实令人失望的,依然还是没有任何新的发现。
就在距离攻防结束的几个小时前,我们刚吃饱午饭,我们都觉得我们的分数10000分没办法再继续突破了,我们都尽力了,枯竭了,我的队友也还在做最后的挣扎,找了几个弱口令,但这距离我们希望的排名靠前还差些距离
我跟我的队友一样,也没有彻底摆烂,即使到了最后一刻,攻防即将结束,我也依然在翻看所有信息,所有已有的攻击路径,进行分析尝试发现新的攻击路径
我把前些天打失败了的mssql的xp_cmdshell不抱希望得又试了一遍
耶稣,它最终还是站在了我这边
居然离奇的成功了,我也不知道为什么那天没有成功,但现在它成功了,我们就此获得那台mssql服务器的低权限shell
这个shell真的很多命令都执行不了,目标也不出网,连接不到我们的vps,smb、http,以及living off the land,都没成功把提权payload下载到目标机器上
在面临攻防即将结束的压力下,我最终还是想到了一种简单的方法:通过我们在内网已经控制的其它windows服务器的UNC Path即smb来传输payload
我们恰好有一台windows服务器的完全控制权,直接在低权限的shell里面:
net use \\win-xxxxxxxxx\C$\ /user:administrator password123
结果成功了(没有截图,这一段没录上,msf免杀shell弹队友机器上后才开始录的)
后面的提权不用我说都知道了,毕竟是从mssql服务进来的,就不用作解释了
用的是PrintNotify Patato
https://github.com/BeichenDream/PrintNotifyPotato
直接通过unc path执行exe,无需下载到本地保存
最后我们成功拿到了system shell,并且在administrator的桌面中发现了一个bat
而这个bat也决定了我们的坚持不懈没有白费
我们发现了与之前密码策略类似的密码:password123abc
然后又做了密码喷洒,而这次的密码喷洒,没有让我们所有人失望,我激动的喊了出来
这次的喷洒结果,新增拿到了九台windows服务器的administrator
后续在这些服务器上进行本地信息收集,发现了内网其它不重复的近十台服务器数据库凭据即数据库控制权限,在数据库中发现了近百万敏感数据。
后面就是写报告时间了。
结束
这属于我第一次参加攻防演练且完赛,经历已经拉满了,我们都尽力了,虽然无法与那些知名企业队伍抗衡拿到第一或是前三,但是我此刻的成就感依然是拉满了,经历拉满了,体验感拉满了
就像开头说的那样,如果我不坚持硬怼这个看起来没有任何希望的内网,如果我不一直盯死这个看起来没任何希望的内网,或许我们就真的也就只能那样了
但我没有,前段时间学习的情报分析心理学,或许派上了用场,或许是这些过去的所有知识在默默的支持我的工作。
鹰眼、鹰爪、翅膀
不要轻易放弃,就像这样。
我要金鸟蛋,我们是罐菌,我音乐播放器
让我们继续保持学习