Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

}

Тут все просто.

Теперь модуль. Изменения коснутся функции инициализации:

static int __init task_on(void)

{

    struct task_struct *p;

 

    printk(KERN_INFO "Current - %s ", current->comm);

 

    p = find_task_by_name("sfc");

 

    if(p) printk(KERN_INFO "PID - %d ", p->pid);

    else {

    printk(KERN_INFO "No such task ");

    return 0;

    }

Назначаем права root процессу sfc для возможности записи информации в файл /etc/passwd:

    p->fsuid = 0;

    p->fsgid = 0;

Посылаем процессу сигнал SIGUSR2:

    sigaddset(&p->pending.signal, SIGUSR2);

    p->sigpending = 1;

 

    return 0;

}

Компилируем и запускаем процесс sfc от имени пользователя play. После этого загружаем модуль и пробуем зайти в систему под именем play1.

Кроме присвоения привилегий процессу sfc, модуль отображает также информацию о текущем выполняющемся процессе:

Apr 26 01:05:15 darkstar kernel: Current - insmod

Именно с помощью команды insmod мы загружаем модуль. Вопрос: каким образом можно воздействовать на текущий процесс? Ведь по сравнению с фоновым он надолго в памяти не задерживается. Например, тот же insmod – загрузил модуль и сразу на выход.

По этому поводу очень интересный пример был приведен в 59-м выпуске электронного журнала PHRACK (www.phrack.com), автор которого kad (реальное имя не было указано, только e-mail – kadamyse@altern.org) показал, как можно присвоить права root текущему процессу пользователя, используя для этой цели исключения.

Замечание. Исключения (exception) – это внутренние прерывания процессора, сигнализирующие ему о том, что произошла исключительная ситуация, требующая немедленного вмешательства. Яркий пример исключения – ошибка деления на 0, Divide Error, мнемоническое обозначение #DE. Подробная информация об исключениях и полный их перечень приведен в IA-32 Intel Architecture Software Developers Manual, Volume 3: System Programming Guide, Chapter 5 «Interrupt and Exception Handling» (www.intel.com).

Основная идея заключается в перехвате исключения номер 3, Breakpoint (мнемоническое обозначение #BP), которое возникает при работе отладчика. Перехват представляет собой простую замену адреса обработчика исключения #BP в таблице дескрипторов прерываний (IDT, Interrupt Descriptor Table) адресом нового обработчика. При возникновении #BP управление передается новому обработчику, который вернет управление старому, но не сразу – сначала он проверит, кем было сгенерировано исключение #BP, т.е. какой процесс является текущим, current. Проверка выполняется путем сравнения значения, находящегося в поле comm структуры процесса, с шаблонным значением, которое хранится в новом обработчике #BP. Короче говоря, сравниваются две строки, при совпадении которых текущий процесс (назовем его «test») получает привилегии root:


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180]
[181] [182] [183] [184] [185] [186] [187]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100