6.6. Befecskendezés – Közvetlen statikus kód befecskendezése

6.6.1. Leírás

A közvetlen statikus kód befecskendezése általi támadás abból áll, hogy a kódot közvetlenül az alkalmazás által használt erőforrásba juttatják bele, miközben egy felhasználó kérelme éppen feldolgozás alatt van. Ez általában úgy történik, hogy befolyásolják a könyvtár és sémafájlokat, amik a felhasználói kérelemnek megfelelően lettek létrehozva az adatok megfelelő megválasztása nélkül. Egy, a módosított erőforráshoz beérkező felhasználói kérelem esetén a benne foglalt cselekvés végrehajtódik a szerveroldalon a web szerver folyamatának a függvényében.

A szerver oldali beszúrás (Server Side Includes) egy típusa a közvetlen statikus kód befecskendezésének. Ez nem összekeverendő a többi fajta kód befecskendezéssel, mint amilyen az XSS  („Kereszt-helyszíni szkriptelés” vagy „HTML befecskendezés”), aminél a kód a kliens oldalán hajtódik végre.

6.6.2. Példák

6.6.2.1. Példa 1

Ez az egyszerű példa a CGISCRIPT.NET csSearch 2.3 egyik gyengeségének a kihasználását mutatja be, amit a Bugtraq-on jelentettek meg, 4368-as azonosítószám alatt.  A következő URL szerverre való meghívásával lehetséges a ‘’’’setup’’’ változóban meghatározott parancsokat végrehajtani.

csSearch.cgi?command=savesetup&setup=PERL_CODE_HERE

A klasszikus példa szerint a következő parancsot arra lehet használni, hogy minden fájlt eltávolítsunk a  “/” könyvtárból:

csSearch.cgi?command=savesetup&setup=`rm%20-rf%20/`

Tegyük hozzá, hogy a fönti parancsnak kódolva kell lennie, hogy elfogadható legyen.

6.6.2.2. Példa 2

Ez a példa egy, az Ultimate PHP Board (UPB) 1.9 (CVE-2003-0395)-ben lévő sebezhető pontot használ ki, lehetővé téve a támadónak, hogy véletlenszerűen futtasson php kódokat. Mindezt azért teszi, mert néhány, a felhasználóhoz tartozó változó, mint például az IP-cím vagy a User-Agent egy olyan fájlban tárolódnak, amit az admin_iplog.php oldal használ, hogy felhasználói statisztikákat mutasson. Amikor egy adminisztrátor ezt a lapot használja, akkor a korábban egy káros kérelem által befecskendezett kód végrehajtódik. A következő példa egy ártalmas php kódot tartalmaz, ami belerondít az index.php lapba, amikor az adminisztrátor az admin_iplog.php-t futtatja.

GET /board/index.php HTTP/1.0

User-Agent: <? system( "echo \'hacked\' > ../index.html" ); ?>