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:
- Létrehoz / találunk a forráskód a hátsóajtó
- 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
- Mentse el a kódot egy szöveges fájl
- Töltse be a szöveges fájlt a szerveren által ellenőrzött
- 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.