fscan/test/ssh-test-env
ZacharyZcR de286026e8 refactor: 统一插件超时机制实现Context-First架构
- 重构SSH/MySQL/Redis插件超时控制,移除第三方库超时依赖
- 统一使用Go Context超时机制,提升超时控制可靠性和精确度
- 扩展MySQL/Redis/SSH插件默认端口支持,提升扫描覆盖率
- 修复插件系统中ConcurrentScanConfig超时配置缺失问题
- 优化插件检测逻辑,正确识别新架构插件并显示准确状态信息
- 解决插件在错误端口上长时间等待问题,显著提升扫描效率
2025-08-07 14:01:50 +08:00
..
scripts refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
ssh-config refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
.dockerignore refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
docker-compose.yml refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
Dockerfile.ssh-server refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
README.md refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
test-passwords.txt refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
test-ssh-plugin.bat refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
test-ssh-plugin.sh refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
test-users.txt refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00
USAGE.md refactor: 统一插件超时机制实现Context-First架构 2025-08-07 14:01:50 +08:00

SSH测试环境

这是一个专门为fscan工具SSH插件设计的Docker测试环境包含多个测试用户和弱密码配置。

⚠️ 安全警告

此测试环境包含多个安全漏洞和弱密码,仅供测试使用,切勿在生产环境中使用!

环境组成

测试用户账户

管理员账户具有sudo权限

  • root:password - 系统root用户
  • root2:password - 额外的root级别用户
  • admin:123456 - 管理员用户
  • test:test123 - 测试管理员用户

普通用户账户

  • user:user - 普通用户
  • guest:guest - 受限用户启用chroot
  • web:web123 - Web服务用户
  • service:service123 - 服务用户

数据库相关用户

  • oracle:oracle - Oracle数据库用户
  • mysql:mysql - MySQL数据库用户
  • postgres:postgres - PostgreSQL数据库用户
  • redis:redis123 - Redis用户
  • mongodb:mongo123 - MongoDB用户

系统服务用户

  • ftp:ftp - FTP服务用户
  • anonymous - 无密码用户(极不安全)

快速开始

1. 启动测试环境

# 进入测试目录
cd test/ssh-test-env

# 构建并启动容器
docker-compose up -d

# 查看容器状态
docker-compose ps

# 查看容器日志
docker-compose logs ssh-test-server

2. 测试连接

# 基本SSH连接测试端口2222映射到容器的22端口
ssh root@localhost -p 2222
# 密码: password

# 使用其他用户测试
ssh admin@localhost -p 2222
# 密码: 123456

ssh test@localhost -p 2222
# 密码: test123

3. 使用fscan测试

# 测试单个IP的SSH服务
./fscan -h 127.0.0.1:2222 -m ssh

# 测试SSH暴力破解
./fscan -h 127.0.0.1:2222 -m ssh -pwdf passwords.txt

# 测试特定用户
./fscan -h 127.0.0.1:2222 -m ssh -user admin -pwd 123456

4. 高级测试场景

测试弱密码检测

fscan应该能够检测到以下弱密码组合

  • root/password
  • admin/123456
  • test/test123
  • user/user
  • guest/guest
  • oracle/oracle
  • mysql/mysql
  • postgres/postgres

测试连接超时和重试

# 测试连接超时设置
./fscan -h 127.0.0.1:2222 -m ssh -timeout 5

# 测试多线程扫描
./fscan -h 127.0.0.1:2222 -m ssh -t 10

测试用户枚举

# 测试是否能正确识别存在的用户
./fscan -h 127.0.0.1:2222 -m ssh -user root,admin,test,nonexistent

环境配置详情

SSH服务配置特点

  • 端口: 22 (容器内) / 2222 (主机映射)
  • 密码认证: 已启用
  • Root登录: 已启用
  • 空密码: 对anonymous用户启用
  • 最大认证尝试: 6次
  • 连接超时: 60秒

网络配置

  • 网络: 172.20.0.0/24
  • 容器名: fscan-ssh-test
  • 健康检查: 每10秒检查SSH端口22

管理命令

环境控制

# 启动环境
docker-compose up -d

# 停止环境
docker-compose down

# 重启环境
docker-compose restart

# 查看实时日志
docker-compose logs -f ssh-test-server

# 进入容器shell
docker exec -it fscan-ssh-test bash

清理环境

# 停止并删除容器、网络
docker-compose down

# 清理所有相关资源
docker-compose down -v --rmi all

故障排除

端口冲突

如果端口2222已被占用修改docker-compose.yml中的端口映射:

ports:
  - "2223:22"  # 改为其他可用端口

SSH连接被拒绝

  1. 确认容器正在运行:docker-compose ps
  2. 检查健康状态:docker-compose logs ssh-test-server
  3. 验证端口映射:docker port fscan-ssh-test

权限问题

# 确保脚本具有执行权限
chmod +x scripts/start-ssh.sh

# 重新构建容器
docker-compose build --no-cache ssh-test-server

测试建议

  1. 逐步测试: 先测试单个用户连接,再测试批量扫描
  2. 日志监控: 实时监控SSH服务日志了解fscan行为
  3. 性能测试: 测试不同线程数对扫描性能的影响
  4. 边界测试: 测试无效IP、关闭的端口等边界情况

安全提醒

  • 此环境仅用于测试目的
  • 不要将此环境暴露到公网
  • 测试完成后及时清理环境
  • 不要在生产网络中运行此配置