渗透测试 | 关于“绕”云服务器防火墙策略的小tip
字数 1281 2025-08-10 08:28:18

绕过云服务器防火墙策略的渗透测试技巧

背景与问题概述

在渗透测试过程中,当获得云服务器权限后,经常需要开启特定端口来搭建服务。但主流云服务商(如阿里云、腾讯云)默认会启用防火墙,仅开放少数端口(如80、22、3389)。这种端口限制通常只能通过云控制台修改,无法仅凭shell权限调整。

实战案例解析

初始访问

  1. 通过弱口令进入shell集成管理系统后台
  2. 后台提供直接可用的shell功能模块
  3. 确认目标为阿里云服务器

遇到的限制

  • 网页提供的shell不稳定
  • 尝试外带shell失败(可能由于防护策略)
  • 创建root权限用户后SSH连接失败

问题诊断

  1. 发现SSH服务运行在非常规端口22022
  2. 连接22022端口后,密码认证阶段失败
  3. 检查系统日志(/var/log/secure)发现:
    • PAM认证阻止uid≥1000的用户远程登录
    • 创建的test用户uid为0(root),被阻止

解决方案

  1. 修改PAM配置文件:

    • /etc/pam.d/system-auth
    • /etc/pam.d/sshd
    • /etc/pam.d/login
  2. /etc/pam.d/system-auth中找到相关限制配置并注释掉

  3. 重启SSH服务使更改生效

关键知识点总结

1. 云防火墙特性

  • 云厂商默认启用防火墙
  • 仅开放基本服务端口
  • 配置通常只能通过控制台修改

2. SSH服务隐藏技巧

  • 使用非常规端口(如22022)增加隐蔽性
  • 需要扫描或检查netstat输出才能发现

3. PAM认证限制

  • Linux PAM(可插拔认证模块)可限制远程登录
  • 常见限制包括:
    • 禁止特定uid范围的用户登录
    • 限制root直接登录
    • 其他认证策略

4. 用户创建技巧

  • 创建root权限用户命令示例:
    useradd -u 0 -g 0 -p [加密密码] -o [用户名]
    
    • -u 0:设置uid为0(root)
    • -g 0:设置gid为0(root组)
    • -o:允许重复uid(覆盖唯一性检查)
    • -p:设置加密后的密码(非明文)

5. 日志检查

  • SSH相关日志位于/var/log/secure
  • 使用tail -f实时监控日志:
    tail -f /var/log/secure
    

防御建议

针对管理员

  1. 定期审计PAM配置
  2. 监控/etc/passwd/etc/shadow变更
  3. 限制非常规端口的使用
  4. 实施多因素认证
  5. 定期检查系统日志

针对渗透测试人员

  1. 发现非常规端口时尝试连接
  2. 创建用户前检查PAM策略
  3. 优先考虑使用现有用户而非创建新用户
  4. 考虑使用SSH隧道等替代方案绕过限制

扩展思考

  1. 其他可能的认证限制位置:

    • /etc/ssh/sshd_config中的AllowUsers/DenyUsers
    • /etc/security/access.conf
  2. 替代方案:

    • 使用Websockify等工具通过Web端口转发
    • 利用已有服务(如Web)建立反向连接
    • 使用DNS/ICMP等协议建立隐蔽通道
  3. 云环境特殊考虑:

    • 安全组规则可能叠加系统防火墙
    • 元数据服务可能提供临时凭证
    • 云厂商可能有额外的安全监控机制

通过理解这些技术和限制,渗透测试人员可以更有效地在云环境中操作,同时管理员也能更好地保护系统安全。

绕过云服务器防火墙策略的渗透测试技巧 背景与问题概述 在渗透测试过程中,当获得云服务器权限后,经常需要开启特定端口来搭建服务。但主流云服务商(如阿里云、腾讯云)默认会启用防火墙,仅开放少数端口(如80、22、3389)。这种端口限制通常只能通过云控制台修改,无法仅凭shell权限调整。 实战案例解析 初始访问 通过弱口令进入shell集成管理系统后台 后台提供直接可用的shell功能模块 确认目标为阿里云服务器 遇到的限制 网页提供的shell不稳定 尝试外带shell失败(可能由于防护策略) 创建root权限用户后SSH连接失败 问题诊断 发现SSH服务运行在非常规端口22022 连接22022端口后,密码认证阶段失败 检查系统日志( /var/log/secure )发现: PAM认证阻止uid≥1000的用户远程登录 创建的test用户uid为0(root),被阻止 解决方案 修改PAM配置文件: /etc/pam.d/system-auth /etc/pam.d/sshd /etc/pam.d/login 在 /etc/pam.d/system-auth 中找到相关限制配置并注释掉 重启SSH服务使更改生效 关键知识点总结 1. 云防火墙特性 云厂商默认启用防火墙 仅开放基本服务端口 配置通常只能通过控制台修改 2. SSH服务隐藏技巧 使用非常规端口(如22022)增加隐蔽性 需要扫描或检查 netstat 输出才能发现 3. PAM认证限制 Linux PAM(可插拔认证模块)可限制远程登录 常见限制包括: 禁止特定uid范围的用户登录 限制root直接登录 其他认证策略 4. 用户创建技巧 创建root权限用户命令示例: -u 0 :设置uid为0(root) -g 0 :设置gid为0(root组) -o :允许重复uid(覆盖唯一性检查) -p :设置加密后的密码(非明文) 5. 日志检查 SSH相关日志位于 /var/log/secure 使用 tail -f 实时监控日志: 防御建议 针对管理员 定期审计PAM配置 监控 /etc/passwd 和 /etc/shadow 变更 限制非常规端口的使用 实施多因素认证 定期检查系统日志 针对渗透测试人员 发现非常规端口时尝试连接 创建用户前检查PAM策略 优先考虑使用现有用户而非创建新用户 考虑使用SSH隧道等替代方案绕过限制 扩展思考 其他可能的认证限制位置: /etc/ssh/sshd_config 中的 AllowUsers / DenyUsers /etc/security/access.conf 替代方案: 使用Websockify等工具通过Web端口转发 利用已有服务(如Web)建立反向连接 使用DNS/ICMP等协议建立隐蔽通道 云环境特殊考虑: 安全组规则可能叠加系统防火墙 元数据服务可能提供临时凭证 云厂商可能有额外的安全监控机制 通过理解这些技术和限制,渗透测试人员可以更有效地在云环境中操作,同时管理员也能更好地保护系统安全。