未授权访问漏洞复现及总结

未授权访问的共性与特点

未授权访问表现形式有很多,一般是管理后台、API、文件、数据库、服务端口等,但他们的共性和特点如下:

共性:

  1. 权限控制机制的缺失或失效(本质)
    系统在设计或实现时,完全遗漏了对特定资源(URL路径、API端点、文件路径、服务端口、数据库实例)的访问控制检查,或者该检查机制存在严重缺陷(如默认配置不安全、依赖前端隐藏但后端无验证)。
  2. 访问路径直接且可预测
    攻击者通常通过构造或猜测直接的访问路径来利用漏洞。
    通常是一些常见的默认路径和默认服务端口,如常见的默认路径(如 /admin, /wp-admin, /manager/html, /actuator, /phpmyadmin, /api/v1/users)常见的服务端口(6379 for Redis, 27017 for MongoDB, 9200 for Elasticsearch, 8080 for Jenkins/Tomcat, 2375 for Docker)。
  3. 常与默认配置和疏忽相关
    许多中间件、数据库、服务在安装后默认不启用认证或使用弱/空密码(如 Redis, MongoDB, Elasticsearch 旧版, Docker API)。或者认为内网环境就安全,未做访问控制;或误认为隐藏URL(Security through obscurity)就是安全。

特点:

  1. 攻击者无需任何身份凭证(用户名/密码、Token、Session等),即可直接与受保护的资源进行交互。
    漏洞的利用完全不依赖于攻击者拥有任何形式的合法身份或会话。即使系统其他部分有完善的认证机制,只要目标资源未做访问控制,匿名用户(甚至未登录状态)就能直接访问。
  2. 访问路径直接且可预测
    访问路径直接且可预测,通常是默认路径或者服务端口,通过遵循安全最佳实践(最小权限、更改默认值、网络隔离)可以预防大部分此类漏洞。
  3. 利用简单,易于大规模扫描
    利用门槛相对较低,自动化扫描工具能高效发现这类暴露面,使得攻击者可以使用自动化工具(如 Shodan, Censys, Nuclei, 自定义脚本)在互联网上大规模扫描存在此类漏洞的资产,容易被批量攻击
  4. 危害直接且严重性高
    一旦被利用,攻击者能直接:
    读取敏感数据: 数据库内容、配置文件(含密码)、用户隐私信息、源代码、备份文件。
    写入/修改数据: 篡改网站内容、插入恶意代码、污染数据库、上传Webshell。
    执行命令/控制服务: 如通过Docker API创建容器、在Redis中写入SSH公钥、在Elasticsearch中执行任意代码(部分版本)。
    破坏服务可用性: 删除数据、停止服务。

安全应急注意事项

