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

Karaktercsempészet

2013.09.12. 13:37 | buherator | Szólj hozzá!

Webes projektek során egyre gyakrabban fordul elő, hogy bár a tesztelt alkalmazás megvalósít valamiféle bemeneti szűrést, az adatbázis segít kikerülni számunkra ezeket a megkötéseket. 

SQL Smugglingról korábban már írtam (bár ideje lenne frissíteni azt a posztot...), mostanában a leggyakoribb példa az XSS-ek keresztülverése például az ASP.NET ValidateRequest filterén vagy reguláris kifejezéseken:

Bár a filter kivételt dob a legtöbb értelmes <-el kezdődő bemenetre, a %uff1c unicode karaktert a MSSQL szerver éppen erre az ASCII jelre alakítja, ha unicode tartalmat akarunk CHAR vagy VARCHAR  típusú mezőbe tölteni (NCHAR illetve NVARCHAR helyett), így a szűrés szépen megkerülhető. 

Nem olyan régen kisebb gondba kerültem, ugyanis egy gonosz karakter-feketelistába botlottam, ami egy csomó, JavaScriptben hasznos karaktert (pl. zárójeleket) nem engedett át, így szükségem lett volna egy megfeleltetési táblázatra a háttérben ülő MSSQL szerver Unicode->ASCII konverzióiról. Miután a kézi próbálatás nem vezetett eredményre, fellőttem egy SQL Server példányt az Azure-ban (tanulság: a Microsoft szoftverek telepítése még a felhőben is lassú), és írtam egy rövid T-SQL szkriptet, ami egy táblába töltötte az összes 2-byte-os karakter értékét egész számként, Unicode illetve ASCII karakterként. 

Az eredmény megtalálható a GitHub-on, a további adatbázis motorokkal illetve konfigurációkkal kapcsolatban várom a hozzájárulásokat!

A tanulság a fejlesztőknek és üzemeltetőknek egyrészt annyi, hogy készüljetek fel adatbázis szinten a spéci karakterek fogadására, másrészt próbáljatok a naív karakterszűrések helyett valami robosztusabb megoldásban (pl. DOM-alapú validáció) gondolkodni!

Címkék: sql injection xss sql smuggling nsmuggler

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.

Nincsenek hozzászólások.