add docker for testing
This commit is contained in:
147
docker/Dockerfile
Normal file
147
docker/Dockerfile
Normal file
@@ -0,0 +1,147 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Prevent interactive prompts during installation
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Install build dependencies for Samba
|
||||
RUN apt-get update && apt-get install -y \
|
||||
acl \
|
||||
attr \
|
||||
autoconf \
|
||||
bind9utils \
|
||||
binutils \
|
||||
bison \
|
||||
build-essential \
|
||||
ccache \
|
||||
chrpath \
|
||||
curl \
|
||||
debhelper \
|
||||
dnsutils \
|
||||
docbook-xml \
|
||||
docbook-xsl \
|
||||
flex \
|
||||
gcc \
|
||||
gdb \
|
||||
git \
|
||||
glusterfs-common \
|
||||
gzip \
|
||||
heimdal-multidev \
|
||||
hostname \
|
||||
htop \
|
||||
krb5-config \
|
||||
krb5-kdc \
|
||||
krb5-user \
|
||||
lcov \
|
||||
libacl1-dev \
|
||||
libarchive-dev \
|
||||
libattr1-dev \
|
||||
libavahi-common-dev \
|
||||
libblkid-dev \
|
||||
libbsd-dev \
|
||||
libcap-dev \
|
||||
libcephfs-dev \
|
||||
libcups2-dev \
|
||||
libdbus-1-dev \
|
||||
libglib2.0-dev \
|
||||
libgnutls28-dev \
|
||||
libgpgme-dev \
|
||||
libicu-dev \
|
||||
libjansson-dev \
|
||||
libjs-jquery \
|
||||
libjson-perl \
|
||||
libkrb5-dev \
|
||||
libldap2-dev \
|
||||
liblmdb-dev \
|
||||
libncurses5-dev \
|
||||
libpam0g-dev \
|
||||
libparse-yapp-perl \
|
||||
libpcap-dev \
|
||||
libpopt-dev \
|
||||
libreadline-dev \
|
||||
libsystemd-dev \
|
||||
libtasn1-bin \
|
||||
libtasn1-dev \
|
||||
libunwind-dev \
|
||||
lmdb-utils \
|
||||
locales \
|
||||
lsb-release \
|
||||
make \
|
||||
mawk \
|
||||
mingw-w64 \
|
||||
patch \
|
||||
perl \
|
||||
perl-modules \
|
||||
pkg-config \
|
||||
procps \
|
||||
psmisc \
|
||||
python3 \
|
||||
python3-cryptography \
|
||||
python3-dateutil \
|
||||
python3-dbg \
|
||||
python3-dev \
|
||||
python3-dnspython \
|
||||
python3-gpg \
|
||||
python3-markdown \
|
||||
python3-pyasn1 \
|
||||
python3-requests \
|
||||
rng-tools \
|
||||
rsync \
|
||||
sed \
|
||||
sudo \
|
||||
tar \
|
||||
tree \
|
||||
uuid-dev \
|
||||
wget \
|
||||
xsltproc \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Download and extract Samba 4.23.1
|
||||
WORKDIR /usr/src
|
||||
RUN wget https://download.samba.org/pub/samba/stable/samba-4.23.1.tar.gz && \
|
||||
tar -xzf samba-4.23.1.tar.gz && \
|
||||
rm samba-4.23.1.tar.gz
|
||||
|
||||
# Build Samba
|
||||
WORKDIR /usr/src/samba-4.23.1
|
||||
RUN ./configure \
|
||||
--prefix=/usr/local/samba \
|
||||
--enable-debug \
|
||||
--enable-selftest \
|
||||
--with-ads \
|
||||
--with-systemd \
|
||||
--systemd-install-services \
|
||||
--with-winbind && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
|
||||
# Create directories
|
||||
RUN mkdir -p /usr/local/samba/etc \
|
||||
/usr/local/samba/var/locks \
|
||||
/usr/local/samba/var/run \
|
||||
/usr/local/samba/private \
|
||||
/var/log/samba \
|
||||
/var/lib/samba
|
||||
|
||||
# Create wins hook script (demonstrates vulnerability)
|
||||
RUN echo '#!/bin/bash\n\
|
||||
echo "WINS Hook Executed!" >> /var/log/samba/wins_hook.log\n\
|
||||
echo "Action: $1" >> /var/log/samba/wins_hook.log\n\
|
||||
echo "NetBIOS Name: $2" >> /var/log/samba/wins_hook.log\n\
|
||||
echo "IP Address: $3" >> /var/log/samba/wins_hook.log\n\
|
||||
echo "Timestamp: $(date)" >> /var/log/samba/wins_hook.log\n\
|
||||
echo "---" >> /var/log/samba/wins_hook.log' > /usr/local/samba/bin/wins_hook.sh && \
|
||||
chmod +x /usr/local/samba/bin/wins_hook.sh
|
||||
|
||||
# Add Samba binaries to PATH
|
||||
ENV PATH="/usr/local/samba/bin:/usr/local/samba/sbin:${PATH}"
|
||||
|
||||
# Copy configuration files
|
||||
COPY smb.conf /usr/local/samba/etc/smb.conf
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
# Expose necessary ports
|
||||
EXPOSE 137/udp 138/udp 139/tcp 445/tcp 389/tcp 636/tcp 88/tcp 464/tcp
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
39
docker/docker-compose.yml
Normal file
39
docker/docker-compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
samba-vulnerable:
|
||||
build: .
|
||||
container_name: samba-vuln-4.23.1
|
||||
hostname: vuln-dc
|
||||
domainname: vulnerable.local
|
||||
networks:
|
||||
samba_net:
|
||||
ipv4_address: 172.20.0.10
|
||||
ports:
|
||||
- "8137:137/udp"
|
||||
- "8138:138/udp"
|
||||
- "139:139/tcp"
|
||||
- "8445:445/tcp"
|
||||
- "8389:389/tcp"
|
||||
- "8636:636/tcp"
|
||||
- "8088:88/tcp"
|
||||
- "8464:464/tcp"
|
||||
volumes:
|
||||
- samba-data:/usr/local/samba/private
|
||||
- samba-logs:/var/log/samba
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
networks:
|
||||
samba_net:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/16
|
||||
|
||||
volumes:
|
||||
samba-data:
|
||||
samba-logs:
|
||||
31
docker/entrypoint.sh
Normal file
31
docker/entrypoint.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "Samba 4.23.1 CVE-2025-10230 Test Environment"
|
||||
|
||||
# Create log file for wins hook
|
||||
touch /var/log/samba/wins_hook.log
|
||||
chmod 666 /var/log/samba/wins_hook.log
|
||||
|
||||
# Check if domain is already provisioned
|
||||
if [ ! -f /usr/local/samba/private/sam.ldb ]; then
|
||||
echo "Provisioning domain..."
|
||||
/usr/local/samba/bin/samba-tool domain provision \
|
||||
--realm=VULNERABLE.LOCAL \
|
||||
--domain=VULNERABLE \
|
||||
--adminpass='P@ssw0rd123!' \
|
||||
--server-role=dc \
|
||||
--use-rfc2307 \
|
||||
--dns-backend=SAMBA_INTERNAL
|
||||
|
||||
echo "Domain provisioned"
|
||||
else
|
||||
echo "Domain already provisioned"
|
||||
fi
|
||||
|
||||
echo "WINS Hook: /usr/local/samba/bin/wins_hook.sh"
|
||||
echo "WINS Hook Log: /var/log/samba/wins_hook.log"
|
||||
|
||||
# Start Samba in foreground
|
||||
exec /usr/local/samba/sbin/samba -i -M single -s /usr/local/samba/etc/smb.conf
|
||||
Reference in New Issue
Block a user