sql smuggling
Sziasztok.
Nem rég olvastam az sql smugglingról. Eddig nem ismertem ezt a támadási formát, azt olvastam, hogy utf-8as kódolás mellett nem véd a sql injection által használt betörések kivédése. Tehát az idézőjel stb escapelése.
Hogyan tudnék védekezni az ilyen fajta támadások ellen? És pontosan hogy is működik az sql smuggling.
Előre is köszönöm a válaszokat
■ Nem rég olvastam az sql smugglingról. Eddig nem ismertem ezt a támadási formát, azt olvastam, hogy utf-8as kódolás mellett nem véd a sql injection által használt betörések kivédése. Tehát az idézőjel stb escapelése.
Hogyan tudnék védekezni az ilyen fajta támadások ellen? És pontosan hogy is működik az sql smuggling.
Előre is köszönöm a válaszokat
link
link
Miről van szó?
ansi -> utf
Nem
Real
Vihar a bilien
Ha egy DBMS saját belső konverziójában transzliterál (hasonló kerekterrel helyettesíti azokat amik nem reprezentálhatók a cél kódolásban), az az adott szoftver súlyos biztonsági problémája, és bármilyen opensource projektben azt megfelelő súllyal fogják kezelni miután jelented nekik. Mysqlben például (a pdfben példának használt karakterrel) a következő query eredménye (utf-8 kapcsolaton keresztül):
Amit én veszélynek gondolok az az UTF-8 kódolás redundáns lehetőségeinek kiaknázásában rejlik. (Párosítva a gondatlan, UTF8-cal nem számoló input ellenőrzéssel és egy megengedő konvertáló algoritmussal).
A konkrét példa
Az aposztróf hexa kódja 0x27 (decben 39). Ez az első 128 karakter része az ASCII táblában (vagyis a Unicode-ban is). Ez a karater nem lesz escape-elve, tehát UTF-8 reprezentációja is megegyezik az ASCII-val, így bármilyen ASCII-alapú szűrőn fennakad.
A wikipédia táblázatát átnézve feltűnhet a rendszerben rejlő redundancia, vagyis hogy a 0x80-0x7ff régió kódolására használt sémát (vagy az ennél nagyobbakat) alkalmazhatjuk a 0x80-nál alacsonyabb kódok tárolására is.
Így a (0xc0, 0xa7) bájtsorozatot dekódolva a 0x27 ascii kódot kapjuk. (Ha jól számoltam). Ez a két byte símán átcsusszan egy ASCII alapú szűrőn.
A harmadik láncszem egy buta konvertáló algoritmus lenne, aminek nem tűnik fel, hogy a kódolt karakter nem abban a régióban van amire az adott séma vonatkozik. Lehet próbálkozni, ki talál ilyet.. :) Az ICONV torkán nem sikerült lenyomni. A MySQL CONVERT főggvényével sem sikerült eddig: