全文login 文件类型日志

allintext:login 文件类型:日志 – 暴露的日志如何泄露凭据

搜索引擎最初是为了索引内容而构建的。然而,攻击者却利用它们来索引你的错误。查询 allintext:login 文件类型:日志 看起来似乎无害。但实际上,这是发现包含身份验证流程、凭据、令牌和内部基础架构数据的暴露日志文件的最简单方法之一。

如果谷歌能看到这些日志,攻击者也能看到。一旦被索引,泄露就不可避免。此外,当凭据出现在可公开访问的文件中时,安全漏洞就已经存在了。

1. 为什么选择 allintext:login 文件类型:日志比看起来更危险

Google dork 是一种使用高级运算符的搜索查询,用于查找搜索引擎索引的敏感或配置错误的内容。它并非利用 Google 的漏洞,而是利用你的信息泄露风险。

此查询结合了两个运算符:

  • allintext: 返回的页面正文中所有术语均已出现。
  • 文件类型:日志 将结果限制为 .log

因此:

allintext:login filetype:log

方法: ”请显示包含该词的日志文件 login设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“

乍一看,这似乎微不足道。然而,在实践中,它往往会带来以下后果:

  • 公开的网络服务器日志
  • CI/CD 日志已作为工件上传
  • 调试日志意外丢失 committed 到存储库
  • 包含明文凭据的应用程序日志

这不是搜索引擎的漏洞。相反,这是…… 数据泄露漏洞 这是配置错误导致的。谷歌只是简单地索引了公开可访问的内容。

2. 攻击者在暴露的日志文件中实际发现了什么

当攻击者运行 allintext:login 文件类型:日志他们并非随意浏览,而是在寻找身份验证痕迹。

2.1 明文凭证

日志中经常包含如下条目:

POST /login username=admin password=SuperSecret123

or

Authorization: Basic YWRtaW46cGFzc3dvcmQ=

甚至是 SMTP 凭据:

smtp_user=mailer
smtp_pass=ProdMailPass!

记录身份验证有效负载是泄露生产环境凭据最快的方法之一。因此,一个暴露的日志文件就可能使整个访问控制模型失效。

2.2 会话令牌和 JWT

即使密码不被记录,令牌通常也会被记录。

例如:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Set-Cookie: session=abc123xyz789;
Generated API token: sk_live_ABC123SECRET

有效的 JWT 或会话 cookie 位于 .log 文件可以启用:

  • 会话劫持
  • 特权升级
  • 内部系统的横向移动

换句话说,日志中的令牌会将调试输出变成身份验证绕过途径。

2.3 CI/CD 文物

构建日志尤其危险。事实上, CI/CD 系统通常会在构建步骤中打印环境变量。

攻击者经常发现:

包含如下语句:

AWS_ACCESS_KEY_ID=AKIA...
DATABASE_URL=postgres://admin:password@internal-db:5432/app

If CI/CD 既然文物是公开的,那么秘密也就公开了。谷歌搜索技巧只是加速了发现过程。

2.4 云和基础设施数据

公开的日志通常会揭示:

  • AWS 访问密钥
  • Azure 存储连接字符串
  • 内部服务网址
  • 数据库凭据
  • Redis 端点

即使凭证稍后被轮换,攻击者现在仍然拥有:

  • 基础设施测绘
  • 命名约定
  • 针对未来攻击的目标情报

因此,暴露的日志既可用于访问,也可用于侦察。

3. 这些日志最初是如何公开的

日志不会凭空出现在谷歌搜索结果中。它们之所以被收录,是因为它们原本是公开可访问的。

3.1 配置错误的 Web 服务器

常见模式包括:

  • /logs/ 无需身份验证即可访问的目录
  • 已启用目录列表
  • Nginx 或 Apache 提供原始数据 .log

如果日志可以通过 HTTP 访问,则可以对其进行索引。

3.2 CI/CD 伪影暴露

典型错误:

  • 已启用公共工件 GitHub动作
  • 日志已上传到开放的S3存储桶
  • Pipeline 无需身份验证即可访问跟踪信息

A pipeline 将日志存储在公共存储桶中,实际上就等于泄露了其机密信息。

3.3 生产环境中的调试模式

框架默认设置可能存在风险:

APP_DEBUG=true

此外,过多的请求日志记录可能会输出:

  • 令牌
  • 完整的请求机构

生产环境中的调试日志记录会将您的应用程序变成凭据导出器。

3.4 Docker 和容器日志

容器化环境引入了新的暴露途径:

  • 日志已挂载到共享卷中。
  • Sidecar 将日志导出到不安全的端点
  • 历史记录 dashboard具有公共访问权限

如果容器日志通过 HTTP 或开放存储公开,则可以对其进行搜索。最终,它们会被建立索引。

4. 真实的攻击流程:从技术分析到突破

典型的攻击链如下所示:

  • 攻击者运行:

allintext:login filetype:log
  • 发现暴露 .log 文件
  • 提取物:
    • JWT 令牌
    • 基本身份验证标头
    • 数据库连接字符串
  • 尝试对以下对象进行身份验证:

    • API端点
    • 管理面板
    • 内部服务

如果身份验证成功,攻击者可以:

  • 提升权限
  • 横向移动
  • 访问 CI/CD
  • 破坏供应链

最初只是一个搜索查询,后来变成了:

  • 会话劫持
  • 内部凭证填充
  • Pipeline 收购
  • 神器中毒

所有内容均来自公开索引的日志文件。

5. 为什么“过多”日志记录会成为应用安全问题

日志记录并非中立的。相反,它会造成…… 辅助数据存储.

如果你记录敏感数据,实际上就创建了你秘密信息的第二个副本。

然而,日志通常被排除在威胁建模之外。根据 STRIDE 模型,这显然对应于:

披露信息

因此,安全 SDLC 实践中应将日志视为:

  • 与安全相关的工件
  • 敏感资产
  • 需要保护的基础设施组件

如果你的威胁模型忽略了日志,那么它就是不完整的。

6. 如何防止日志文件中的凭据泄露

6.1 停止记录秘密信息

从不记录:

  • 密码
  • 令牌
  • API密钥
  • 会话 ID
  • 授权标头

即使在调试模式下也是如此。

尽可能实现自动编辑。

6.2 结构化和安全日志记录

使用结构化日志记录,并进行掩码和过滤。

示例(Node.js):

const logger = require('pino')({
  redact: ['req.headers.authorization', 'body.password']
});

示例(Python):

class RedactFilter(logging.Filter):
    def filter(self, record):
        record.msg = record.msg.replace("password=", "password=***")
        return True

关键原则很简单:秘密信息绝不能进入日志接收器。

6.3 锁定日志存储

安全控制措施应包括:

  • 禁用目录列表
  • 保护 /logs/ 带有身份验证的路径
  • 限制存储桶访问
  • 执行保留政策
  • 对静态日志进行加密

日志绝不能通过 HTTP 公开访问。

6.4 CI/CD Guardrails

人工审核不足以应对这种情况。应该实施自动化控制:

  • 在文物发布前秘密扫描日志
  • 如果检测到令牌,则构建失败。
  • 阻止上传包含凭据的工件
  • 对工件进行哈希验证

CI/CD 应在索引建立之前阻止暴露。

7. Xygeni 如何防止 allintext:login 文件类型:日志事件

问题不在于谷歌搜索技巧,而在于曝光度。因此,预防措施必须在索引之前实施。

7.1 日志和工件中的秘密检测

Xygeni扫描:

  • 应用日志
  • CI/CD 作业跟踪
  • 构建工件
  • Docker 层
  • 串行输出

如果凭证、令牌或敏感值出现在 .log 文件,Xygeni 会立即标记它们。

7.2 CI/CD Guardrails 阻止曝光

而不是依赖人工审核, Xygeni 在以下方面加强了安全措施: pipeline 水平:

dotnet xygeni enforce --rules secrets,artifacts,logs --fail-on-risk

这个:

  • 当日志中出现密钥时,构建失败
  • 积木制品出版
  • 防止意外暴露于公众视野
  • 在到达主干道之前阻止不安全的合并。

如果 CI 作业打印了一个令牌, pipeline 将失败。

未建立索引。
无接触史。
无意外发生。

7.3 在谷歌发现之前进行左移保护

时机很重要。

而不是做出反应:

allintext:login filetype:log

Xygeni 可以解决这个问题:

  • At commit 次
  • 中 pull request 验证
  • 中 pipeline 执行
  • 在文物发表之前

如果日志从未公开,Google 就不会对其进行索引。

最终结论:如果谷歌能够索引它,攻击者肯定已经索引过了。

日志并非无害。事实上,它们很少是临时性的。默认情况下,它们并非私有文件。因此,每个日志文件都应被视为与安全相关的资产,而不仅仅是调试输出。

如果敏感数据泄露 .log 文件将公开访问, 它立刻变成了攻击面。 此外,一旦被搜索引擎收录,曝光量就会超出你的控制范围。

解决方案并非停止日志记录,而是负责任地记录日志,并对存储和分发实施严格的控制。换句话说,安全必须超越应用程序本身,延伸到可观测性层面。

代替:

  • 停止记录秘密信息
  • 封锁原木存储
  • 执行 pipeline guardrails
  • 自动检测和策略执行

最终, 预防的关键在于时机。因为一旦 allintext:login 文件类型:日志 返回您的域名,事件已经开始。

sca-tools-软件-成分分析工具
确定软件风险的优先级、进行补救并加以保护
7-day免费试用
无需信用卡

保护您的软件开发和交付

使用 Xygeni 产品套件