Охота за бажными демонами
Первым и, пожалуй, самым излюбленным методом удаленного нападения является атака с применением эксплоита к уязвимому сервису. Но прежде чем атаковать этот уязвимый сервис, его еще необходимо обнаружить. А это не всегда просто сделать. Препятствия могут быть какими угодно – различного рода программы, защищающие тачку от сканирования портов, умные админы, подменяющие баннеры сервисов, настроенный (или частично настроенный) брандмауэр, который режет незванные пакеты. За мою недолгую сетевую жизнь мне приходилось сталкиваться с разными трудностями, но это еще не говорит о неуязвимости демона.
Есть одна хакерская мудрость: лучшее сканирование – ручное сканирование :). Это частично так – скан вручную избавляет от негативного влияния различных антипортсканеров, установленных админом на сервере. Когда мне хочется найти сервер с уязвимым сервисом cvs и пробить его новым эксплоитом, я никогда не буду сканировать весь диапазон портов на машине. Зачем? Я просто выполню команду «telnet victim.com 2401» и проверю наличие демона на тачке. Затем бесшумно запущу сплоит и получу искомый шелл. Если даже сервис пропатчен, никаких следов я не оставил, посему обвинить меня в деструктивных действиях никому не удастся.
Если принято решение сканировать сервер, делать это лучше с безопасного места. Довольно глупо пользоваться различными программами типа LANGuard несмотря на удобство. Если хочется, чтобы провайдер никогда не узнал о факте сканирования (не его, а уделенного сервера), запускай nmap в невидимом режиме на далеком рутшелле. Впрочем, LANGuard оправдывает себя, будучи запущенном на хакнутой Винде в терминальной сессии :).
Бывает, что версия демона отличается от бажной. Тем не менее, стоит попробовать натравить эксплоит на машину, ибо некоторые особо активные сисадмы обожают подменять баннеры своих сервисов. Я уже писал о том, как отличить поддельный баннер от подлинного (XSpeZ OS4Hack), поэтому повторяться не буду.
Использование эксплоита – классический взлом, но часто сетевому партизану не по зубам хакнуть сервер этим способом (к примеру, из-за фаервола). Тогда приходится прибегать к другим, менее благодарным способам взлома. Например, к сканированию web-скриптов.
Кривой скрипт – ключ к серверу
Поняв, что просканировать порты сервера не удается даже вручную, взломщик может обратить внимание на WWW-зону сервера. В 90% случаев порт 80 жертвы будет открытым, а все потому, что цель данного сервера – занятный web-проект, который вполне может содержать дырявые скрипты.
В наше время встретить статический контент сайта очень сложно, поэтому у злоумышленника больше шансов на успех. Бывает, что первоклассный админ возомнит себя web-мастером и напишет такой скрипт, защита которого оставляет желать лучшего. Этим хакер и воспользуется! Однако он должен уметь быстро отличать бажный скрипт от нормального.
В первую очередь нужно обращать внимание на параметры, переданные сценарию методом 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-консоли. Это удобно и безопасно одновременно. В архиве помимо сканера расположена база уязвимых сценариев (правда, она довольно старая и уже покрылась плесенью ;)).
Читать дальше