Helyi és távoli végrehajtását fájlművelet sebezhetőségét és bypass szűrők

Nevezik beágyazott fájlokat inkluda, néha részének tekinthető a PHP injekció (kód injekció). Az utóbbi nem teljesen igaz, mivel a bevezetése a biztonsági rés a fájlok nem feltétlenül jár együtt a végrehajtás a kódot.

Rése merülhetnek fel a használat során (PHP) kifejezések, mint például:

Mindegyiküknek van egy kis árnyalatok, de közös bennük az, hogy azok tartalmazzák a program fájlt és végrehajtja azt. A probléma ezek a kifejezések okozhat abban az esetben, amikor a felhasználó adja küld, és a program nem elég annak szűrőket.

By the way, igen, ez a kifejezés nem a funkciót. Neobzyatelno írni ezt:

Előnyösebb egy ilyen opció:

De ez a kitérő, amely nincs kapcsolatban a biztonsági rést.

Ha a fájl tartalmazza veszélyeztetettség tett kifejezések require_once, include_once, többek között, szükség, azt mondhatjuk, hogy ugyanabban az időben tartja a kódbeékelést. Mindazonáltal lehetséges, tartalmazza veszélyeztetettség fájlokat anélkül kódfuttatást a szerveren. Például a weboldal változások megjelenése a felhasználó által kiválasztott témát. A név megfelel a nevét HTML fájlokat lehet olvasni a szerveren. Ebben a helyzetben, ha a kérelmet úgy van kialakítva, hogy végezzen a fájl olvasása, amelyek célja nem erre a célra (például PHP-fájlokat), ahelyett, hogy parancsokat hajt végre, a PHP forráskód jelenik meg.

A felhasználó megadhatja a fájl inkluda helyi vagy távoli fájlt. Alapján a két érintett Crafted fajták:

  • helyi végrehajtási fájlokat
  • bevezetése távoli fájlokat

A veszély abban rejlik inkluda távoli tetszőleges kód futtatását egy támadható kiszolgáló. Általában arra használják, hogy megfertőzi hátsóajtó.

Helyi fájl tartalmazza veszélyeztetettség nem kevésbé veszélyes, mint a bevezetése törölt fájlokat.

Működés helyi végrehajtási fájlok

Próbálja meg a kezét a biztonsági rés Damn Veszélyeztetett Web Application (DVWA). ÉN használ Web Security Dojo. ahol DVWA már telepítve van.

Először is alacsony (low) biztonsági (konfigurálható DVWA Security).

Három linkeket, hogy menjünk:

Ha az érték, ami hasonló a fájl nevét (file1.php, file2.php) vezetjük érvként egy változó, akkor feltételezhető, hogy használjuk, többek között a biztonsági rést. Mivel a .php fájl kiterjesztését. valószínű, hogy a fájl lefut a szerveren (ez lehet végezni a végrehajtás a kódot), és nem csak a kimeneten megjeleníteni.

Igen, a helyi tartalmazza veszélyeztetettség biztonsági rés van jelen. Amikor belép szűrés nélküli hozzáférést a felső könyvtár (../), a fájlok listáját a inkluda nem kimerítő (ahelyett, hogy a javasolt file * .php választottuk about.php).

Gyakran előfordul, hogy példaként működését a helyi fájl inkluda szeretnék adni valamit, mint ez:

Mint látható, ez működött. De például a webböngészők figyelmen kívül hagyja a / r / n (újsor), meg kell nyitni a forráskódot, hogy a felvétel olvasni kezdett:

Sajnos nincsenek jelszavak az / etc / passwd már a múlté.

A szerver, akkor húzza a különböző konfigurációs fájlok, az SSL-tanúsítványok, elvileg bármely fájlt, amely nyitott az olvasás minden felhasználó számára, vagy aki olvas a webszerver megfelelő engedélye:

Ami az általános hosting, néha sikerül, hogy vizsgálja meg a megfelelő mappában (újra, ha nincs beállítva a felhasználói jogok).

A feladatot nehezíti az a tény, hogy tudnunk kell, hogy az a fájl elérési útját.

Munkavégzés a távoli végrehajtási fájlokat

