Привет, эксплуататоры.

Добро пожаловать обратно на мой канал. Сегодня я напишу в блоге об эксплуатации через вызов CTF.

Если вы готовы, давайте начнем использовать этот сервер.

Фаза перечисления

Всегда полезно начинать со сканирования IP.

Как видите, у нас открыто 2 порта:

  1. порт 22: ssh

2. порт 3000: PPP

Мы собираемся исследовать, что такое услуга «PPP».

Нас перенаправили на сообщение. Кажется, у нас есть учетная запись GitHub, которая сообщает нам, что исходный код был сохранен в этом репозитории. Вопрос должен быть «требуется ли Gobuster сканировать подкаталоги»?

Я собираюсь просканировать этот IP с помощью Gobuster. К сожалению, мне не удалось получить каталоги из-за ошибки «невозможно подключиться».

Там написано «Добро пожаловать в JPChat», поэтому я решил посмотреть с этим именем.

Вола, мы нашли исходный код! Теперь давайте посмотрим на исходный код.

Модуль ОС в python предоставляет функции для взаимодействия с операционной системой. ОС входит в стандартные служебные модули Python. Этот модуль предоставляет портативный способ использования функций, зависящих от операционной системы.

os.system() метод выполняет команду (строку) в подоболочке. Этот метод реализуется путем вызова стандартной функции C system() и имеет те же ограничения. Если команда создает какой-либо вывод, он отправляется в стандартный поток вывода интерпретатора. Всякий раз, когда используется этот метод, открывается соответствующая оболочка операционной системы, и в ней выполняется команда.

Как видите, команда «bash -c», давайте выясним, что она означает.

команда bash, например:

  1. мкдир
  2. ls
  3. pwd

и более. Кроме того, это будет отражено в «/opt/jpchat/logs/report.txt» с параметром «%s», таким образом, наше имя.

Если вы наберете «[СООБЩЕНИЕ]», вам будет предложено ваше сообщение.

Можем ли мы манипулировать этим исходным кодом с помощью команды os system?

Я собираюсь попробовать команду «[REPORT]».

Чтобы подключиться к этому порту, можем ли мы использовать обратную оболочку для подключения? или мы можем предоставить технику ввода команд для управления сервером?

Я собираюсь попробовать «командную инъекцию»

Как видите, у нас есть «внедрение команд».

Из этого уязвимого кода мы можем использовать технику «внедрения команд».

Вы можете использовать некоторые полезные нагрузки для обхода сервера UNIX.

2.

Я использовал «id;ls;» чтобы просмотреть текущие файлы.

Этап эксплуатации

Можем ли мы стать пользователем root?

Мы получаем флаг user.txt, и мы закончили этот этап.

Я собираюсь создать каталог SSH, где я буду хранить свой ключ к этому каталогу. С этим ключом я смогу установить удаленное соединение.

Чтобы создать ключ SSH, вы можете сделать следующее:

Для этого мы можем использовать специальную утилиту под названием ssh-keygen, которая входит в стандартный набор инструментов OpenSSH. По умолчанию будет создана пара ключей RSA длиной 3072 бита.

  1. команда «ssh-keygen»

Обычно на этом этапе лучше придерживаться местоположения по умолчанию. Это позволит вашему SSH-клиенту автоматически находить ваши SSH-ключи при попытке аутентификации. Если вы хотите выбрать нестандартный путь, введите его сейчас, в противном случае нажмите клавишу ВВОД, чтобы принять путь по умолчанию.

2. выберите расположение файла

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

Вопрос в том:

Нужно ли нам хранить наш открытый ключ в «authorized_keys» в SSH?

Ответ: да

Потому что:

Файл author_keys в SSH указывает ключи SSH, которые можно использовать для входа в учетную запись пользователя, для которой настроен файл. Это очень важный файл конфигурации, так как он настраивает постоянный доступ с использованием ключей SSH и требует надлежащего управления.

Чтобы установить соединение, вы должны скопировать id_rsa на свой сервер.

Не забудьте команду «chmod 600 id_rsa» из-за разрешения.

Теперь у нас есть стабильная оболочка.

Корневая оболочка

Потрясающий! «Пользователь wes может запускать следующие команды на ubuntu-xenial»

Можем ли мы манипулировать этим сервером, чтобы стать пользователем root?

Я собираюсь проверить этот файл «test_module.py».

Хм, можно ли взломать библиотеку?

Что такое ПИТОНПУТ?

Его роль аналогична PATH. Эта переменная сообщает интерпретатору Python, где найти файлы модулей, импортированные в программу. Он должен включать каталог исходной библиотеки Python и каталоги, содержащие исходный код Python. PYTHONPATH иногда задается установщиком Python.

Очень опасно использовать «звездочки», когда вы хотите вызвать модуль!

  1. Перейдите в каталог «/tmp»
  2. и создайте файл с именем «compare.py»
  3. Не забудьте изменить разрешение «chmod +x compare.py»

Совершенно очевидно, что я закодировал:

Когда вы запускаете этот файл под обычным пользователем, вы не сможете получить корневую оболочку. Как я упоминал ранее, вам нужно экспортировать все модули Python в «/tmp», потому что модуль импорта должен быть распознан.

Помнить! «(корень) SETENV: NOPASSWD: «/usr/bin/python3 /opt/development/test_module.py»

Это означает, что мы можем захватывать модули импорта и запускать их с разрешением sudo без пароля!

Мы создали «compare.py», когда запустим «test_module.py», будет видно, как сравнивать модули из моего файла.

Это круто! потому что мы должны получить корневую оболочку

Давайте попробуем!

Потрясающий! как и ожидалось!

Вы также можете прочитать: https://medium.com/analytics-vidhya/python-library-hijacking-on-linux-with-examples-a31e6a9860c8

https://www.hackingarticles.in/linux-privacy-escalation-python-library-hijacking/

Краткое содержание

Спасибо, что читаете этот блог. Надеюсь, вам понравилось и вы многому научились.

Этот вызов был удобен для новичков, а также я изучил новую технику!

Вы можете следить за мной на:

Инстаграм: https://instagram.com/0xcd4_

Linkedin: https://www.linkedin.com/in/ahmetgoker/

Твиттер: https://twitter.com/TurkishHoodie_

Гитхаб: https://github.com/0xCD4

Пожалуйста, следите и подписывайтесь на более удивительные предстоящие блоги.

Ахмет | Математик