Что такое включение файлов и выполнение произвольного кода? - Злоупотребление

Опубликовано: 2023-04-13

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

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

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

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

Но что такое файл PHP? Подумайте о кухонном шкафу. Внутри шкафа есть ряд предметов, таких как сахар, соль, специи, посуда и т. Д. Каждый из этих предметов предназначен для использования на кухне.Файл PHP — это кабинет, а коды внутри файлов — это элементы, которые позволяют выполнять определенные функции, необходимые хакеру.Это причина, по которой хакеры предпочитают загружать файл PHP любым другим файлам, например, файлам JPEG или PDF. Файлы JPEG и PDF не являются исполняемыми, т.е. хакеры не могут использовать эти файлы для выполнения каких-либо функций. Их можно только читать (т.е. просматривать). Их нельзя использовать для внесения каких-либо изменений на взломанный сайт.

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

Что такое атака с включением файлов?

Лучший способ понять сложную атаку на веб-сайт, подобную этой, — это привести пример реального сценария. Допустим, вы ведете веб-сайт своего учебного заведения, и этот сайт называется College.com. Вы разрешаете нескольким студентам доступ к сайту, чтобы они могли публиковать фотографии, сделанные во время недавнего мероприятия в колледже. Кто-то злоупотребляет предоставленным вами доступом и загружает на веб-сайт вредоносный файл PHP (с именем hack.php). Цель состоит в том, чтобы получить контроль над сайтами колледжей. Когда учащийся загружает вредоносный PHP-файл, по умолчанию он сохраняется в папке «Загрузить».Любой, кто знаком с базовой структурой WordPress,знает, куда идет загруженный файл.

Включение файлов и выполнение произвольного кода
Любая загрузка, не являющаяся темой или плагином, сохраняется в папке «Загрузка». Любой, кто знаком со структурой WordPress, знает, где находится папка Upload. Для тех, кто не знает, вот где находится папка Upload. Откройте файловый менеджер из cPanel веб-хостинга, затем перейдите в раздел Public_html > wp-content > загрузки.

Файл действует как дверь, позволяющая хакеру удаленно взаимодействовать с файлом. Обратите внимание, что хакер по-прежнему не имеет контроля над сайтом, у него просто есть окно для связи. Чтобы было легче понять, представьте, что человек А хочет поехать в страну, куда ему нельзя. Итак, он посылает агента, человека Б. Человек А — хакер, страна — веб-сайт колледжа, а человек Б — файл hack.php.

Файлы PHP, загруженные на веб-сайт колледжа —-> Файл хранится на сервере веб-сайта

Человек Б обучен только нескольким вещам и может сделать очень мало. Итак, человек А должен проинструктировать его, что делать дальше. Точно так же файл PHP создает окно связи, а затем ожидает дополнительных команд от хакера.

Предположим, что hack.php создан таким образом, что позволяет загружать больше файлов на веб-сайт. Хакер создает файл (с именем control.php), который он загружает, используя hack.php, который уже присутствует на сервере веб-сайта. Новый файл – control.php позволит хакеру получить полный доступ к сайту. Он использует окно, предоставляемое файлом hack.php, для загрузки файла control.php на сайт.Этот процесс загрузки файла control.php с использованием файла (hack.php), который уже присутствует на сервере веб-сайта, называется включением локального файла .

Отличным примером локального выполнения файлов является уязвимость, наблюдаемая в плагине Easy Forms для MailChimp WordPress (v 6.0.5.5) . Используя плагин MailChimp, владельцы веб-сайтов могут добавлять различные типы форм на свой сайт WordPress. Уязвимость позволяла хакерам загрузить файл PHP на сервер веб-сайта с помощью формы MailChimp.После того, как файл был сохранен на сервере веб-сайта, хакеры смогли связаться с ними и выполнить коды, которые позволят им контролировать сервер или повредить сайт различными способами.

Вот сценарий: на веб-сайте колледжа установлен брандмауэр, поэтому хакер не может загрузить файл control.php. Хотя он не может загрузить другой отдельный файл, он может «включить» файл. Это означает, что он может вставить файл в файл hack.php, который уже присутствует на сервере веб-сайта колледжа. Если хакер сможет загрузить файл control.php, сервер веб-сайта прочитает файл и выполнит код внутри, что позволит хакеру делать все, что он хочет. Но поскольку он не может загрузить файл, ему придется найти другие способы заставить сервер прочитать файл control.php. Путь, созданный хакером, доступен в Интернете, и сервер веб-сайта колледжа должен иметь возможность его прочитать. Поэтому хакер создает путь и делает его доступным в Интернете, чтобы сервер веб-сайта колледжа мог его прочитать. Затем сервер начинает выполнять код, полученный из пути, и, поскольку код написан таким образом, что позволяет хакеру полностью контролировать сайт, хак теперь контролирует веб-сайт колледжа. Этот процесс, заставляющий сервер читать удаленный файл, называется удаленным включением файлов.

Включение файлов и выполнение произвольного кода
Пример, демонстрирующий, как происходила атака TimThumb

Случай с уязвимостью TimThumb — популярный пример удаленного включения файлов. TimThumb был плагином WordPress, который позволял легко редактировать изображения на сайте WordPress. Это позволило любому использовать изображения, полученные с сайтов обмена изображениями, таких как imgur.com и flickr.com. TimThumb распознает imgur как действительный сайт (или внесенный в белый список). Хакеры, воспользовавшись этим критерием, создают файлы с URL-адресами, в которых упоминается действительный сайт, например http://www.imgur.com.badsite.com.Когда они загружают вредоносный файл с URL-адресом, подобным тому, который мы упоминали выше, плагин обманывается, полагая, что файл получен с действительного веб-сайта.И позволяет загрузить вредоносный файл на сервер сайта. Весь этот процесс включения вредоносного файла из-за пределов сервера веб-сайта с использованием уязвимости в плагине называется удаленным включением файлов. После того, как вредоносный файл PHP будет сохранен на сервере веб-сайта, хакеры смогут взаимодействовать с ним для выполнения желаемых действий.

Что такое атака с выполнением произвольного кода?

Теперь, когда мы знаем, что такое удаленное и локальное включение файлов, давайте продолжим и попытаемся понять, что такое выполнение произвольного кода. Включение файлов и включение произвольного кода взаимосвязаны друг с другом. В любом случае включения файлов целью хакеров является выполнение произвольного кода на веб-сайте. Вернемся к примеру с локальным включением файлов, когда хакер загрузил hack.php на веб-сайт колледжа, а затем загрузил control.php с помощью hack.php.Фраза «Выполнение произвольного кода» — это описание способности хакера выполнить любую команду по своему выбору на взломанном веб-сайте.Как только файлы PHP (hack.php и control.php) находятся на сервере веб-сайта, хакер может выполнить любой код, который он пожелает. Этот процесс выполнения любого кода из загруженных им файлов называется выполнением произвольного кода.
Взломы сложные. В этом посте мы попытались объяснить это как можно проще, но если какая-то часть не имеет для вас смысла, мы призываем наших читателей написать нам . В следующем посте мы обсудим еще одну распространенную хакерскую атаку на сайт WordPress под названием «Межсайтовый скриптинг» (XSS). Взглянем.