作者是一名专职的漏洞赏金猎人,与中东和北非地区的一家安全服务提供商签订了“信息安全分析师”合同。

今天我将与您分享一个非常激动人心的故事,讲述我在与上述公司的最新合作中发现的一些发现。

注意:这些漏洞是在未公开的约定中发现的,因此我们将其称为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代码

这些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的新用户中。

GeneralEG的时代

使用新的凭据登录了该应用程序之后,看到了一些UI页面。

我再次查看了 “Admin Console” 页面,发现可以任意浏览其二级网页(例如“创建用户”)。

我浏览了后一个页面,发现能够创建具有任何角色的用户……但是令人惊讶的是,我能够选择用户对应的应用,因此扩展了列表,发现可以将“ Evil Admin”插入到7000+个属于这个国家的政府网站,包括(总统选举委员会,国家秘书办公室,总统行政委员会等)。也就是说,我能在这个国家做我想做的一切……

到这里我就停止测试了,而不是潜入这些“高度机密区域”,毕竟,牢饭不是很好吃hhhhhh

后来他们告诉我,该网站是政府E-Systems链的头网站,主要作用是为其他网站创建用户。

作为记录,内网之前已经做过很多渗透测试,因此只有少量漏洞,但是机缘巧合我又找到一个远程命令执行漏洞。后来又找到另外一个后台SQL注入漏洞,能够直接访问上述服务器,但最好还是不要进入此机密区域!




我确信,如果点进去了,我的好奇心会让我在这个国家监狱呆很长时间!

最后,我写了这份详细的报告给客户,最终皆大欢喜。

经验之谈,拿走不谢:

不要太早灰心。
仔细划定渗透范围范围。
记下在测试中发现的所有内容,不管有用没用。
尽一切可能访问您的目标,不要错过任何一个!
如果迷失方向了,休息一下,来一杯mojito。
做好信息侦察工作,不断改善,再不断重复这个过程!

原文链接:A Country Hijacking

点击收藏 | 1 关注 | 1
登录 后跟帖