В первую очередь нужно обращать внимание на параметры, переданные сценарию методом GET – такие скрипты сразу видно. Например, попробовать немного изменить значение опции на название системного файла. Только следует делать замену разумно. Допустим, присутствует параметр file, равный article1. Если попробовать модифицировать значение на что-нибудь типа «../../../../../etc/passwd%00», может улыбнуться удача. Ведь нулл-баг существует даже в последней версии Perl.
В случае с PHP можно поэксплуатировать баги, характерные для этого интерпретатора. Если вдруг встретится опция page=blabla, можно замутить как открытие системного файла, так и cross-side-атаку. Для этого создается PHP-файл с любым кодом на другом сервере и передает ссылка на него в качестве параметра. При хорошем раскладе скрипт загрузится, а его содержимое будет выполнено на атакуемом сервере.
Эта информация – лишь азы взлома через WWW. Хочешь узнать больше по хаку сценариев – читай статью про удаленное выполнение команд, а также подпишись на новости багтрак-лент.
Если хакеру везет, он быстро находит уязвимые файлы. Но бывает, что все сценарии неуязвимы. В этом случае взломщик обязательно попробует просканировать web-сервер на наличие бажных скриптов. Здесь ему поможет обычный WWW-сканер, каких в инете развелось великое множество. От себя могу порекомендовать перловый скрипт cscan.pl (kamensk.net.ru/1/x/cscan.tar.gz), позволяющий сканить машины с любой *nix-консоли. Это удобно и безопасно одновременно. В архиве помимо сканера расположена база уязвимых сценариев (правда, она довольно старая и уже покрылась плесенью ;)).
Ты можешь сказать, мол, сканировал я эти сервера и ничего, кроме чтения файлов, не добился. Действительно, никаких привилегий от просмотра содержимого /etc/passwd не поднять. Но это может послужить толчком к более действенному методу.
Если взломщику частично повезло с WWW, то он пробует атаковать сервер брутфорсом. Конечно, ты слышал, что этот метод заключается в переборе пароля на определенный сервис. На первый взгляд покажется, что просто бессмысленно прогонять все варианты паролей через сеть. Но только на первый. Если удалось прочитать /etc/passwd, это уже первый шаг к победе, ведь известны все системные логины. Остается запустить брутфорсер и озадачить его перебором нескольких простых паролей на указанные логины. На самом деле, брутфорс – это целое искусство, которое постигается годами. Матерый хакер сразу чувствует, что пользователь lamer1 вообще не имеет пароля, а юзер lamer2 заходит под паролем qwerty.
Лично я руководствуюсь несколькими правилами, когда прибегаю к брутфорсу. Во-первых, если /etc/passwd очень длинный и содержит множество аккаунтов, есть вероятность того, что пароль равен логину. И эта вероятность тем выше, чем больше записей в системе. Естественно, придется перебрать все строки файла и выбросить юзеров, которые не имеют шелла (зачем нам неполноценные аккаунты?), а затем составить списочек типа «login:login». После всего взломщик скормит этот увесистый список программе-брутфорсу.
По доброте душевной я написал небольшой перловый сценарий, который умеет перегонять данные из /etc/passwd в базу для брутфорсера. Делает он это быстро и качественно, отбирая только валидные аккаунты.
ЛИСТИНГ
#!/usr/bin/perl
$in=$ARGV[0];
$out=$ARGV[1]; ## Определим параметры скрипта
exit print «Use $0 $in $out\n» unless ($out);
open(IN,"$in");
open(OUT,"> $out");
while(
chomp;
if (~/sh$/) { ## Запишем только валидные аккаунты
($u,@undef)=split ":";
print OUT «$u:$u\n»; ## В виде пары login:login
}
}
close(IN);
close(OUT);
Что касается брутфорсера, могу привести тебе пример как под Винду, так и под *nix. Классическим софтом под Win32 является, конечно же, программа Brutus. Она умеет многое, но совсем не поддерживает прокси. Поэтому я люблю сводить Brutus с программой Sockscap и гнать трафик через безопасные соксы. Либо, как вариант, можно юзать Brutus на удаленной машине, соединившись с ней подручным терминальным клиентом.
Юниксоидам понравится творение хакерской команды THC (thc.org) под названием hydra (http://thc.org/download.php?t=r&f=hydra-4.1-src.tar.gz). Этот брутфорс по возможностям даже опережает brutus, поскольку умеет перебирать аккаунты на маршрутниках cisco и по различным протоколам (vnc, https, netbios и т.п.). Что касается простых служб типа ftp и pop3, то многопоточная hydra тоже легко справится с задачей. Требуется лишь задать несколько главных (вордлист, хост, порт и название сервиса) и второстепенных (число потоков, логфайл, останов при подборе первого пароля, перебор пары login:login) параметров, и hydra отправится в бесконечный цикл :). Ничто не мешает оставить этот длительный процесс в покое и лишь периодически проверять результат работы программы. А что еще остается, если другие методы не помогли?..
Бывает, что админ защитил свой Web-ресурс динамическими изображениями. В этом случае софтварные брутфорсеры отдыхают. Придется прибегнуть к интеллектуальному, или, попросту, ручному, перебору. Если ты знаешь логин к ресурсу, можно подобрать пароль, каждый раз вводя новый код на изображении.Для облегчения работы можно использовать различные тулзы для браузеров, которые обеспечат автозаполнение неизменных полей.
Случается так, что злоумышленнику не нужен шелл, а взлом ведется только для того, чтобы стереть машину с лица интернета. Такие атаки часто выполняются по заказу. DDoS относится к самым злосчастным атакам, за проведение которой могут оторвать конечности. Все из-за того, что весь перегнанный мусор оплачивает владелец сервера. А ему этого ой как не хочется делать :).
У серьезных проектов существует своя служба безопасности (или abuse). Ее задача – распознавать атаки и сообщать владельцам сетей об их факте. В связи с этим, никто никогда не занимаются DDoS, используя сервера в сети своего провайдера. Чаще всего подобные злодеяния совершаются из консоли забугорных машин. Такие системы «заражены» специальными ботами, которые умеют обмениваться данными между собой. Скажем, захотел хакер убрать whitehouse.gov. Для этого он соединяется с зарутанным китайским сервером, командует в консоли «./ddos whitehouse.gov» и идет пить пиво. После запуска программа ./ddos заглядывает в свой конфиг, находит там пару сотен таких же «затроянненых» систем и шлет всем команду. В ней, как ты уже догадался, содержится принуждение убить сайт whitehouse.gov. Конечно, программа ./ddos – чистая абстракция, но принцип работы зомби-серверов именно такой.
Помимо программ существуют злые IRC-боты и целые ботнеты, созданные для того, чтобы останавливать работу серверов любой мощности. Если ботовод заставит на определенном канале флудить какую-нибудь жертву, все боты разом начнут слать сетевые пакеты на различные сервисы, в результате чего сервер просто не справится с их обработкой. Для справки, число таких ботов может колебаться от пары сотен до нескольких десятков тысяч на одном канале. За более подробной информацией по DoS-атакам, обращайся к тематической статье в этом номере.
В случае успешно проведенной удаленной атаки, взломщик получит какие-нибудь системные привилегии. Именно этот исход можно считать удачным, поскольку за удаленной атакой всегда следует локальная. Настало время понижать добытые права до магического уида 0, перед которым преклонятся даже самые защищенные бинарники ;). Но получить рута очень сложно (особенно в защищенных системах), поэтому постоянно приходится включать соображаловку и быть впереди админа хотя бы на один шаг. Это очень непросто, но возможно.