feat: v2.1.0 核心重构与功能增强

## 架构重构
- 全局变量消除,迁移至 Config/State 对象
- SMB 插件融合(smb/smb2/smbghost/smbinfo)
- 服务探测重构,实现 Nmap 风格 fallback 机制
- 输出系统重构,TXT 实时刷盘 + 双写机制
- i18n 框架升级至 go-i18n

## 性能优化
- 正则表达式预编译
- 内存优化 map[string]struct{}
- 并发指纹匹配
- SOCKS5 连接复用
- 滑动窗口调度 + 自适应线程池

## 新功能
- Web 管理界面
- 多格式 POC 适配(xray/afrog)
- 增强指纹库(3139条)
- Favicon hash 指纹识别
- 插件选择性编译(Build Tags)
- fscan-lab 靶场环境
- 默认端口扩展(62→133)

## 构建系统
- 添加 no_local tag 支持排除本地插件
- 多版本构建:fscan/fscan-nolocal/fscan-web
- CI 添加 snapshot 模式支持仅测试构建

## Bug 修复
- 修复 120+ 个问题,包括 RDP panic、批量扫描漏报、
  JSON 输出格式、Redis 检测、Context 超时等

## 测试增强
- 单元测试覆盖率 74-100%
- 并发安全测试
- 集成测试(Web/端口/服务/SSH/ICMP)
This commit is contained in:
ZacharyZcR
2026-01-11 20:16:23 +08:00
parent 6b13b2e84f
commit 71b92d4408
948 changed files with 92335 additions and 24630 deletions
+30
View File
@@ -0,0 +1,30 @@
====================================
下一步行动指引
====================================
你已经成功进入 DMZ 区的 FTP 服务器!
发现的关键文件:
1. SSH 私钥:/home/admin/.ssh/office_key
2. 该私钥可以访问 VPN 网关 (10.10.1.13)
VPN 网关是双网卡主机:
- DMZ 侧:10.10.1.13
- 办公网侧:10.10.2.2
攻击路径:
1. 下载 SSH 私钥
2. 使用私钥连接 VPN 网关
3. 从 VPN 网关扫描办公网
命令示例:
# 下载私钥(已在当前目录)
chmod 600 office_key
# 连接 VPN 网关
ssh -i office_key [email protected]
# 扫描办公网
fscan -h 10.10.2.0/24
加油!
+17
View File
@@ -0,0 +1,17 @@
====================================
办公网打印机配置信息
====================================
设备型号: HP LaserJet Pro M404n
IP地址: 10.10.2.23
SMB共享: 已启用
管理员账户:
- 用户名: printer
- 密码: [已保存在密码管理器]
共享文件夹:
- print$ (打印机驱动)
- backup (打印任务备份)
注意: 为了方便管理,使用了简单密码
+27
View File
@@ -0,0 +1,27 @@
====================================
生产网主机清单
====================================
网段:10.10.3.0/24
已知主机:
10.10.3.30 - app-web (Tomcat 应用服务器)
10.10.3.31 - cache-redis (Redis 缓存,密码:redis123)
10.10.3.32 - mq-rabbit (RabbitMQ)
10.10.3.33 - mq-activemq (ActiveMQ)
10.10.3.34 - search-es (Elasticsearch)
重点目标:
★ Redis (10.10.3.31) - 已知密码,可能存在写入漏洞
防火墙策略:
- 办公网 -> 生产网:只允许特定端口
- 生产网 -> 核心网:全通(一旦进入生产网,可以访问核心网!)
核心网预览:
10.10.4.0/24 - 数据库集群和域控
策略建议:
1. 通过 Redis 获取立足点
2. 横向移动到其他生产主机
3. 扫描核心网寻找数据库
+18
View File
@@ -0,0 +1,18 @@
# Redis 配置文件(生产网备份)
bind 0.0.0.0
protected-mode no
port 6379
requirepass redis123
# 注意:此配置存在安全风险
# Redis 密码:redis123
# 主机:10.10.3.31
# 可能的攻击向量:
# 1. 使用密码认证后写入 SSH 公钥
# 2. 利用 Redis 执行 Lua 脚本
# 3. 配置文件写入攻击
# 从办公网连接:
# redis-cli -h 10.10.3.31 -a redis123
+15
View File
@@ -0,0 +1,15 @@
╔═══════════════════════════════════════════════════════╗
║ FLAG 1 - DMZ 侦察 ║
╚═══════════════════════════════════════════════════════╝
恭喜!你成功发现了 DMZ 区的 Web 服务器!
Flag: FSCAN_LAB{w3b_f1ng3rpr1nt_d1sc0v3ry}
下一步提示:
- DMZ 区还有其他服务(FTP、SMTP、SSH)
- FTP 服务器可能有弱密码
- 尝试爆破 FTP: admin/123456
fscan 命令示例:
fscan -h 10.10.1.12 -m ftp -user admin -pwd 123456
+9
View File
@@ -0,0 +1,9 @@
============================================
MSSQL 数据库攻击成功
============================================
恭喜!你成功攻破了 MSSQL 数据库。
Flag: FSCAN_LAB{mssql_s4_4cc0unt_pwn3d}
从 master.dbo.secrets 表中获取了核心数据。
+9
View File
@@ -0,0 +1,9 @@
============================================
VNC 远程桌面入侵成功
============================================
恭喜!你成功通过 VNC 弱密码获取了办公网主机的远程控制权。
Flag: FSCAN_LAB{vnc_r3m0t3_d3skt0p_pwn3d}
VNC 密码管理不当是常见的安全隐患...
+9
View File
@@ -0,0 +1,9 @@
============================================
老旧 Telnet 服务入侵成功
============================================
恭喜!你成功利用古老的 Telnet 服务获取了访问权限。
Flag: FSCAN_LAB{t3ln3t_l3g4cy_syst3m}
这台主机运行着过时的 Telnet 服务,属于遗留系统...
+1
View File
@@ -0,0 +1 @@
FSCAN_LAB{smb_pr1nt3r_sh4r3_pwn3d}
+20
View File
@@ -0,0 +1,20 @@
╔═══════════════════════════════════════════════════════╗
║ FLAG 2 - FTP 突破 ║
╚═══════════════════════════════════════════════════════╝
干得好!你通过 FTP 弱密码成功进入了 DMZ 区!
Flag: FSCAN_LAB{ftp_w34k_p4ssw0rd_pwn}
下一步提示:
- 查看当前目录的其他文件
- 注意 .ssh 目录中的私钥
- VPN 网关 (10.10.1.13) 是进入办公网的跳板
关键文件:
/home/admin/.ssh/office_key (办公网 SSH 私钥)
/home/admin/next_step.txt (下一步指引)
连接 VPN 网关:
chmod 600 office_key
ssh -i office_key [email protected]
+19
View File
@@ -0,0 +1,19 @@
╔═══════════════════════════════════════════════════════╗
║ FLAG 3 - VPN 网关 ║
╚═══════════════════════════════════════════════════════╝
出色!你已经通过 VPN 网关进入办公网!
Flag: FSCAN_LAB{vpn_g4t3w4y_br34ch3d}
当前网络:
- DMZ 接口: 10.10.1.13
- 办公网接口: 10.10.2.2
下一步提示:
- 从 VPN 网关扫描办公网 (10.10.2.0/24)
- 重点关注备份服务器 (Rsync 873 端口)
- Rsync 可能配置为未授权访问
扫描命令:
fscan -h 10.10.2.0/24 -p 22,873,5900,23,161
+20
View File
@@ -0,0 +1,20 @@
╔═══════════════════════════════════════════════════════╗
║ FLAG 4 - 办公网备份服务器 ║
╚═══════════════════════════════════════════════════════╝
太棒了!你找到了备份服务器的敏感数据!
Flag: FSCAN_LAB{rsync_b4ckup_l34k}
备份文件内容:
✓ prod_redis.conf - 生产网 Redis 配置
✓ prod_hosts.txt - 生产网主机列表
✓ ssh_keys/prod_jump_key - 生产网跳板私钥
下一步提示:
- 使用 Redis 密码连接生产网 Redis (10.10.3.31)
- Redis 可能启用了密码保护但有漏洞
- 利用 Redis 写入 SSH 公钥进行横向移动
获取备份文件:
rsync -av rsync://10.10.2.22/backup/credentials/ ./
+2
View File
@@ -0,0 +1,2 @@
FLAG 5 存储在 Redis 中,使用命令获取:
redis-cli -h 10.10.3.31 -a redis123 GET flag5
+2
View File
@@ -0,0 +1,2 @@
FLAG 6 存储在 MySQL 中,使用命令获取:
mysql -h 10.10.4.40 -u root -pPassword -e "SELECT flag FROM secrets.flags WHERE id=1;"
+2
View File
@@ -0,0 +1,2 @@
FLAG 7 (最终 Flag) 存储在 MongoDB 中,使用命令获取:
mongosh mongodb://admin:[email protected]/admin --eval "db.admin_secrets.find({type:'flag'}).pretty()"
+9
View File
@@ -0,0 +1,9 @@
============================================
Elasticsearch 情报收集成功
============================================
恭喜!你成功利用 Elasticsearch 未授权访问漏洞获取了生产网的敏感信息。
Flag: FSCAN_LAB{3l4st1cs34rch_un4uth0r1z3d}
提示:在生产环境的索引中发现了数据库凭证信息...
+9
View File
@@ -0,0 +1,9 @@
============================================
PostgreSQL 数据库渗透成功
============================================
恭喜!你成功爆破了 PostgreSQL 数据库密码。
Flag: FSCAN_LAB{p0stgr3s_d4t4b4s3_pwn3d}
从 business.secrets 表中获取了企业核心业务数据。
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA3ZnNZei9g7KMDlKfiMZA4bR4EgBmF63rYKEDXEukuLmS8edU8O7s
11qEh9EY2P1SWk+j2f1t4PLWHE7FHoKvxWtsgoCy0AfZdbSdUqE/1L23SKJcpzE2NNr1VS
xDvZjMZEt0yiF3a8CHLsOifuDjeUm2dlorT8A934k9Lw5RTZZ8OUgxzf/JiYCDzlOFl0hG
QYKLxujC9a3H3fzApPKRIttkzEt8YvUPfcIwBkazR8mCAqXlKJD9d0P3/PNXp+GgNVnPPB
fhl4v0Jfski2w4BpdVkIcgo/bpNCYhT84Oq3HHQy2iLp00/W3kBdVslwjzWVjDvF3XR36+
7EZM4L0rMQAAA8jmRkJ75kZCewAAAAdzc2gtcnNhAAABAQDdmc1l6L2DsowOUp+IxkDhtH
gSAGYXretgoQNcS6S4uZLx51Tw7uzXWoSH0RjY/VJaT6PZ/W3g8tYcTsUegq/Fa2yCgLLQ
B9l1tJ1SoT/UvbdIolynMTY02vVVLEO9mMxkS3TKIXdrwIcuw6J+4ON5SbZ2WitPwD3fiT
0vDlFNlnw5SDHN/8mJgIPOU4WXSEZBgovG6ML1rcfd/MCk8pEi22TMS3xi9Q99wjAGRrNH
yYICpeUokP13Q/f881en4aA1Wc88F+GXi/Ql+ySLbDgGl1WQhyCj9uk0JiFPzg6rccdDLa
IunTT9beQF1WyXCPNZWMO8XddHfr7sRkzgvSsxAAAAAwEAAQAAAQAGXMM5jvE7AeI0ypE/
Rm7oNAvi+20y9pi8k17i9F6IObbC+ID3MmrtI3GM6zdXCo3l3yW9jWHNXLeCRE4zSi4FAW
iyBgMsRx9qmlsOe2f3YhOMM7IskDSF17gFwCG5RLTwl7yEjamtt69B69bDZQ5O5guFsiDO
dz7nhzuRGWyC6VadqgsoNaGUFmyJya9y8/aBSuNZEZ8dOlBdR3jcRsrOCXQneQpLWfYQgC
9KlFFgQVyO2VxaD6drEcqU8+fUVJlftHRn4J5R6D/CG2KxfB7g6LXUcaCVZBY55kWBPfpY
lJocp6EtAVX8dLl/oRKWmJYHkQBO6d0zzwNfVryT/HwBAAAAgQCnYylI9zS6aCmw+aiS2C
JQAECbS5T90xrwqR1IRGb6DJAQKqzHbF6YFW/QOMSCuWktmC8wKBMhj6UFywzjZuvPSJW2
gJodi50cmozfylSKvBlmPJEUI/8Wn6Yn2nYOUjTC5tUa3r2rtiH8M+3q2L/tGPJZhmRHXe
kaMDxtSNwUgwAAAIEA8kaZXYccjFRueVQP1CMYhmybAkRVBU242Iuz1LYmvURi2IAeYQi8
jmS1ilZB/j2BPKFE6yxvYaNBYRoJ3DKhTrydR13wb68xSUU9wWN1qkwuHpNdxNCORCsaEp
1Mwexf7u9fnA/FpV+yNbJkXKBNTtkMrnwrrrLTPLdP0vNtMgEAAACBAOonYbHWki46kDIS
+Fa9LHkIVHH2Odpq7hGTtuJXXao55ac6nbAkBR8yOCCXmV4kw2PYMqPogUGptAhN1Yd3cB
Q04vNWkwkkxObuQempaJE6PMLY12IdouStAgCl43d+Mlo5AOnjYq0MgJbcGMkgHsp0wzbQ
+8XRKsLeeDJd9JkxAAAADm9mZmljZV92cG5fa2V5AQIDBA==
-----END OPENSSH PRIVATE KEY-----
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEArEEc3XJcEgI3lVfJ4eidJqKHFywOpbmNjHRgqWj4VDbmgE1yUQI3
fN+/C68in7muvV2RSGM9/kaFYksmiFV4HG17vozsJNIRpG0kA6zi7qhKPVcCFDuZejpfUp
O4SyuJRBzCOy3LxEVudHpc855499eKdDAxDamj4e5vrl01jroOutRMO0PuWsJHS2Y6B0W/
uMkfZvw07nAKyN9TpxaXiTakEAvlioYZKBQkag2LpRJ7uTAM3sfqH5FpI5VHkHVhVfsfrM
pr0LfElVOiPMUmx6sheGoqUQfvgCQy4CN+tUwmK7c7zlKcsNso3aVQ0YpwLemoxQXzzmI0
a1afKdJIEQAAA8gWusYkFrrGJAAAAAdzc2gtcnNhAAABAQCsQRzdclwSAjeVV8nh6J0moo
cXLA6luY2MdGCpaPhUNuaATXJRAjd8378LryKfua69XZFIYz3+RoViSyaIVXgcbXu+jOwk
0hGkbSQDrOLuqEo9VwIUO5l6Ol9Sk7hLK4lEHMI7LcvERW50elzznnj314p0MDENqaPh7m
+uXTWOug661Ew7Q+5awkdLZjoHRb+4yR9m/DTucArI31OnFpeJNqQQC+WKhhkoFCRqDYul
Enu5MAzex+ofkWkjlUeQdWFV+x+symvQt8SVU6I8xSbHqyF4aipRB++AJDLgI361TCYrtz
vOUpyw2yjdpVDRinAt6ajFBfPOYjRrVp8p0kgRAAAAAwEAAQAAAQASF3Oj6Y00ggGbAKGu
RbttsZ/NJf4y10J/6EA3wtPkKnD6tEenrPstdSWQYVhaXMr2ziNCblP2Rytet8RoCMwI9l
HLIWty8ZJTSfhAn5GlHc1QVHleLSVRQly9JFE0qfGskvWueAChEGbJuolVOAV+CGgdDGu2
guT4x414y4biwsjR0K2z9eJS8rrMOlXHs35ZDC+Hqzvjgoum3hJx6NZzJLV3+MJWiYSX4J
5+2zQhNW4anXeuFUzqdLlUYCs95Djr26699xu2RcpKAvjCEU2sZKRnK7j7nUXS4sBy4fEJ
+UTJfutkZ6dXZjTe9eSHBsNbehQERu4h31mxFeeLLInNAAAAgB5Kj6NZ5rtJcTBnwWuBg0
Vc1YVo03vx3DC7F2HzqDp0WZ9o1jNtXeI1ptrEHgWxtxADeTEaJ25sViXZjf2O5wSDreu3
UlXhaLKQvwCQ3yRk/JvDuuKOCmRDpn3VrP+zevbwRIto9V0NHNPwX70LmibBI7W0N3qeFI
ul/GW1M+JvAAAAgQDy2CAp/7YZ5ZGz7clvGBtbP+mmkR9U4U/OH9dS0q8ja4y8SVZFYKip
AcPcFUCkSuuMq1xs38zh6RPApACE79SHbCmOlQnbRcR4ymEZAlU+tAxZ2SCV0TPE0D8Knd
+OUrXZTmdjxRVJYiKWabgivXw/eKdOx19LhdSt1eqdWQWztQAAAIEAtZYDrUcuuFZ3pjIQ
uBOhlxRLwxzaHI/8y+hQYEOuObKZ9It7gua2HL3mMqY+LlOYRfXJ8bRRpHIfYpfBepzazY
tKvjXMpTUL868BuAX3c8CPMdlIg694nyDmQFOCAXDPkNm3F6GVoMaieFtLtmhbuIOXjtre
kbciQMlWhijUNG0AAAANcHJvZF9qdW1wX2tleQECAwQFBg==
-----END OPENSSH PRIVATE KEY-----