Взломать сервер непросто, так много способов сделать это, но сейчас мы собираемся загрузить шелл, загрузив обратный бэкдор на веб-сервер.
Есть так много способов и сайтов, которые позволяют загружать изображения аватаров и позволяют редактировать профиль.
Давайте начнем!
Для этого урока я буду использовать DVWA для загрузки простого шелла и с расширением .php с низкой степенью защиты в DVWA.
Таким образом, поскольку вы можете увидеть скриншот выше, я смог загрузить оболочку на веб-сервере с помощью простого расширения .php (backdoor.php), которое иногда не работало для некоторых сайтов, потому что они ограничивали типы файлов.
Давайте попробуем изменить низкую безопасность в среде DVWA.
Теперь, если я снова загружу оболочку со средней степенью безопасности, я получаю эту ошибку .. (Your image was not uploaded. We can only accept JPEG or PNG images.)
Теперь, как вы можете видеть, я пытаюсь загрузить backdoor.php, но не удалось, потому что веб-приложение принимает только загрузку файла image / jpg.
Не беспокойтесь, мы можем перехватить данные POST с помощью некоторых инструментов, чтобы обойти это и получить доступ к нашему backdoor в расширении PHP.
Так что стреляйте в burpsuit.
Сравните низкий уровень безопасности и Средний уровень безопасности
Низкий уровень
<?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // Can we move the file to the upload folder? if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) { // No echo '<pre>Your image was not uploaded.</pre>'; } else { // Yes! echo "<pre>{$target_path} succesfully uploaded!</pre>"; } } ?>
Средний уровень
<?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // File information $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ]; $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ]; $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ]; // Is it an image? if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) && ( $uploaded_size < 100000 ) ) { // Can we move the file to the upload folder? if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) { // No echo '<pre>Your image was not uploaded.</pre>'; } else { // Yes! echo "<pre>{$target_path} succesfully uploaded!</pre>"; } } else { // Invalid file echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>'; } } ?>
Теперь попробуем перехватить HTTP метод Post и изменить его:
// Is it an image? if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) && ( $uploaded_size < 100000 ) )
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.