作者是一名专职的漏洞赏金猎人,与中东和北非地区的一家安全服务提供商签订了“信息安全分析师”合同。
今天我将与您分享一个非常激动人心的故事,讲述我在与上述公司的最新合作中发现的一些发现。
注意:这些漏洞是在未公开的约定中发现的,因此我们将其称为redacted.gov.lol
我像往常一样通过打开邮件开始工作,结果发现我将负责为关键的外国客户进行“黑匣子Web渗透测试”。
每次会议开始后召开例行会议并按惯例进行。我收到的范围只有一个URL,以为我可以找到一个注册功能,重设密码功能或其他功能,以便更轻松地访问应用程序以进行渗透测试。
实际上,在验证过程中,这只是带有验证码的登录页面,除了登录功能之外没有其他功能。
此外,由于验证码会在单击“登录”后弹出(试图绕过验证并失败),并且由于缺乏有关用户名的构造的知识(是否有特殊字符?仅数字,仅字母…等等等等),因此无法暴力破解。
然后试图目录扫描,看看能不能扫到一些有趣的东西。
幸运的是,我找到了tomcat目录。
首先映入我脑海的是尝试登录/html/manager/
,但不幸的是,它已通过基本身份验证进行了保护。
好吧,我使用最知名的Tomcat(用户/密码)字典,尝试结合Metasploit的tomcat_mgr_login
模块进行暴力破解,但幸运女神没有眷顾到我。
经过深入探查,发现一个“Improper Error Handling(不合理的错误处理)”页面暴露了Tomcat的版本,我试图利用该版本的某些CVE,但遗憾的是依然无果。
下一步是使用错误凭证登录,以查看该网站是如何处理该凭据的,并且从响应的cookie中,我能够确定他们正在使用F5 BigIP。
毫无疑问,我开始使用新公开的远程代码执行(RCE)尝试渗透他们的BigIP。
但依旧不行。(怀疑人生中)
在对F5 BigIP及其流行的错误配置进行了一些研究之后,尝试了一些BigIP已知的错误配置,但尝试了所有内部信息披露(池名称,负载平衡cookie,后端IP),都无功而返。
由于非常失望,我关闭了笔记本电脑,去和我的伙计们玩LOL去了。
第二天,我喝了一杯mojito,决定换个思路。
我再次重复了侦察步骤,重新扫了一遍目录,但用的字典更大,这次我发现了3个新的HTML页面。
• 第一个是空白页。
• 第二个页面就像是无限重定向到其自身的循环。
• 第三个是重复的登录页面。
我开始阅读这些页面的源代码,在第三个页面忽然找到了一个线索,原因:它的行数多于原始登录页面。
因此,我开始仔细研究这两个代码行,令人惊讶的是,后者中还有一些其他的JS文件。
这些HTML、JS文件包含多个url页面,但是需要进行身份验证以及诸如(请求方法,源url,内容类型等)等信息才能访问。
将这些url提取出来,并根据此信息为每个url构建了完整的请求,留作后用。
然后发现了一个JS文件,它包含一个指向HTML页面的链接,查看源代码发现了另一个请求,该请求与早期发现的请求相类似。
在此请求的数据段,设置了一个名为User-Token
的参数。
那时,我几乎可以肯定就可以搞定。
我试图在我之前保存的每个请求中添加这个弥足珍贵的User-Token
值…
然后,等灯瞪噔,进去了。
但是,美中不足是无法纵览整个应用,因为没有GUI界面,只有API调用。
将令牌添加到之前保存的请求列表中,然后发送,然后收集每条响应,然后在收集到的JS文件中提取出更多的url和参数,然后再添加倒请求列表中,然后再发送。(重复此操作约20次)
最终……我发现了一个带有HTML响应的奇怪请求,它的设计目的是在某种菜单栏上添加一个图标(老实说,我不知道它的用途是什么………)
往下跟踪。
从提供的列表中选择一个图标,然后单击“继续”,然后选择要编辑的菜单,然后完成整个流程,并通过“返回主页面”按钮到达最后一页。
点击该按钮后,重定向到了登录页面。
但是忘记添加user-token
,苦笑.jpg,所以被逼无奈,重复了此步骤,将该令牌添加了进去。
嚯嚯嚯嚯嚯嚯哈,访问到的页面有一个自定义“命令执行”功能。
我尝试了所有我知道的命令,但都被过滤了,所以意识到这不是一个bug,而只是一个功能而已。
我尝试了命令“ tree”(在之前的JS文件中注意到的),结果,目瞪口呆,整个网站url及其说明信息都打印了出来。
但是查看之后,发现并没有什么用,所以我决定只搜索有用的url。
经过一番收集,发现一些新的url,描述为:“Admin Console”。
我尝试使用令牌访问它们,但“访问被拒绝”……那时的我才发现,自己还不是管理员……所以回头查看所有的url。
我发现一个url允许查看个人资料的信息(例如姓名,角色,创建日期等),然后发现我是特权较低的用户。
因此,我试图浏览所有管理员页面,以期找到无需访问控制(BAC,Broken Access Control)的页面,最后还真找到一个,居然还是一个“复制用户”页面。
分析该页面的参数之后,发现能够将数据库中的现有用户复制到新用户中!
我们尚不知道任何用户名,起初尝试使用admin失败。然后尝试使用Administrator,成功了,然后将Administrator的“角色”复制到一个名为GeneralEG的新用户中。
使用新的凭据登录了该应用程序之后,看到了一些UI页面。
我再次查看了 “Admin Console” 页面,发现可以任意浏览其二级网页(例如“创建用户”)。
我浏览了后一个页面,发现能够创建具有任何角色的用户……但是令人惊讶的是,我能够选择用户对应的应用,因此扩展了列表,发现可以将“ Evil Admin”插入到7000+个属于这个国家的政府网站,包括(总统选举委员会,国家秘书办公室,总统行政委员会等)。也就是说,我能在这个国家做我想做的一切……
到这里我就停止测试了,而不是潜入这些“高度机密区域”,毕竟,牢饭不是很好吃hhhhhh
后来他们告诉我,该网站是政府E-Systems
链的头网站,主要作用是为其他网站创建用户。
作为记录,内网之前已经做过很多渗透测试,因此只有少量漏洞,但是机缘巧合我又找到一个远程命令执行漏洞。后来又找到另外一个后台SQL注入漏洞,能够直接访问上述服务器,但最好还是不要进入此机密区域!
我确信,如果点进去了,我的好奇心会让我在这个国家监狱呆很长时间!
最后,我写了这份详细的报告给客户,最终皆大欢喜。
• 不要太早灰心。
• 仔细划定渗透范围范围。
• 记下在测试中发现的所有内容,不管有用没用。
• 尽一切可能访问您的目标,不要错过任何一个!
• 如果迷失方向了,休息一下,来一杯mojoto。
• 做好信息侦察工作,不断改善,再不断重复这个过程!
原文链接:A Country Hijacking