Facebook Like button XSS

A Facebook Like gombjának egy csomó előnye van. Az egyik például az, hogy mivel előbb-utóbb ott lesz minden weboldalon, ha esetleg valamilyen security bug van benne, akkor az szinte a teljes internetet érinteni fogja. Mint ahogyan érinti is.

Lássuk csak, hogyan készül egy Like button!

Kezdetben vala a gombra vágyó felhasználó (szándékosan nem fejlesztőt írtam), aki elvándorol a Facebook ide vonatkozó oldalára és varázsol magának egy iframe darabkát, amit beilleszt az oldalába. Ezzel még nincs is gond. A probléma ott jön elő, amikor emberünk rájön, hogy “de jó lenne ez a gomb az összes oldalamra!”, és elkezdi anatómiailag elemezni a bemásolt kódrészletet, például:

  <iframe src="http://www.facebook.com/plugins/like.php?
href=http%253A%252F%252Fbalassy.spaces.live.com
&amp;layout=standard
&amp;show_faces=false
&amp;width=450
&amp;action=like
&amp;font
&amp;colorscheme=light
&amp;height=35" scrolling="no" frameborder="0"
style="border:none; overflow:hidden; width:350px; height:22px;"
allowTransparency="true">
</iframe>

Nem kell atomfizikusnak lennie, hogy rájöjjön, a href után az aktuális oldal URL-jét kell bemásolni. Hogy is szoktuk azt csinálni? “Hát ASP.NET-ben például azt írjuk oda, hogy <%= this.Request.Url %>, Javascriptben meg azt, hogy document.URL, és biztos PHP-ben is van hasonló.” Az sem gond, ha elsőre nem működik, hiszen a Google mindenre tudja a választ, hamar lehet működő kódrészletet vagy plugint találni. Nem is kell hozzá programozónak lenni, elég hozzá olvasni és kopipésztelni tudni.

Mivel főhősünk nem programozó, észre sem fogja venni, hogy a neten terjedő kódrészletek igen jelentős hányada ész nélkül másolja be a kapott URL-t a weboldal forráskódjába. Tipikus cross-site scripting melegágy, nem is kell hozzá atomfizikusnak lenni, hogy találjunk egy olyan inputot, ami kihasználja, például:

  http://example.com/oldal.kiterjesztes?" onload="javascript:alert('XSS')" nincsilyen="

Nyilván környezettől és böngészőtől függ, hogy pontosan hogyan és meddig lehet eljutni, de a lényeg, hogy sebesen terjednek a kihasználható kódrészletek, ráadásul szerencsétlen felhasználók észre sem veszik, ha ilyen oldalba futnak.

Még az is lehet, hogy meglájkolják.



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2010.05.21. 5:10:38 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • Haszontalanságok

    Balássy György (MS RD, ASP.NET MVP, MCTS) Minden fejlesztő rémálma, amikor a projekt vezetők kitalálnak olyan funkciókat egy alkalmazásba, amiről messziről látszik, hogy senki nem fogja használni. Ennél már csak az tud zavaróbb lenni, amikor a fejlesztő lelkesedik be és beépít valami olyat a szoftverbe, ami teljesen felesleges, pláne, ha még rosszul is működik. Tovább »
  • Property BackupDirectory is not available - SQL Backup hiba

    Dávid Zoltán Szegény embert az ág is húzza: most éppen nem szeretnék backupolni, de nem is tudok, pedig kéne. Az ok, hogy SQL Server Management Studioban az alábbi hibaüzenet fogad, ha Jobbklikk –> Tasks –> Backupot nyomok: “Property BackupDirectory is not available for Settings 'Microsoft.SqlServer.Management.Smo.Settings'. This property may not exist for this object, or may not be retrievable due to insufficient access rights.  (Microsoft.SqlServer.Express.Smo)” Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások