Подложи свинью в консоль Докучаев Дмитрий aka Forb Хакер, номер #070, стр. 070-114-4 Как ты догадался, мы переопределим вызов /bin/su на поддельный .su. В нем напишем, что «к сожалению, юзер не имеет прав для вызова /bin/su». Естественно, прежде чем смотреть алиасы, админ будет долго анализировать свои права и добавлять себя в неизвестные группы (если, конечно, под рукой будет открытая рутовая консоль), а лишь затем догадается о подставе. Немного фантазии - и ты можешь превратить .su в полноценный рутовый шелл, который будет слегка глючить и сбоить. Вот и весь сценарий: #!/bin/sh echo -e "You are not allowed to su root!\nSorry." Пользуясь случаем, напомню, что параметр –e позволяет обрабатывать специальные символы типа возврата каретки, табуляции и т.п. Что нам стоит шелл построить? И наконец, самый хардкорный сценарий, реализацию которого я оставил на десерт. Оно понятно, теперь ты владеешь всеми bash-заподлянками и можешь наколбасить суперский скрипт. Сейчас мы подменим не какой-нибудь бинарник, а целый командный интерпретатор! Когда юзер отойдет на обед (в туалет, покурить, поговорить по мобиле – нужное подчеркнуть ;)), аккуратно перенеси подложный скрипт в его каталог, а затем запусти его. Перед этим ты умело подкорректируешь приглашение интерпретатора, а также придумаешь заподлянские выводы от команд (впрочем, можешь оставить дефолтовые - я не обижусь). Собственно, творение называется bash, выполняет функции /bin/bash, а на первый взгляд вообще неотличимо от шелла. Но только на первый :). Стоит юзеру выполнить какую-нибудь команду, как скрипт ругнется на нехватку памяти, на права, на ошибку сегментации. В итоге у юзера пропадет желание работать, а у тебя существенно поднимется настроение и боевой дух :). Поддельный интерпретатор #!/bin/sh BEGIN='[user@localhost user]$ '; trap "echo -n $BEGIN" SIGINT while true; do echo -n "$BEGIN" read cmd if [ "$cmd" != '' ] then rand=$((RANDOM%5+1)) case "$rand" in "1" ) echo "Segmentation fault (core dumped)" ;; "2" ) echo "-bash: fork: resource temporary unavaliable" ;; "3" ) echo "-bash: $cmd: command not found" ;; "4" ) echo "-bash: $cmd: Permission denied" ;; "5" ) echo "Wait for 5 minutes" sleep 300 ;; esac fi done Как я уже сказал, нужно подправить приглашение. Оно задается в первой строке кода. Затем переопределяется реакция на SIGINT (полная имитация Ctrl+C). Потом входим в бесконечный цикл и читаем там команду. Если она поступила, генерируем случайное число от 1 до 5 (это ты уже умеешь делать). Далее анализируем число: если это единица – выдаем ошибку сегментации, двойка – ругаемся на нехватку памяти, тройка – пишем ошибку 404 :), четверка – ругаемся на права, пятерка – вынуждаем юзера подождать 5 минут. Никто не мешает тебе нагенерить собственные шутки и внедрить их в скрипт. Для этого достаточно расширить диапазон рандома и вставить пару строк в конструкцию case/esac. Можно придумать всего один прикол, а в остальных случаях исправно выполнять команду. Возможно, так будет интереснее: юзер не сразу поймет, что над ним прикололись. |