你们真酷! 所以还没有人让我们失望!
-我们尝试过。是的,漏洞猎人的生活充满了来自客户的特定赞美,同样也包含特定的情况。 在过去的一年中,我们已经在不同的公司中完成了五十多项渗透测试,而且必须说,已经看到了一切。 所有帐户和系统的一个密码,数据库中密码的开放存储,战斗环境中的调试功能的其余部分...因此,当我们来自JSOC CERT的同事
讲述了有关网络事件调查的多个故事时,我们的Pentest部门决定跟上并显示“路障”的另一面»:通过黑客的眼光看客户的基础架构。 今天,我们将向您介绍近来最有趣的外部渗透测试,当时我们不得不深入了解客户的内部范围,仅列出其外部IP地址和域名的列表。
奥丁
星期一:
-伙计们,从入笔测试开始更快-您只有3周的时间来破解我们。 但是请记住,您的机会很小:他们每年都会检查我们,没有发现任何线索。
4小时后:
“我们已经在里面了。”
-来吗? 不可能是那样! 现在让我们检查一下日志...
星期五:
-妈的,真的。 怎么这样?! 但是,由于时间不够,也许您会寻找其他东西?
-是的,没问题。
然后我们开始搜索。 扫描组织的外围时,我们遇到了一个正在旋转4个Web应用程序的主机,一个FTP服务器以及phpMyAdmin管理面板。 对Web应用程序的分析没有发现任何使我们能够访问服务器的关键漏洞(例如SQL注入,XXE,RCE等)。 在某些时候,他们切换到了FTP-在这里,它已经变得更加有趣:在服务器上打开了匿名访问,但仅用于读取。

几天来,我们检查了服务器的内容,并在日志中发现了一些奇怪的行-一些Web应用程序管理员的错误输入密码。

基于错误的选项,我们对密码的外观进行了假设,然后密码出现了。 我们决定为phpMyAdmin尝试它,-哦,这是一个奇迹-它也来了。 接下来,这是一个小问题-上传外壳程序,访问内部网络,在那里建立据点并在内部进行开发。

这就是平常的懒惰(以及如何解释不愿意为每个管理面板输入不同的密码?)为黑客进入组织的内部网络铺平了道路。
为什么要在战斗环境中进行调试?
我们的大多数突破都是通过Web应用程序实现的,并且常常会遇到开发和测试时间的“余波”。 我们经常会找到日志,一些调试模式,但并非总是能在它们的帮助下设法进行RCE(远程代码执行)。
在我们的一位客户中,我们发现了一个CRM系统,我们决定花更多的时间(而且我必须说,后来还清了)。 在对应用程序进行分析时,我们发现了测试的其余部分,这些测试显然是在开发阶段使用的。 身份验证以一种非常神奇的方式进行:仅检查用户名和传递包含密码的参数的事实。 五分钟的搜索和阅读标准文档-我们将拥有内置的超级用户帐户的名称。 填充外壳已经是技术问题。

另一个例子。 在项目开始时,我们启动了子域的递归暴力破解并保留了它。 一段时间后,令我们惊讶的是,出现了一个名为test.debug.application.client.ru的第五级子域,在该子域上我们找到了一个安装了Adminer的Web应用程序。 这是一个轻量级的数据库管理应用程序,在较早的版本中,如果配置不正确,您可以不使用密码即可与SQLite数据库进行交互。
该数据库中没有数据这一事实并不重要-毕竟,在SQLite中,您可以在任意路径上创建一个数据库,并在其中包含一个简单的Web Shell,从而可以方便地管理服务器并在Web页上执行命令。
剩下的就是找出服务器上Web应用程序的完整地址。 在这里,我们得到了所有“心爱的” CMS 1C-Bitrix的帮助,在出现错误消息时,我们很高兴地与我们分享了它所在的位置。 然后只剩下填充壳并完成项目。

可以在
这里查看与SQLite DB的配合使用。
找到日志了吗? 密码作为礼物!
一位客户要求我们对Web应用程序进行渗透测试。 在过去的三年中,他与另一支球队举行了高考,可能设法修补了外围的一些漏洞,因此我们没想到会很快取得成功。
在Web应用程序的模糊测试过程中,我们找到了记录用户授权的页面。 日志中显示了登录该应用程序的用户的时间和登录名。 我们编写了一个脚本,该脚本每两分钟轮询一次该页面,解析响应并记下在文件中找到的登录名。 几天后,我们设法收集了大约一百个登录名。 我们决定开始选择密码-在
TOP-500最差密码列表中找到5个登录名。
获得了该应用程序的访问权限后,我们继续对其进行分析,并找到了另一个有趣的文件-所有实时数据库查询都显示在其中。 使用这种便捷的调试工具,搜索漏洞并利用发现的基于
布尔时间的SQL注入已成为一项繁琐的任务。
尽管已经是2019年,但人们仍然认为以开放形式将密码存储在数据库中是个好主意。 我们使用它并发现了SQL注入,并获得了一个管理员帐户,可以使用该帐户来填充Web Shell并打开对组织内部网络的访问权限不是什么大问题。
作物标记
首先,进行定期的渗透测试-它们将帮助您发现在开发阶段或从测试环境切换到实战环境时可能错过的薄弱环节。
其次,请始终考虑人为因素:人们懒得更改密码,他们甚至可以在多个站点上使用一个密码。 是的,管理员也犯了这个错误。
第三,删除战斗环境中的调试模式。
聚苯乙烯
通常,Pentest部门的日常生活充满了各种各样的“娱乐”,当然,外部测试并不是唯一的一种。 客户可能希望检查内部外围漏洞(内部渗透测试),或分析Web和移动应用程序以及WiFi网络的安全性,或安排员工使用社交工程方法进行检查。
在项目闲暇时,我们会
理解Zen,寻找新的漏洞,改进我们的工具和技术。 并且我们从事漏洞奖励(如果没有漏洞奖励的话)。
您将在以下文章中了解我们“冒险”的多样性。