当发生或怀疑发生未授权访问漏洞事件时,应急响应需要快速、精准且考虑周全。下面是主要流程和需要注意的事项:

  1. 快速确认与隔离:
    首要任务是确认漏洞是否存在且是否被利用,并立即阻止进一步的未授权访问。
    (1)立即临时阻断: 在防火墙上封禁攻击源IP(如果已知);或最快速度关闭暴露的服务端口、禁用相关的URL路径/API、如果业务允许先将服务下线。
    (2)启用访问控制: 如果条件允许且快速,立即为资源配置强认证(强密码、API Key、证书)和最小权限授权(如临时加个密码)。
    (3)网络隔离: 如果漏洞服务不应暴露在公网,立即将其移入内网或配置严格的网络访问控制策略(如只允许特定管理IP访问)。利用云安全组/VPC策略或本地防火墙规则。
  2. 收集信息,评估影响范围:
    考虑漏洞暴露了多久,哪些数据/系统被访问或篡改,攻击者可能做了什么
    (1)详细分析相关服务的访问日志(Web服务器、应用服务器、中间件、数据库、系统日志)。查找:
    异常IP地址(尤其是大量扫描行为、非常规访问时间、境外IP)。
    对敏感路径的直接访问请求(特别是GET以外的PUT/POST/DELETE等写操作)。
    异常的数据库查询或命令执行记录。
    日志被清除或篡改的痕迹(这可能本身就是攻击行为)。
    (2)检查数据完整性: 对比备份或校验和,检查配置文件、数据库记录、静态文件是否被修改、删除或新增(如Webshell)。
    (3)检查系统状态: 检查是否有新增的异常用户账号、计划任务、服务、进程、网络连接(特别是出向连接,可能被植入后门)。
    (4)时间线分析: 确定漏洞首次被利用的时间和持续时间。
    (5)关联分析: 该漏洞是否是攻击链的一部分?攻击者是否利用此漏洞作为跳板进行了内网横向移动?
  3. 证据保全:
    在开始修复和清理前,必须保存好所有可能作为证据的数据,用于后续溯源、根因分析和合规报告。
    (1)对受影响服务器做内存快照(如果可能且及时)。
    (2)创建关键系统文件、日志文件、配置文件、数据库的完整、只读备份(使用干净的介质,并记录哈希值)。
    (3)记录当前系统状态(进程列表、网络连接、登录用户、打开文件等)。
    (4)记录所有采取的应急操作和时间戳。
  4. 彻底根除与修复加固:
    不仅仅要临时封堵,要找到漏洞根源并实施永久性修复。
    (1)实施强访问控制:
    为所有管理接口、API、服务端口启用强身份认证(多重身份认证最佳)。
    实施基于角色的最小权限访问控制。
    对敏感操作增加二次验证(如关键配置修改、数据删除)。
    (2)安全配置加固:
    更改所有默认密码和凭证,使用强密码策略。
    禁用不必要的服务、端口、功能模块和默认账户。
    遵循官方安全加固指南配置中间件、数据库等。
    确保生产环境移除测试/调试接口和后门。
    (3)网络架构优化:
    严格遵循网络隔离原则,管理接口、数据库等关键服务绝不直接暴露在互联网。必须通过VPN、堡垒机或严格的白名单策略访问。
    使用WAF/API网关等设备提供额外的访问控制层。
    (4)代码与配置审计: 检查相关代码(权限校验逻辑)和配置文件(安全开关、白名单)是否存在错误或遗漏。
    (5)更新与补丁: 应用相关软件的最新安全补丁。
  5. 恢复与验证:
    在确保攻击载体已清除且系统已加固后,方可恢复服务,并持续监控。
    (1)从干净的备份中恢复被篡改的数据或文件(确保备份本身未被污染!)。
    (2)彻底清除攻击者遗留物: 删除Webshell、恶意用户账号、后门程序、异常计划任务/服务等。可能需要完全重建被深度入侵的系统。
    (3)在隔离测试环境验证修复: 确认漏洞已修复且不会导致新问题。
    (4)逐步恢复服务并密切监控: 观察日志、系统资源、网络流量是否有异常。
  6. 事后复盘输出报告:
    分析事件原因,总结经验教训,输出应急报告。
    (1)根本原因分析: 是配置错误?代码遗漏?流程缺失?安全意识不足?
    (2)流程改进: 加强上线前安全测试(尤其是配置审计和渗透测试)、完善安全配置基线、强化变更管理流程、增加对暴露面的自动化监控和扫描。
    (3)安全培训: 针对开发、运维人员加强安全意识培训,特别是关于访问控制、默认安全、最小权限原则和配置管理。
    (4)完善监控告警: 部署对异常访问模式(如直接访问敏感路径、大量未授权连接尝试)的实时监控和告警。

在应急响应未授权访问漏洞事件时,"快速隔离、详尽取证、彻底根除、持续监控" 是核心原则。特别要注意日志分析是评估影响和溯源的关键,网络隔离和最小权限原则是防止和缓解此类漏洞的基石,而修复不能只停留在封IP或加密码层面,必须进行深层次的配置加固和架构优化,并推动流程和意识的改进。此类漏洞往往意味着严重的安全管控缺失,应急过程也是提升整体安全水位的重要契机。

漏洞实例复现

常见的漏洞有FTP 未授权访问(21)、Rsync 未授权访问(873)、ZooKeeper 未授权访问(2181)、Docker 未授权访问(2375)、VNC 未授权访问(5900、5901)、Redis 未授权访问(6379)、JBoss 未授权访问(8080)、Jenkins 未授权访问(8080)、HadoopYARN 未授权访问(8088)、MongoDB 未授权访问(27017)等

