Привет, ребята, меня зовут Омар Нассер.

В статье мы поговорим о проблемах с исходным кодом на языке: PHP..

  1. Практикуйте свои навыки и найдите ошибку!
    اختبر قدراتك وطلع ثغره ؟!
  2. Что за ошибка?
    ما هي ثغره؟!
  3. почему возникает ошибка?
    لماذا تحدث الثغره؟؟!
  4. Как предотвратить эти типы ошибок?
    وزاي نقدر نقفلها؟!

Вы можете скачать лабораторную работу с практиками
Ссылка: https://github.com/sisi0x/source_code_challenges/tree/main/Web-Application/PHP/Challenge-2

Вот решение.. не ищите решение перед практикой..

  1. ХСС
  2. Инъекция команд
  3. Rce

Я проанализирую код..

  1. Давайте проанализируем код построчно. В строке 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, чтобы вы могли попробовать сами.