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

Query-halmozás MySQL-ben?

2010.04.22. 09:40 | buherator | 7 komment

Aki találkozott már kellően rosszul kialakított, MSSQL-t és/vagy ASP-t használó alkalmazással, az biztosan szívesen emlékszik vissza rá, hogy milyen egyszerű is lehet az SQL injection, ha az ember egy alkalmazásrétegbeli paranccsal egyszerre több műveletet is végrehajthat az adatbázisszerveren.

A történet ugyebár arról szól, hogy a lekérdezés-sztringünkbe (legtöbbször) pontosvesszők használatával több utasítást is belefogalmazhatunk, melyeket a kiszolgáló szépen egymás után végre is fog hajtani. Ez amellett, hogy kényelmi szolgáltatás a támadó számára, lehetővé teszi, hogy pl. egy gondatlanul összeállított  SELECT lekérdezéshez INSERT vagy UPDATE utasításokat, esetleg rendszerparancsokat (SHUTDOWN) fűzzünk.

MySQL backend esetén azonban kevésbé rózsás a helyzet, de ahogy ebből a wisec.it-n megjelent cikkből kiderül, a query-halmozás MySQL-ben sem lehetetlen, bár nem is kifejezetten egyszerű:

Mindenek előtt FILE jogosultságokra van szükségünk, amivel tudjuk írni a MySQL adat könyvtárát - ez a feltétel legtöbbször nem jelent problémát (sajnos). Ebben a könyvtárban tárolja az adatbáziskezelő a trigger eljárásait (is), az okososak pedig innentől kezdve sejthetik, hogy mire megy ki a játék. Ha egy tesztkörnyezetben létrehozunk egy triggert, láthatjuk, hogy két új fájl jön létre a vonatkozó adatbázis konyvtárában .TRG és .TRN kiterjesztéssel. Ezek egyszerű szöveges fájlok, amelyeket az INTO OUTFILE klóz segítségével létrehozhatunk. Innentől kezdve pedig a beállított triggerfeltételek teljesülése esetén lefutnak az általunk definiált utasítások. Ez utóbbi lépés azonban sokszor határt fog szabni a módszer bevethetőségének, az INTO OUTFILE ugyanis alapértelmezetten tiltott az újabb MySQL verziókban (a triggerek viszont csak ezekben léteznek).

 

Címkék: mysql sql injection query stacking

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.

EQ · http://rycon.hu 2010.04.22. 10:35:18

a baj az h a mysql adatfileokat elérni unixok alatt alapértelmezetten nem lehet a jogosultságok miatt, winen annál inkább, bár ott is be lehet állítani jól gondolom

_2501 2010.04.22. 13:04:00

jól gondolod. :) ntfs skillz pwah

Zorg a Rettenetes · http://musicanta.blog.hu 2010.04.25. 21:46:33

Van még egy gond, ami behatárolja az INTO OUTFILE használhatóságát. Nem lehet benne kikerülni az aposztrófok használatát. Muszáj aposztrófokkal határolni a rendes sztringként megadott elérési utat, ez pedig sok gyatrán megírt oldal esetében nem lehetséges, mert például be van kapcsolva a magic_quotes_gpc.

Másrészt ha mégis működik az INTO OUTFILE, akkor azt kis szerencsével sokkal keményebben is kihasználhatod, mint lekérdezéshalmozásra, például ha tudsz írni valami webről elérhető könyvtárba...

Zorg a Rettenetes · http://musicanta.blog.hu 2010.04.26. 07:27:25

@EQ: Kipróbáltad őket? Nem működnek az INTO OUTFILE-al.

websec.wordpress.com/2007/11/17/mysql-into-outfile/

'At the end some notes regarding INTO OUTFILE:
(...)
there is no way I know of to encode the pathname, so quotes are required'

Persze ha van valami trükk, amit nem ismerek, akkor kíváncsi vagyok rá.

EQ · http://rycon.hu 2010.04.26. 11:25:58

@Zorg a Rettenetes: megnéztem tényleg nem megy a concat meg a 0x, érdekes :) dumpfile-al sem, megérne egy misét a dolog.

Zorg a Rettenetes · http://musicanta.blog.hu 2010.04.26. 19:01:43

@EQ: Kíváncsi lennék én is, hogy biztonsági megfontolások állnak-e ezen a viselkedés mögött.