Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Понякога по-нататък вграден файлове inkluda, понякога се разглежда като част от PHP инжектиране (инжектиране на код) на. Последното не е съвсем вярно, тъй като въвеждането на уязвимостта на файловете не е непременно свързано с изпълнението на кода.

Уязвимост могат да възникнат по време на използване (в PHP) изрази като:

Всеки от тях има малко нюанси, но те са по-чести, е, че те съдържат във файла с програма и да я изпълни. Проблемът с тези изрази може да причини в случай, в който се предава на входа на потребителя и програмата не е достатъчно на своите филтри.

Между другото, да, това е израз, а не на функцията. Neobzyatelno пиша това:

По-добре е, че такъв вариант:

Но това отклонение, което няма връзка с уязвимостта.

Ако файлът включва уязвимости направи изрази require_once, include_once, включват, изискват, можем да кажем, че в същото време държи код инжекция. Независимо от това, че е възможно да включва уязвимости файлове, без да изпълним код на сървъра. Например, появата на изменения в уебсайта на базата на избрана от потребителя тема. Името съответства на името на HTML файлове, които могат да бъдат прочетени на сървъра. В тази ситуация, ако се образува по искане, така че да извършва четене на файла, който не е предназначен за тази цел (например PHP файлове), вместо на изпълнение на команди, ще бъдат показани PHP код.

Потребителят може да определи като файлът за inkluda отдалечен или локален файл. Въз основа на съответните два изработени сортове:

  • локални файлове за изпълнение
  • въвеждане на отдалечени файлове

Опасността се крие в inkluda отдалечено изпълнение на произволен код на уязвима сървър. Обикновено тя се използва за инфектиране на задната врата.

Локален файл включва уязвимост не е по-малко опасен, отколкото въвеждането на изтрити файлове.

Експлоатация на локални файлове за изпълнение

Опитайте ръката си в тази уязвимост в дяволите Уязвим уеб приложения (DVWA). Аз използвам Web Security доджо. където вече е инсталиран DVWA.

Да започнем с това ниско ниво (ниско) сигурност (конфигурируеми DVWA сигурност).

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Има три връзки с нас, за да отидете:

Ако стойността, която е подобна на името на файла (file1.php, file2.php) се предава като аргумент на променлива, може да се предположи, че се използва включват уязвимост. Тъй като разширение .php файл. е вероятно, че файлът се изпълнява на сървъра (това е възможно да се извърши изпълнението на кода), а не само да подаде на дисплея.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Да, местните включват уязвимост уязвимост е налице. Когато влезете в нефилтриран достъп главната директория (../), списък на файловете за inkluda не е изчерпателен (вместо предложената файл * .php избрахме about.php).

Често, като пример за работа на локалния файл inkluda искал да дам нещо като това:

Както можете да видите, че работи. Но тъй като уеб браузъри пренебрегват / R / N (нов ред), ние трябва да отвори изходния код на записването започва да чете:

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

За съжаление, няма никакви пароли във файла / и т.н. / ако съществува отдавна отмина.

На сървъра, можете да дръпнете различни конфигурационни файлове, на SSL сертификати, по принцип, всеки файл, който е отворен за четене на всички потребители или на когото четене от уеб сървъра достатъчно права:

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Що се отнася до общото хостинг, понякога успявам да гледам в грешната папка (отново, ако не е конфигуриран за правата на потребителите).

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Задачата се усложнява от факта, че ние трябва да знаем пътя до файла.

Работна файловете отдалечени изпълнение

PHP е много гъвкав и за език за програмиране на разработчиците лесен за употреба. Екипът изпълнение (inkluda) файлове и някои други добре разпознават и praviln6o третира не само локални файлове, но адреса ...

Вижте как интересно се оказва:

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Разбира се, тази уязвимост не е интересен за нас, за да можем в един сайт може да видите други сайтове.

Ние можем да запазим задната врата на засегнатото място. следния алгоритъм:

  1. Генериране / намираме на изходния код на задната врата
  2. Създаване на правото от гледна точка на PHP файл, за да се изпълни на сървъра, която запазва оригиналната задна врата код в PHP файл
  3. Запазете кода в текстов файл
  4. Заредете текстовия файл към сървър, контролирана от
  5. На уязвима сървър чрез дистанционно inkluda файлове поддържат нашата вратичка

Подчертах думата "текст" поради причината, че на сървъра-контролирани, трябва да бъде само в текстов файл, който не трябва да се изпълнява на нашия сървър. Сървърът ни трябва само да се покаже съдържанието му.

За създаване на задната врата може да използвате Weevely. PhpSploit. можем да вземем готови решения. Нека в този момент подготвени.

Аз подходящи променлива $ вратичка троянски изходен код, който е изтеглен от githaba. След това използвайте функцията file_put_contents да спаси получения код c99unlimited.php файла.

Кодът, че съм публикувал в текстов файл

Сега, с помощта на дистанционното управление включва уязвимост, ние се зареди на задната врата на засегнатия сървър.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Обърнете внимание на надписа се направи. той произхожда скрипт, т.е. Вероятно всичко това се случи.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Добре, сега имаме всички функции, които могат да изискват само на уеб сървъра администратор ... и тези, които имат достъп до сървъра си.

Байпас филтриране на местните inkluda файлове

Нека да преминем към средно ниво (средно) сигурност (конфигурируеми DVWA сигурност).

Ако се вгледаме в изходния код (Виж бутон Source):

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

сега виждаме, че героите ../ филтрира. Той няма да ни пусне в директорията над този, който наема на уязвими сценария.