PHP-ben nagyon rugalmas és felhasználóbarát fejlesztők programozási nyelv. végrehajtás csapat (inkluda) fájlok és más jól ismeri, és praviln6o kezelt nemcsak a helyi fájlokat, de az URL ...

Lásd milyen érdekes kiderül:

Természetesen ez a biztonsági rés nem érdekes számunkra, hogy mi az egyik oldalon lehet megtekinteni más oldalakon.

Tudjuk tartani a hátsó ajtót a sérült területre. A következő algoritmus:

  1. Létrehoz / találunk a forráskód a hátsóajtó
  2. Készítsen jobb szemszögéből végrehajtandó PHP fájl a szerveren, amely megőrzi az eredeti backdoor kódot egy PHP fájlt
  3. Mentse el a kódot egy szöveges fájl
  4. Töltse be a szöveges fájlt a szerveren által ellenőrzött
  5. A sérülékeny szerver segítségével távoli inkluda fájlok fenntartjuk backdoor

Kiemeltem a „szöveg” az oka, hogy a szerver által vezérelt, mi kell csak egy szöveges fájl, amely nem lehet végrehajtani a szerveren is. A szerver csak megmutatni a tartalmát.

Ahhoz, hogy hozzon létre egy backdoor használhatja Weevely. PhpSploit. vehetünk kész megoldást. Nézzük ezt az időt használják elő.

Azt megfelelő változót $ backdoor backdoor forráskódot, amely letölthető a githaba. Aztán használja a file_put_contents funkció, hogy mentse a kapott forráskódot c99unlimited.php fájlt.

A kód, amit írt egy szöveges fájl

Most, a távirányító tartalmazza veszélyeztetettség betöltjük egy hátsóajtó az érintett kiszolgálón.

Megjegyzés: a feliratot tenni. ez származik forgatókönyvet, azaz Valószínűleg minden történt.

Ok, most már minden tulajdonságával, hogy csak szükség a rendszergazda webszerver ... és azok, akik hozzáférhetnek a szerver.

Bypass szűrés helyi inkluda fájlok

Térjünk át a középső szintre (közepes) biztonsági (konfigurálható DVWA Security).

Ha megnézzük a forráskódot (View Source gomb):

látjuk most, hogy a karakterek ../ szűrjük. Ez nem menjünk a könyvtárba felett, amelyik alkalmazza veszélyeztetett script.

Ie már nem működik:

Lássuk, hogyan szűrés ebben az esetben? Tegyük fel, szűrjük szó „rossz”, akkor egy sort

jó rossz jó

szűrést követően a következő lesz:

És ha behelyezi a következő sort

szűrés után ( „rossz” lesz távolítva) fog

Egy másik lehetőség az lehet, hogy megkerülje kódolás karakter hexadecimális kódolással, egy példa a sort:

"../" helyettesíteni lehet a «% 2E% 2E% 2f».

Szintén gyakorolt ​​kettős kódolás hexadecimális kódolás, amelyben a „../” helyébe a «% 252E% 252E% 252F»

Helyi fájl tartalmazza veszélyeztetettség bővítmények hozzáadásával a forgatókönyvet

Ha a kód inkluda fájl így néz ki:

Ie bármely felhasználói adunk .php kiterjesztés, vagy valami más, akkor nem lehetséges, hogy egy vizsgálatot annak érdekében, hogy a támadást.

Számos technikát, amelyek célja, hogy kiszűrje a terjeszkedés, de lehet elavultnak tekinthető, mert aki a PHP 5.3, és még akkor nem minden változatban. Azonban a rendszergazdák webszerverek klinikailag konzervatív és inkább ne érjen semmit, ha működik. Ie egy esélyt, hogy megfeleljen a szerver egy nagyon régi változata PHP, és ezek a technikák tisztában kell lenniük.

Segítségével 00% nulla bájtot (null bájt)

Végén a lekérdezés hogy figyelmen kívül hagyja a kiterjesztés hozzáad egy null byte:

A második módszer az úgynevezett támadás vágási pálya. A lényeg az, hogy a PHP csonkítása az út hossza 4096 bájt. Ebben az esetben a PHP megnyit egy fájlt rendesen, akkor is, ha a végén a nevét, van vágást és pontok. Ha a paraméterek át valami hasonló? Param1 = .. / .. / .. / .. / etc / passwd /./././././<…> (Ha ./ megismételjük több ezerszer), a végén a fájl kiterjesztése (ami hozzá egy script, ami azt eredményezi, hogy a fájl neve vált tartalmazza /../../../../ etc / passwd /././. /././<…>.php) kell dobni. És mivel a fájl neve tartalmazza /../../../../ etc / passwd /./././././<…>. És mivel a PHP nem zavaros és hátulsó osztásjelet ./ végén a fájlt, egyszerűen kimarad őket, majd összesen PHP megnyit egy fájlt az utat tartalmaz /../../../../ etc / passwd.

Bypass szűréssel egy távoli beágyazott fájlokat

És azt is megjegyezni, hogy nem szűrik, például ftp. azaz Egy ilyen lehetőség működött volna nélkül is trükkök:

Első forráskódú PHP scriptek amikor inkluda fájlokat php: // filter

Mert ez a trükk nem igényel távoli fájl tartalmazza veszélyeztetettség. Ez használ valamilyen meta-wrapper php: // szűrőt.

Tegyük fel, hogy szeretné látni a forráskódot file1.php fájlt, majd mi a helyzet, hogy a kérelmet az a következőkből tevődik össze:

Ügyeljen arra, hogy az értelmetlen vonal a betűk és számok - ez a forráskód file1.php fájl kódolt base64. Mivel ez base64, akkor támogatott és bináris fájlok.

Távoli végrehajtását kódot php: // input

Nem olyan, mint a bevezetése fájlokat, és ez megint nem szükséges feltölteni a fájlokat.

Annak érdekében, hogy azt használja a speciális FireFox HackBar. akkor is használni, vagy bármely más program (pl curl), aki képes az adatok továbbítására postán.

php: // input hozzáfér a nyers HTTP kérés test megérteni, hogy include ( „php: // input”) teszi, menj

A kérést küld a megfelelő PHP kódot a szervezetben (például POST metódussal). Ez lehetővé teszi, hogy végre minden megengedett a távoli szerver funkciót!

Távoli kódok végrehajtását adatok: //

Ezen kívül a PHP támogatja az URL-rendszer adatai: // Akkor tegyük a kódot közvetlenül a GET paraméter! A következő teszt nem igényel speciális eszközöket, csak egy normális böngésző végrehajtani egy támadást.

Egyes tűzfalak webes alkalmazások észre egy gyanús stringet az URL, és blokkolja a rosszindulatú kérelmet. De van egy módja annak, hogy titkosítja a húr legalább base64 kódolás:

Fuss tetszőleges parancsot a / proc / self / környe

/ Proc / self / környe - egy tároló a folyamat változó. Ha Apache folyamat megfelelő hozzáférési joga, akkor, amikor megnyitja a weblapot, amelyen a jelen közé sebezhetőséget, mint az URL-t,

hogy valami hasonló

Megjegyzés: a HTTP_USER_AGENT. Ehelyett lehet helyettesíteni a megfelelő PHP kód futtatásának egy távoli szerveren.

Rézkarc és végrehajtása a log fájlokat a helyi inkluda

Sajnos, a legújabb változat a Apache, ez a módszer nem működik.

Ennek lényege abban rejlik, hogy a támadó kódot tartalmazó web szerver naplók. Ez úgy valósítható meg, címhamisítás User-Agent. vagy akár csak át a GET paramétereket.

Ezután meg kell, hogy a napló fájl tartalmazza veszélyeztetettség.

Statikus végrehajtása távoli fájl

Példa statikus inkluda:

Kihasználni a statikus tartalmazza veszélyeztetettség lehet nagyon egzotikus helyzetekben. A bevezetése rosszindulatú kód elvégzéséhez szükséges támadás közepén ember a kettő között a szerverek, amelyek közül az egyik a házigazdák a webes alkalmazás, amely tartalmazza veszélyeztetettség, a második a hosts fájlt, hogy használják, inkluda.

következtetés

A legtöbb példában itt bemutatott szükséges bizonyos feltételek, amelyek csökkentik a rossz szerver konfigurációját. Ie Más szóval, nem minden bemutatott módszerek itt fog működni a legtöbb web szerver.

Kapcsolódó cikkek: