_ /| \'o.O' =(___)= U
here is an example script
cd /data/www/ vi ip.nethence.com/index.cgi #!/bin/sh cat <<EOF Content-type: text/plain your ip is $REMOTE_ADDR which reverse resolves to `host $REMOTE_ADDR 2>/dev/null| awk '{print $NF}' 2>/dev/null` EOF chmod +x ip.nethence.com/index.cgi
and here is how to enable it inside a chroot. note that are are dealing with thttpd’s' chroot, the vhost do NOT have any dedicated one
cd /data/www/ mkdir bin/ mkdir lib/ cp /bin/sh bin/ ldd /bin/sh cp /lib/libedit.so.3 lib/ cp /lib/libterminfo.so.1 lib/ cp /lib/libc.so.12 lib/ chroot ./ /bin/sh
troubleshoot
chroot: /bin/sh: No such file or directory ktrace chroot ./ /bin/sh kdump | less
and search for open -1 errno 2
mkdir libexec/ cp /libexec/ld.elf_so libexec/
add a few more things to the env
cp /bin/cat bin/ ldd /bin/cat mkdir -p usr/bin/ cp /usr/bin/awk usr/bin/ ldd /usr/bin/awk mkdir -p usr/lib/ cp /usr/lib/libm.so.0 usr/lib/ cp /usr/bin/host usr/bin/ ldd /usr/bin/host for f in `ldd /usr/bin/host | sed 1d | awk '{print $NF}'`; do cp -vf $f usr/lib done; unset f #cp /usr/bin/dig usr/bin/ #ldd /usr/bin/dig #for f in `ldd /usr/bin/dig | sed 1d | awk '{print $NF}'`; do # cp -vf $f usr/lib #done; unset f mkdir -p usr/libexec/ cp /usr/libexec/ld.elf_so usr/libexec/ mkdir dev/
for some reason I get 0,0
instead of 46,1
(coz of ext2fs?)
#mknod -m 644 -g wheel -u root dev/urandom c 46 1
so let us go dirty
ln ../../../dev/null dev/ ln ../../../dev/urandom dev/ ll dev/
major/minor
crw-rw-rw- 2 root wheel 2, 2 May 3 20:00 null crw-r--r-- 2 root wheel 46, 1 Apr 24 09:00 urandom chroot ./ /usr/bin/awk chroot ./ /usr/bin/host nethence.com #chroot ./ /usr/bin/dig nethence.com
and finaly test the CGI itself
ln -s ip.nethence.com/index.cgi lala chroot ./ /lala rm -f lala