Во-первых, о различии между выполнением команды на вашей оболочке , и выполнив его после вызова /bin/sh
(по существу, нет существенной разницы, но я уточню):
Когда вы открываете терминал на своем локальном компьютере, вы видите окно и подсказку. Окно представляет собой терминальную программу, а внутри нее есть уже оболочка работает. Из взаимодействия оболочки, которое вы вставили в свой вопрос, похоже, что ваша оболочка по умолчанию - /bin/bash
.
Упрощение, когда вы вводите команду в оболочку, она выполняет ее с использованием комбинации fork
и exec
. Итак, когда вы вводите /bin/sh
, ваша оболочка просто выполняет ее так же. то есть одна оболочка выполняет другую оболочку. Внутри этой оболочки вы выполняете больше команд. Ничего особенного. Это еще один экземпляр оболочки, делающий то же самое, что делал предыдущий экземпляр.
Оболочка не особенно особенна для вас, когда вы уже вошли в компьютер и сидели на ней, печатаясь. В конце концов, это еще одна программа.Но это программа, которая может удобно выполнять другие программы. Вот почему вы его используете. Но это свойство делает его интересным для взломщиков, потому что они хотят удобно выполнять программы на других компьютерах. Но мы придем к этому немного. Просто запомните это: Оболочка - это программа, которая может удобно выполнять другие программы.
Теперь на почему крекеры заинтересованы в получении оболочек:
Оболочка не единственная программа, которая может позвонить exec
(начать выполнение другой программы). Любая программа может это сделать. Разумеется, оболочка - самый удобный способ сделать это. К сожалению, для потенциального взломщика компьютеры не предлагают оболочку, если у них нет физического доступа к ней. Единственный интерфейс, который они имеют для компьютера, - это публичные службы, которыми управляет этот компьютер. например веб-сервер, обслуживающий страницы, действительно принимает входные данные от внешних компьютеров и производит вывод для них. В этом процессе веб-сервер считывает файлы на сервере, делает кучу других вещей и затем отправляет несколько байтов по проводу. Это не exec
ничего (или даже если это так, злоумышленник не может напрямую контролировать то, что он exec
s). то есть вы не знаете, что веб-сервер Google делает внутренне, когда вы видите их веб-страницу. Вы просто отправляете запрос и видите результат в своем браузере. Но если взломщик каким-то образом обманывает веб-сервер до exec
программы оболочки (скажем /bin/sh
или любого из ее родственников) и передает ввод в нее, то злоумышленник может запустить любую программу, которую они впоследствии захотят на этом сервере. И если этот публично открытый сервис работает как root
: еще лучше. Это то, что нападающий заинтересован в этом. Потому что это способ двигаться к удобному управлению системой.
Обратите внимание, что '/ bin/sh pwd' - это нечто совсем другое. –