What commands spawn sub-shells?
My company uses a 3rd party utility to control access to root level functions that operates much like sudo. Simply prefix the command you want to run with their command, and if you have access to it, you can run the command as root. The problem is, many of my colleagues and myself have found several commands that can easily spawn a sub-shell from them (like vi) that essentially gives you an un-monitored root shell. (Great system, eh). Anyway, as luck would have it, my local ISSA chapter is hosting a spokesman from the company that produces this program at their next meeting. I'd like to grill this guy to make sure his company has addressed (whether or not my company has implemented the program properly) all the potential holes that exist as standard in most Unix distributions. Can anyone help me think of standard Unix commands that allow you to spawn a subshell, or perhaps simply allow a shell command (like /bin/bash :D)? Here's the list I've compiled so far:
more (as in !sh when viewing a file)
vi (as in :sh in command mode)
find (as in find . -exec sh)
exec (as in simply exec sh -- this command lets the current shell exit normally, and spawns a new one)
nice (as in nice -0 sh)
screen (as in screen will spawn a detatchable shell)
<edit additions>
emacs (I know you can, somehow...I hate emacs. :D)
perl (as in perl -e 'system("/bin/sh");')
awk (as in awk 'system("/bin/sh");')
python (as in python -c "import os; os.execv('/bin/sh')", or something like this...I'm not a python scripter)
</edit additions>
<edit more additions>
cat (as in cat `/bin/sh`)
echo (as in echo `/bin/sh`)
</edit more additions>
I realize there are probably several more of these things and I haven't spent very long on this list, but I was hoping that many hands would make light work. Can anyone think of others?