Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

Tisztázzuk: SQL Smuggling

2010.01.07. 09:00 | buherator | 6 komment

Az egyik leggyakrabban felvetődő kérdés, amit SQL injection témában nekem szegeznek az, hogy mégis hogyan valósítható meg a gyakorlatban az "SQL smuggling" néven elhíresült támadási forma? A legenda szerint ezen módszer felhasználásával bizonyos escape-elési eljárások megkerülhetők, mivel a bemenetellenőrzést végző alkalmazás a különböző karakterkészlet-beállítások miatt az adatbáziskiszolgálótól eltérően értelmezi a potenciálisan veszélyes karaktereket. Őszintén szólva az én ismereteim sem voltak kimerítőek a témában (és valószínűleg még mindig nem azok), de a CCC-n EQ unszolására ("Most hackelni jöttél vagy Fluxboxot konfigolni?" ;) újra elővettem a régi leírást, és azt hiszem sikerült meglátnom a fényt az alagút végén:

A Comsec-féle tanulmány egyrészt több, gyakran előforduló programozói hibát, illetve IDS-megkerülési módot mutat be, de ezek nem jelentenek különösebb izgalmat. Az érdekes rész a Unicode Smuggling fejezetben kezdődik, ahol a szerző felveti, hogy a különböző karaktertáblák hasonlóan kinéző karaktereit egymásba átvívő "homoglifikus" (a rangidős nyelvész kérem javítson ki!) transzformációk bizony biztonsági kockázatot rejtenek magukban. Azaz, pl. az Ā karaktert a DBMS okosan A-vá alakítja, a sokféle szemita felülvonást pedig ASCII aposztróffá. A probléma ott van, hogy mégis mely adatbáziskezelők végeznek ilyenfajta váratlan átalakításokat a bemeneten? A hivatkozott tanulmány csak annyit mond, hogy az MS SQL Server 2005 már nem, valamint hogy a MySQL egyes régebbi Java connectorai még lehetővé tettek ilyen támadásokat. Nem sok. 

Ha kicsit jobban utánajárunk a dolognak, észrevehetjük, hogy SQL Smugglinggal kapcsolatban szinte kizárólag az eredeti Comcast-féle tanulmány különböző hivatkozásait találjuk, konkrét esettanulmányokat nem. Támpontként leginkább egy régi Bugtraq-os szálat használhatunk,  melyben többen kritizálják a tanulmányt, mondván, hogy itt szó sincs új típusú támadásokról, egyszerűen néhány régimódi hibatípust fedeztek fel újra. 

Emellett ugyanakkor találunk néhány gyakorlati példát is: David Litchfield például a PLSQL-ben alkalmazott tárolt-eljárás-feketelista (grammarnazis, help me!) megkerülésére mutatott példát még 2001-ben. Itt a problémát az okozta, hogy a PLSQL a ÿ karaktert Y-á konvertálta, de a SYS.* tárolt eljárásokra vonatkozó szabályok nem kerültek érvényesítésre. Gary Oleary-Steel egy Ruby szkriptet tett közzé, melyet IIS-el tesztelt, de bővebb információ nem áll rendelkezésre arról, hogy hogyan.

EQ-val elvégeztünk egy csomó tesztet MySQL-lel szemben, de nem siekrült még csak aggodalomra okot adó viselkedést sem kicsikarnunk a kiszolgálóból.

Úgy tűnik tehát, hogy az SQL Smuggling lényegében ráhúzható minden DBMS, webszerver vagy interpreter bugra, ami nem kezeli megfelelően a speciális karaktereket, ezeket viszont az érintett gyártók általában hamar javítják, az egyszer programozónak/üzemeltetőnek pedig nincs sok ráhatása az ilyen problémák megelőzésére. Az egyetlen gondot az így-úgy összebarkácsolt szűrőeljárások jelenthetik, de ezeket általában akkor is megkerüli az ember előbb vagy utóbb, ha nem tudja mi is az az SQL Smuggling.

Szóval használjatok naprakész szoftvereket, és ne próbáljátok meg feltalálni a spanyolviaszt, ha pedig behatolástesztelésre kerül a sor, a sebezhetőség-adatbázisok környékén kell kutakodni, mert úgy tűnik, nem létezik varázsmódszer a jól ellenőrzött  SQL paraméterekkel és előkészített lekérdezésekkel szemben.

Még egyszer köszönet EQ-nak a motivációért és a segítségért!

Címkék: sql smuggling

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

|Z| 2010.01.07. 09:38:45

Javítsatok ki, ha tévedek, de az alábbi játék szerinetm SQL smuggling:

www.wechall.net/challenge/addslashes/index.php

Jó szórakozást hozzá :)

EQ · http://rycon.hu 2010.01.07. 11:02:50

jól látod, pont a formapélda.

buherator · http://buhera.blog.hu 2010.01.07. 11:41:54

Nekem marhára nem akarja így beadni reggel, de itt ugye a lényeg az, hogy az addslashes() alapvetően nem biztonsági funkció, a magic_quotes_gpc meg nem véletlenül deprecated.

|Z| 2010.01.07. 12:41:18

@buherator: igen, ez a lényeg php + mysql esetében

RobbeR 2010.01.07. 19:23:27

mysql_real_escape_string()