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

189 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 启动测试环境
```bash
# 进入测试目录
cd test/ssh-test-env
# 构建并启动容器
docker-compose up -d
# 查看容器状态
docker-compose ps
# 查看容器日志
docker-compose logs ssh-test-server
```
### 2. 测试连接
```bash
# 基本SSH连接测试端口2222映射到容器的22端口
ssh root@localhost -p 2222
# 密码: password
# 使用其他用户测试
ssh admin@localhost -p 2222
# 密码: 123456
ssh test@localhost -p 2222
# 密码: test123
```
### 3. 使用fscan测试
```bash
# 测试单个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
#### 测试连接超时和重试
```bash
# 测试连接超时设置
./fscan -h 127.0.0.1:2222 -m ssh -timeout 5
# 测试多线程扫描
./fscan -h 127.0.0.1:2222 -m ssh -t 10
```
#### 测试用户枚举
```bash
# 测试是否能正确识别存在的用户
./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
## 管理命令
### 环境控制
```bash
# 启动环境
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
```
### 清理环境
```bash
# 停止并删除容器、网络
docker-compose down
# 清理所有相关资源
docker-compose down -v --rmi all
```
## 故障排除
### 端口冲突
如果端口2222已被占用修改`docker-compose.yml`中的端口映射:
```yaml
ports:
- "2223:22" # 改为其他可用端口
```
### SSH连接被拒绝
1. 确认容器正在运行:`docker-compose ps`
2. 检查健康状态:`docker-compose logs ssh-test-server`
3. 验证端口映射:`docker port fscan-ssh-test`
### 权限问题
```bash
# 确保脚本具有执行权限
chmod +x scripts/start-ssh.sh
# 重新构建容器
docker-compose build --no-cache ssh-test-server
```
## 测试建议
1. **逐步测试**: 先测试单个用户连接,再测试批量扫描
2. **日志监控**: 实时监控SSH服务日志了解fscan行为
3. **性能测试**: 测试不同线程数对扫描性能的影响
4. **边界测试**: 测试无效IP、关闭的端口等边界情况
## 安全提醒
- 此环境仅用于测试目的
- 不要将此环境暴露到公网
- 测试完成后及时清理环境
- 不要在生产网络中运行此配置