mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-25 04:31:52 +08:00
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:
@@ -0,0 +1,62 @@
|
||||
# 使用Ubuntu最新版本作为基础镜像
|
||||
FROM ubuntu:latest
|
||||
|
||||
# 安装必要的软件包(SSH服务 + 常用渗透工具)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
openssh-server \
|
||||
telnet \
|
||||
curl \
|
||||
wget \
|
||||
netcat-traditional \
|
||||
net-tools \
|
||||
iputils-ping \
|
||||
dnsutils \
|
||||
vim \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 创建SSH所需的目录
|
||||
RUN mkdir /var/run/sshd
|
||||
|
||||
# 允许root用户SSH登录并设置密码
|
||||
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
||||
RUN echo 'root:Aa123456789' | chpasswd
|
||||
|
||||
# 创建多个弱密码用户(匹配fscan默认字典)
|
||||
RUN useradd -m admin && echo 'admin:admin' | chpasswd && \
|
||||
useradd -m test && echo 'test:123456' | chpasswd && \
|
||||
useradd -m user && echo 'user:password' | chpasswd && \
|
||||
echo 'root:root' | chpasswd
|
||||
|
||||
# 配置密钥认证用户(ubuntu用户已存在于Ubuntu镜像中)
|
||||
RUN mkdir -p /home/ubuntu/.ssh && \
|
||||
chmod 700 /home/ubuntu/.ssh
|
||||
|
||||
# 复制SSH测试密钥
|
||||
COPY test_key.pub /home/ubuntu/.ssh/authorized_keys
|
||||
COPY test_key_root.pub /root/.ssh/authorized_keys
|
||||
|
||||
# 设置密钥权限
|
||||
RUN chmod 600 /home/ubuntu/.ssh/authorized_keys && \
|
||||
chown -R ubuntu:ubuntu /home/ubuntu/.ssh && \
|
||||
mkdir -p /root/.ssh && chmod 700 /root/.ssh && \
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
|
||||
# 下载并安装 frp 服务端 (v0.65.0)
|
||||
RUN wget -q https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz && \
|
||||
tar -xzf frp_0.65.0_linux_amd64.tar.gz && \
|
||||
mv frp_0.65.0_linux_amd64/frps /usr/local/bin/frps && \
|
||||
chmod +x /usr/local/bin/frps && \
|
||||
rm -rf frp_0.65.0_linux_amd64*
|
||||
|
||||
# 创建 frp 配置目录
|
||||
RUN mkdir -p /etc/frp
|
||||
|
||||
# 开放22端口(SSH)和7000端口(FRP)
|
||||
EXPOSE 22 7000
|
||||
|
||||
# 复制并设置启动脚本
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
# 使用启动脚本(自动修复SSH密钥权限)
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -0,0 +1,2 @@
|
||||
docker build -t ubuntu-ssh .
|
||||
docker run -d -p 2222:22 ubuntu-ssh
|
||||
@@ -0,0 +1,21 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
ssh:
|
||||
build: .
|
||||
container_name: ssh_test
|
||||
hostname: ssh-target
|
||||
ports:
|
||||
- "2222:22" # 映射到宿主机2222端口
|
||||
networks:
|
||||
- test-network
|
||||
restart: unless-stopped
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
networks:
|
||||
test-network:
|
||||
driver: bridge
|
||||
|
||||
# 注意:不使用volumes挂载.ssh目录(会导致权限问题)
|
||||
# authorized_keys在构建时COPY进镜像
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# 修复SSH密钥权限(Docker volume在Windows上挂载时默认777)
|
||||
if [ -f /root/.ssh/authorized_keys ]; then
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
chown root:root /root/.ssh/authorized_keys
|
||||
fi
|
||||
|
||||
# 确保.ssh目录权限正确
|
||||
chmod 700 /root/.ssh
|
||||
|
||||
# 启动SSH服务
|
||||
exec /usr/sbin/sshd -D
|
||||
@@ -0,0 +1,27 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
|
||||
NhAAAAAwEAAQAAAQEA5SPgB8mqgvEZcjADVHhQqAOl3w/sND8SJtupUq9HmGOvlQH1Fcsi
|
||||
Nu4vT9aD+GzW1EpTrmAxJJ3uuGQ9aFsDamNkk0FIFL1nHeKzktWX/qiG175Yn9PKZJ6IzW
|
||||
2B+5W+VD5m81iWs++UhzyGoxYu9F75XaOgYj3P8v6xUoZrqJz5pTcr9v4xPXXw+eFPDfdT
|
||||
/sqlkctu8gHkt2DoUgpt8RNNXwJrjju9cTgOykzuC+OWPQHTl+OdLj+32Aj7FWjvtjmaI7
|
||||
vZtXnWUyGntEQKwXTa1Ou95bCMviisi0FVO5NwDcINl7SaO3wTvmINA2EUBT9jM73SiLt3
|
||||
npTFPYxEvQAAA8j4I37D+CN+wwAAAAdzc2gtcnNhAAABAQDlI+AHyaqC8RlyMANUeFCoA6
|
||||
XfD+w0PxIm26lSr0eYY6+VAfUVyyI27i9P1oP4bNbUSlOuYDEkne64ZD1oWwNqY2STQUgU
|
||||
vWcd4rOS1Zf+qIbXvlif08pknojNbYH7lb5UPmbzWJaz75SHPIajFi70Xvldo6BiPc/y/r
|
||||
FShmuonPmlNyv2/jE9dfD54U8N91P+yqWRy27yAeS3YOhSCm3xE01fAmuOO71xOA7KTO4L
|
||||
45Y9AdOX450uP7fYCPsVaO+2OZoju9m1edZTIae0RArBdNrU673lsIy+KKyLQVU7k3ANwg
|
||||
2XtJo7fBO+Yg0DYRQFP2MzvdKIu3eelMU9jES9AAAAAwEAAQAAAQAQHDxbV9Cy+aAUIO+P
|
||||
ABGNqon+O6icCMYuMLoAK/4w5utYouVYJarPaWIurxKixAY7sUkeZLl3zVnUIYoWvPVpxL
|
||||
i0yL14ZdOq7H47J+TSnQc0AnhJLnMXrXTJWrZtmZri4etLlzIrTwAmnPkLXNsqx8WpEYDM
|
||||
f3OQLluJxZUqqtKgCThjHl6rnkPW8XtChtjhTijRk06Y2kq5Z2mpBe6+g5vn+01FYZmm/w
|
||||
pNJevNT0sUhORgtprNi1xYqTimGjTn4Jum6xVPQme9ZDkjMy/gNYomzdJ1PVdXig3GLKuK
|
||||
T9UXZAAvUYuRWmVWRtKqo94PvzfkwzOMTFXlrE1jY+2ZAAAAgE1d6wc5wC1iw/39SQzFS2
|
||||
SCtvToMyIYA+hG2O+jtqLG1dEZB1gd8Cy201RHS2z3ohm7lRzJ33QPs0HrKoa/WqhGi4N6
|
||||
zM8GQrBXhEytdAz99ewqgiKUxvNo6hQ1/ro6HeWK7/reQ2fHd36x00FisOcrsYjPm5Kfqc
|
||||
hFxWc2ZKkeAAAAgQD/ttb4YyZrv6TYS1cchDhu6GoSjd+hXLSs8rTDruxMVIWBKBCIgksM
|
||||
FjQVaaS/Du6dbIuxUZLboqqfX+HWoxE71hbsSPakuKeOImGBQAGMmL+TCt3EvHhCrWhAT4
|
||||
9KMvPPzt1NXzrUXkfM9s3wiB2pO1GDP/nmAzCKcZnEoiY6yQAAAIEA5WVuuG1QBptV+yCA
|
||||
GizYhsStGW0dQSZps4ObEbWLSf3fdZgCDeZgOYnB4nL+KcfS4QSTsl+06dEh9N510ukNLy
|
||||
tRv94zr7mnLrbX30KWE5NfEz1TgRFXQjl0P5tiY1E3x0p8fbMC3rfif2JbGPESys0xDRvG
|
||||
r0EkhWtqz4KkwFUAAAAOZnNjYW4tdGVzdC1rZXkBAgMEBQ==
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlI+AHyaqC8RlyMANUeFCoA6XfD+w0PxIm26lSr0eYY6+VAfUVyyI27i9P1oP4bNbUSlOuYDEkne64ZD1oWwNqY2STQUgUvWcd4rOS1Zf+qIbXvlif08pknojNbYH7lb5UPmbzWJaz75SHPIajFi70Xvldo6BiPc/y/rFShmuonPmlNyv2/jE9dfD54U8N91P+yqWRy27yAeS3YOhSCm3xE01fAmuOO71xOA7KTO4L45Y9AdOX450uP7fYCPsVaO+2OZoju9m1edZTIae0RArBdNrU673lsIy+KKyLQVU7k3ANwg2XtJo7fBO+Yg0DYRQFP2MzvdKIu3eelMU9jES9 fscan-test-key
|
||||
@@ -0,0 +1,27 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
|
||||
NhAAAAAwEAAQAAAQEAqk+3GXolJ7TKoZrZgo08f16t7EZcHd4zr8YlqdZ080nCyDIrzSDi
|
||||
DlEUdCRFN6A5G3uVQxpQI0COdxCOVuEkbF27i0H2HxKq3k4ShEUS5aywv9tiAkR9WDkIz0
|
||||
adi89VcLQoW8P//HalPu5RooU0JqXKJvtd/yZ6W0a9EYkU7VRh3FDqtPnPPxD2JbPpcyOw
|
||||
AJsCmR/UawQg77pS9+3RBNXO2CRR6yWsQLI5zkZVqTEhh2Nfwzs+/UhzS3W/gXCSYLMFRA
|
||||
ztWEJYL9QFyGBNzIJMA6pdoT8Irvk1ZzX8weng+zMFJR2i6EOSGRE1fEFZiQ4k+ZQlLLb4
|
||||
clkSlCasZwAAA8il4sn+peLJ/gAAAAdzc2gtcnNhAAABAQCqT7cZeiUntMqhmtmCjTx/Xq
|
||||
3sRlwd3jOvxiWp1nTzScLIMivNIOIOURR0JEU3oDkbe5VDGlAjQI53EI5W4SRsXbuLQfYf
|
||||
EqreThKERRLlrLC/22ICRH1YOQjPRp2Lz1VwtChbw//8dqU+7lGihTQmpcom+13/JnpbRr
|
||||
0RiRTtVGHcUOq0+c8/EPYls+lzI7AAmwKZH9RrBCDvulL37dEE1c7YJFHrJaxAsjnORlWp
|
||||
MSGHY1/DOz79SHNLdb+BcJJgswVEDO1YQlgv1AXIYE3MgkwDql2hPwiu+TVnNfzB6eD7Mw
|
||||
UlHaLoQ5IZETV8QVmJDiT5lCUstvhyWRKUJqxnAAAAAwEAAQAAAQAQVm74nTHaQhVxdOgq
|
||||
W2pzHNMvXWfcdPfdWUiR/HYh7oX7wWsClbB0ciJgVShkrSnn8S4rjpHNx+rCu45ZVuYGao
|
||||
7L+EBoJljI1DwiKc7Qby/8v6ACcAKG3OBzoyZdhpP/ffDPLhlXj87LSij/n6qV4y/mFxVN
|
||||
yCmoVDwH5hq2p3TsGY766jr3UgvV9Kq+9gsdvyfWex29xMlupRMfDpSdE5KC2qmzwV4Akq
|
||||
DpKMWQtCCThpHqRu68J0QgSRmQRPQk1Q/YEhX0dQXNd9svzXF8QDBx17P0Sm6C9iwiTJoD
|
||||
ULsutT9D+KzDmq9AmxRnqyg/SY/eYBQ3pHMVaaGk4LeJAAAAgFfsSYo62z9TAaxEOT0ZYo
|
||||
hSYR4kzTIlX8RByvy4trPtcB5C3hD+q/xMLZiNM22nEPicUoYUaok7Bk46xAcCBbFRMnJ0
|
||||
WycESdOxHSMYzUW+hAKWypxAxMlF9M9cmYAv/hASxtbINx3rVbk1YMUS+RFdtBI1wBIOk9
|
||||
11zGzU9ICuAAAAgQDhaKu4pRq9sDrKLR5WrALq0HX93UvYlDyU5JfY7xuvCozEeUDQzCAA
|
||||
Nh/dNjqGx60AfAFGGf/k6SCv1SRJHhs7GQE3zABxQwO4hb/h7MNs+g3WtdLoV8N8xK1O9o
|
||||
nV0Pev3dLx8cStvWoNwARyx/HLh0/O+pImRqoCpnMwKjLxzwAAAIEAwWzOG/BDmPvgppso
|
||||
qo2ZZLXkW8KqA0E095Z97EvYNOY5H0iL8n7vcuLrLfUxSd62UZVSt57JXMo26d9k0UDXwd
|
||||
Nv8cI3Y5TUAhJLjANiWhCZomns93LoAysMIq/CMHWhDO5CIGKNHEY+JhbrqxcWlYPfQizA
|
||||
iNQluqSGy0jWuekAAAAPZnNjYW4tdGVzdC1yb290AQIDBA==
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqT7cZeiUntMqhmtmCjTx/Xq3sRlwd3jOvxiWp1nTzScLIMivNIOIOURR0JEU3oDkbe5VDGlAjQI53EI5W4SRsXbuLQfYfEqreThKERRLlrLC/22ICRH1YOQjPRp2Lz1VwtChbw//8dqU+7lGihTQmpcom+13/JnpbRr0RiRTtVGHcUOq0+c8/EPYls+lzI7AAmwKZH9RrBCDvulL37dEE1c7YJFHrJaxAsjnORlWpMSGHY1/DOz79SHNLdb+BcJJgswVEDO1YQlgv1AXIYE3MgkwDql2hPwiu+TVnNfzB6eD7MwUlHaLoQ5IZETV8QVmJDiT5lCUstvhyWRKUJqxn fscan-test-root
|
||||
@@ -0,0 +1,4 @@
|
||||
root:root
|
||||
admin:admin
|
||||
test:123456
|
||||
user:password
|
||||
@@ -0,0 +1,8 @@
|
||||
root
|
||||
admin
|
||||
123456
|
||||
password
|
||||
Aa123456789
|
||||
test
|
||||
{user}
|
||||
{user}123
|
||||
@@ -0,0 +1,5 @@
|
||||
root
|
||||
admin
|
||||
test
|
||||
user
|
||||
ubuntu
|
||||
Reference in New Issue
Block a user