如何通过简单地弄乱源代码就无法访问实时系统

带有实际示例的安全性总是更加有趣。

一旦客户提出渗透测试要求。 他有很多担心的原因,其中有一个被听到:“几个月前,一位新开发人员来找我们,可以访问源代码,文档和测试服务器,两天后消失了,但仍然没有响应。 这怎么威胁我? 没有授予他使用实时系统的权限。”

我们不会谈论开发人员的错误,这些错误可能会成为实时系统中的严重漏洞。 一切都更加简单-源代码本身可能包含直接的指令和访问。

在我们经过安全性测试的各种项目中,我将给出真实的示例,说明仅使用源代码,我们就可以渗透系统本身。 所有这些问题区域均已修复,并且屏幕快照中的所有其他信息均被隐藏。

系统1。
gita的克隆代码不仅是最新版本,而且是所有更改的历史记录。 我们通常使用gittyleaks运行敏感信息的源代码。

在该项目中,我们找到了一个私有加密密钥,该密钥曾经从代码中删除,但仍在实时系统中使用。 该密钥用于身份验证,并且知道该机制,我们可以为任何用户(包括管理员)生成任何身份验证cookie。

图片
图1.输出:gittyleaks --find-anything


系统2。
您可以使用git实用程序,并要求它显示所有曾经删除的文件。 在此系统中,我们找到了一个deployer.pem文件,该文件以前位于项目的根目录中,用于通过SSH通道将项目自动部署到服务器。 实时系统中的SSH端口已打开。 为什么打开? 开发人员答复说,他们的构建计算机位于动态IP地址后面,因此他们决定不关闭端口-“无论如何,没人会拿起SSH密钥”。 e ...

图片
图2.输出:git log --diff-filter = D --summary

系统3。
使用此系统,一切都变得更加容易。 进入数据库脚本并查看默认情况下如何创建用户可能是值得的。 通常,第一个用户创建具有最高权限的管理员。 在脚本中,我们找到了一个代码,该代码从真实密码生成哈希并将其写入数据库。 令人惊讶的是,创建了5个用户,但令我们惊讶的是,最重要的admin的密码通过了实时系统。 顺便说一下,这段代码并不是第一年,也没有人使用过它。

图片
图3.如何在数据库脚本中查找真实密码

的诺言。

1.如果您的项目在Gita上,请打开它并从根文件夹运行几个命令:

点安装gittyleaks
gittyleaks-找到任何东西

git log --diff-filter = D-摘要

2.一个黄金法则。 实时系统应始终具有唯一的密钥,唯一的用户密码,并且其中的所有内容均应保持最大程度。

以上信息仅出于教育和教育目的而提供,无需进行系统设置。

丹尼斯·科洛什科(Denis Koloshko)

Source: https://habr.com/ru/post/zh-CN459552/


All Articles