Привет, ребята, меня зовут Омар Нассер.
В статье мы поговорим о проблемах с исходным кодом на языке: PHP..
- Практикуйте свои навыки и найдите ошибку!
اختبر قدراتك وطلع ثغره ؟! - Что за ошибка?
ما هي ثغره؟! - почему возникает ошибка?
لماذا تحدث الثغره؟؟! - Как предотвратить эти типы ошибок?
وزاي نقدر نقفلها؟!
Вы можете скачать лабораторную работу с практиками
Ссылка: https://github.com/sisi0x/source_code_challenges/tree/main/Web-Application/PHP/Challenge-2
Вот решение.. не ищите решение перед практикой..
- ХСС
- Инъекция команд
- Rce
Я проанализирую код..
- Давайте проанализируем код построчно. В строке 5 мы получаем ввод от пользователя. В строке 7 мы сделали простую проверку и напечатали значение, полученное от пользователя. Ошибка здесь в том, что нет фильтрации, что может привести к XSS-уязвимости типа Reflect. Мы можем использовать это с чем-то вроде:
<img src=s onerror=alert("Sisi0x")>
В этой полезной нагрузке мы использовали img, потому что мы хотим отобразить изображение, а src — это источник изображения. Мы использовали букву s здесь, чтобы вызвать ошибку. Затем мы использовали обработчик событий, который представляет собой функцию JavaScript, которую можно исследовать дальше. Наконец, мы использовали alert для отображения слова sisi0x.
2. В строке 9 мы использовали функцию eval, которая может привести к внедрению команды, и злоумышленник может установить любой код с помощью php. Это опасная уязвимость, и она может привести к удаленному выполнению кода (RCE), что означает, что злоумышленник может выполнять команды на сервере. Мы можем использовать это с чем-то вроде:
".Sisi0x".system("ls -lah")
Позвольте мне объяснить эту полезную нагрузку. Мы можем использовать любое имя вместо sisi0x. Затем мы используем двойные кавычки и оператор конкатенации. подключить все. Мы используем системную функцию, за которой следует команда, которую мы хотим выполнить. В этом случае мы использовали ls -lah для отображения файлов и папок в каталоге, их разрешений и пользователя, который их добавил. Чтобы смягчить эту уязвимость, мы можем перейти в /etc/php.ini и добавить следующую строку в раздел disable_function:
5-disable_function=exec, passthru, shell_exec, sysem, porc_open,curl_multi
Однако я не завершил устранение, потому что произошла ошибка, и электричество отключилось на три часа. Спасибо, Египет :)
Можете сами попробовать, а я поработаю и выложу файл со смягчением
В качестве альтернативы мы можем создать массив и поместить в него имена функций. Затем мы можем использовать условие, чтобы проверить, вызывается ли функция in_array, и если это так, мы можем использовать die, чтобы остановить выполнение скрипта.
Мы также можем отключить две функции следующим образом:
$chack=htmlentities($_Get[имя]);
$str = echo \ Привет ..$chack.;
оценка($str);
Идея, стоящая за всем этим, заключается в том, что инженеры всегда говорят, что если вы обнаружите уязвимость, подобную XSS, не спешите исправлять ее немедленно, потому что вы можете найти с ней что-то еще.
Надеюсь, я правильно передал идею, и я загружу код на GitHub, чтобы вы могли попробовать сами.