FTP未授权访问漏洞(匿名登陆)

FTP 弱口令或匿名登录漏洞,一般指使用 FTP 的用户启用了匿名登录功能,或系统口令的长度太短、复杂度不够、仅包含数字、或仅包含字母等,容易被黑客攻击,发生恶意文件上传或更严重的入侵行为。

漏洞原理

FTP服务器未正确验证用户身份,导致攻击者无需账号密码即可直接访问、下载甚至上传/删除服务器文件。

  1. 匿名访问未关闭
    原理:
    FTP服务默认开放匿名登录(Anonymous Login)功能,允许用户用以下方式直接登录:
    用户名:anonymous 或 ftp
    密码:任意邮箱或留空
    危险操作:
    攻击者连上后,可遍历目录、下载敏感文件(如数据库备份、配置文件),甚至上传恶意文件。
  2. 弱密码或默认密码
    原理:
    管理员设置了简单密码(如 admin/123456)或未修改默认密码(如某些设备FTP默认账号为 admin:admin)。
    攻击方式:
    攻击者用暴力破解工具(如Hydra)或常见密码字典尝试登录。
  3. 权限配置错误
    原理:
    即使关闭了匿名访问,如果FTP用户的授权目录权限过大(如允许访问系统根目录 / 或 C:\),攻击者一旦登录就能看到整个服务器的文件。

复现流程

  1. 控制面板打开服务管理器,添加角色中下载iis服务
  2. 打开服务管理器,找到iis中的网络,添加ftp站点
  3. 设置ip地址和无ssl,并且身份验证允许匿名用户访问,并给读取和写入权限

  4. 在攻击机上就可以通过以下路径进行访问了 ftp://192.168.3.179:21/

漏洞危害

危害类型 具体影响
敏感数据泄露 下载数据库备份、配置文件(含密码)、用户隐私数据
系统被控制 上传恶意程序(如勒索病毒)、Webshell(控制网站服务器)
服务瘫痪 删除关键文件导致业务中断
内网渗透跳板 通过FTP服务器进一步攻击内网其他机器

防御措施

  1. 关闭匿名访问
    IIS FTP设置:在"FTP身份验证"中禁用 匿名身份验证。
  2. 使用强密码策略
    密码长度≥12位,包含大小写字母、数字、特殊符号。
    定期更换密码。
  3. 限制目录权限
    FTP用户只能访问特定目录(如 /var/ftp),禁止跳转到上级目录(设置 chroot)。

Rsync 未授权访问

漏洞原理:

Rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。

Rsync 默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。Rsync 的默认端口为 837。

Redis未授权访问漏洞

漏洞原理:

Redis未授权访问漏洞的核心在于配置不当,一是redis服务绑定在0.0.0.0:6379且未配置防火墙规则,直接暴露于公网。二是Redis未设置密码认证(默认空密码)或使用弱口令,导致攻击者可远程控制Redis服务,进而通过修改数据库路径、写入恶意文件等方式实现权限提升。具体原理如下:

1.未授权访问条件:

redis服务绑定在0.0.0.0:6379且未配置防火墙规则,直接暴露于公网。

未设置密码认证(默认空密码)或使用弱口令

config set 写入公钥进行连接

2.提权手段:

2.1写入SSH公钥:

攻击者生成SSH密钥对,将公钥写入目标服务器的/root/.ssh/authorized_keys文件,通过私钥直接登录目标主机(需Redis以root权限运行)

2.2写入Webshell:

修改Redis存储路径至Web目录(如/var/www/html),写入PHP木马文件,通过Web服务执行任意代码

2.3计划任务反弹Shell:

向/var/spool/cron目录写入定时任务,执行反弹Shell命令(仅Centos有效,因Ubuntu对文件权限要求严格)

2.4主从复制RCE(Redis 4.x/5.x):

通过恶意主节点向从节点同步恶意模块(如exp.so),加载后执行系统命令