Т.е. вече не работи:

Нека да видим как филтрирането в този случай? Да предположим, че филтрира дума "лош", а след това на ред, като

добър лош добър

след филтриране ще бъде:

И ако поставите следния ред

след филтриране ( "лошия" ще бъдат премахнати) ще

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Друг вариант може да бъде да се заобиколят кодиране символи в шестнадесетичен кодиране, пример за ред:

"../" може да бъде заменен от «% 2E% 2E% 2е» а.

Също така се практикува двойно кодиране в шестнадесетичен кодиране, в която "../" се заменя с «% 252Д% 252Д% 252Е»

Локален файл включва уязвимост чрез добавяне на разширения към сценария

Ако файлът със код inkluda изглежда така:

Т.е. за всеки потребител вход се добавя .php разширение, или някой друг, а след това не е възможно да се образува разследване, за да се направи атаката.

Има няколко техники, които са предназначени за филтриране на разширяването, но те могат да се считат остарели, тъй като те работят по PHP 5.3, а дори и тогава не всички версии. Въпреки това, администраторите на уеб сървъри клинично консервативни и предпочитат да не пипа нищо, ако тя работи. Т.е. възможност да се срещнат на сървъра с версия на PHP е един много стар, и тези техники трябва да са наясно.

Използване на 00% нулев байт (нула байт)

В края на заявката да се игнорира разширението добавя нулев байт:

Вторият метод се нарича пътя на атака рязане. Долната линия е, че PHP съкратите дължина на пътя от 4096 байта. В този случай, PHP отваря файл правилно, дори и ако в края на името си, има черти и точки. Ако параметрите се предават на нещо подобно? PARAM1 = .. / .. / .. / .. / и т.н. / ако съществува /./././././<…> (Където ./ се повтаря хиляди пъти), в края на файла с разширение (което добавя скрипт, в резултат на което името на файла се превърна включва /../../../../ и т.н. / ако съществува /././. /././<…>.PHP), ще бъдат отхвърлени. И тъй като волята на името на файла включва /../../../../ и т.н. / ако съществува /./././././<…>. И тъй като PHP не е объркан и наклонени черти ./ в края на файла, той просто ги игнорира, а след това общо PHP отваря файл по пътя включва /../../../../ и т.н. / ако съществува.

Байпас филтруване на отдалечено вградени файлове

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

И също така имайте предвид, че не се филтрира, като FTP. т.е. такъв вариант би работил дори без никакви трикове:

Първи код PHP скриптове, когато inkluda файлове с PHP: // филтър

За този трик не изисква отдалечен файл включва уязвимост. Тя ще използва някакъв вид мета-обвивка PHP: // филтър.

Да предположим, че искаме да видим изходния код file1.php файл, а след това за нашата ситуация, искането ще бъде направено по следния начин:

Обърнете внимание на безсмисленото линия от букви и цифри - това е изходния код file1.php файл с кодиране Base64 на. Тъй като е base64, а след това се поддържа и бинарни файлове.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Отдалечено изпълнение на код с PHP: // вход

Това не е като въвеждането на файлове и това отново не се изисква да се качват файлове.

За да ви помогне, аз използвате разширената FireFox HackBar. можете да го, или всяка друга програма (например, къдри), който е в състояние да предава данни по пощата използвате.

PHP: // вход има достъп до сурови заявка HTTP организма да се разбере, че включва ( "PHP: // вход") прави, отидете на

Искане за изпращане на правилния PHP код за тялото (например, използването на метода POST). Това ще ви позволи да изпълнява всяка допустима на функцията за отдалечен сървър!

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Отдалечено изпълнение на код данни: //

В допълнение, PHP поддържа данни URL-схема: // Можете да поставите кода директно в параметъра GET! Следващият тест не изисква никакви специални инструменти, просто нормален браузър, за да извършите атака.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Някои защитни стени уеб приложения може да забележат подозрителни низ в URL, и блокират злонамерен поискване. Но има начин да шифрова низ от най-малко base64 кодиране:

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Изпълнете произволни команди с / ргос / самостоятелно / околната

/ Proc / самостоятелно / екологично - хранилище на величини на процеса. Ако Apache процес достатъчно права за достъп до него, а след това, когато отворите уеб страницата, на която присъства включват уязвимост с подобно на URL адреса,

донесе нещо подобно

Обърнете внимание на HTTP_USER_AGENT. Вместо това, е възможно да се замести правилната PHP код, за да бъде изпълнено на отдалечен сървър.

Местните и отдалечени файл изпълнение уязвимост операция и байпас филтри

Ецване и прилагането на регистрационните файлове на местно inkluda

За съжаление, най-новите версии на Apache, този метод вече не работи.

Същността му се състои в това, че кодът на нападателя, вграден в регистрационните файлове на уеб сървъра. Това може да стане чрез изигравам User-Agent. или дори само за превод, за да параметри.

На следващо място, трябва да се направи в лог файл включва уязвимост.

Статично изпълнение на отдалечен файл

Пример статичен inkluda:

Подвиг статиката включват уязвимост може да бъде много екзотични ситуации. За въвеждането на зловреден код е необходимо да се извърши нападение в средна човек между двата сървъра, един от които е домакин на уеб приложение, което използва уязвимост включват, а вторият файла на хоста, който се използва, за да inkluda.

заключение

За повечето от примерите, показани тук, са необходими определени условия, които са намалени до конфигурацията на грешен сървър. Т.е. с други думи, не всички методи, показани тук, ще работят на повечето уеб сървъри.

Свързани статии: