Hack me :P

Pagina: 1
Acties:
  • 335 views sinds 30-01-2008
  • Reageer

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Even zitten dubben of dit in P&W of V&V thuishoort, en het feit dat dit een veel drukker bezocht forum is, toch maar hier gedaan. Daarbij lijkt het me ook meer passen.

Het zit zo: ik heb een website voor 'mijn' muziekvereniging gemaakt, met daarop een gedeelte dat door password-bescherming alleen voor leden toegankelijk is.

Beveiliging werkt globaal als volgt:
- user logt in middels username en password
- indien granted (passwords staan in /config.php), sla ip-adres op in tijdelijk bestand met tijd erbij
- na x minuten in-activiteit wordt dit bestandje verwijderd en moet de user opnieuw inloggen
- op elke pagina die achter de beveiliging zit, staat in de eerste regels (php): if (!checkAccess($ipadres)) header("Location: login.php");
- conclusie: als je niet ingelogd bent, wordt je direct doorgestuurd naar login.php

Ik houd een log bij van iedereen die overal is gekomen, en als iemand zonder pw een ledenpagina opvraagt, dan zie ik bijvoorbeeld staan
05-03-2002 11:15:00 /leden/forum/index.php
05-03-2002 11:15:01 /leden/login.php

Nu kwam ik er een tijdje geleden achter dat een of andere zoekmachine (fasttrack of zo dacht ik?) wel de ledenpagina's had opgevraagd, maar niet doorgestuurd was naar de loginpagina!!! Ik zag dus iets dergelijks staan:
05-03-2002 11:15:00 /leden/forum/index.php
05-03-2002 11:15:01 /leden/forum/index.php?cat_id=4
05-03-2002 11:15:02 /leden/forum/index.php?topic_id=22

Omdat ik mijn beveiliging wel erg goed vond :7 kan ik het niet hebben dat ik niet weet waarom dit zo is.

Nu dan eindelijk mijn vraag: ik wil niet zozeer weten waar mijn fout eventueel zit, want dan krijg ik tientallen reply's waarop ik moet antwoorden dat ik dat al lang gedaan heb, maar de uitdaging om de beveiliging te omzeilen en in het ledengedeelte terecht te komen. Zet bijvoorbeeld eens wat neer op het forum. Maar ik vertrouw op de collegialiteit van de tweakers en ga ervan uit dat er geen misbruik wordt gemaakt van verworven toegang... Am I right??? Hope so ;)

Samenvatting: wie kan zich ongeoorloofd toegang verschaffen tot het ledengedeelte van http://www.crescendokrimpen.nl????? Heb nogal wat info gegeven over structuur van de beveiliging, dus als het nu niemand lukt, ben ik ervan overtuigd dat het helemaal niet makkelijk is om het zonder deze info te doen :P

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Wie ben jij?

Ben jij wel de beheerder van crescendo? Of heb je gewoon een beetje problemen met ze?

Programmer - an organism that turns coffee into software.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op dinsdag 05 maart 2002 20:35 schreef LuCarD het volgende:
Wie ben jij?

Ben jij wel de beheerder van crescendo? Of heb je gewoon een beetje problemen met ze?
idd
toon dit aan en hij blijft open
anders is het gewoon kansloos imho .....

Doet iets met Cloud (MS/IBM)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Wel es gedacht aan proxies? Een IP is niet echt een ID.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Grum
  • Registratie: Juni 2001
  • Niet online
Hey .. ik heb een forum op microsoft.com .. kan jij die ff voor me hacken ? .. hij is echt van mij hoor en het gaat zo: checkIp($theIpAddress) en dan sla ik dat op in de database en dan mag je wel en niet soms toch af en toe niet uitloggen na voor achter het in logsysteemscript enzo!

>:) ... zacht gezegd dubieus :P :+

Verwijderd

Wat moet ie doen dan? Een mailtje sturen vanaf webmaster@crescendokrimpen.nl ofzo? ;)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op dinsdag 05 maart 2002 20:45 schreef Aegis het volgende:
Wat moet ie doen dan? Een mailtje sturen vanaf webmaster@crescendokrimpen.nl ofzo? ;)
das geen gek id :)

doe deze (tijdelijk :?) dicht
in afwachting van bevestiging
<edit>
verificatie geweest :)

Doet iets met Cloud (MS/IBM)


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
OK, dom dat ik niet aan deze reactie gedacht heb: heb genoeg dergelijke opmerkingen langs zien komen op GoT... Maar heb bewezen dat ik echt wel systeembeheerder ben (zie nieuws-item op hoofdpagina; bewijs door mailtje vanaf webmaster@crescendokrimpen.nl te sturen is beetje simpel; ik kan vanaf hier elk adres in de afzender zetten...), dus topic mocht weer open...

Bleek dus onveilig en wel om de volgende reden (kunnen anderen er ook van leren ;)):

<?php
if (!checkAccess())
header("Location: login.php");

... rest pagina ...
?>

Deze constructie stuurt wel de gehele pagina mee, maar client wordt naar login.php geleid. Als je de headers verandert kan je wel de complete pagina zien.

Verander de code in:

<?php
if (!checkAccess())
{
header("Location: login.php");
exit;
}

... rest pagina ...
?>

en dit probleem is opgelost!

Wie volgt met een nieuwe truc? :P

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-08 22:16
Een gebruiker uniek identificeren aan een IP-adres....
Mag ik even lachen?

En je wachtwoorden, die stuur je zeker cleartext over de lijn of gebruik je eh, hoe heet dat ook alweer, dat je password gehashed wordt door je browser?

Uiteraard zullen er geen bedrijfskritische gegevens staan, of iets dergelijks. Maar toch, hoe gaan je wachtwoorden over de lijn?

Ikzelf ben op dit moment met een "web-app" bezig en die checked bij iedere request of je credentials wel goed zijn. NT LM protocol. Enige nadeel is dat je nogal vast zit aan IIS en IE. maar gelukkig kun je achter IIS weer Websphere hangen. IIS checked dus alleen maar de gebuikers echtheid... :P

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
code:
1
2
3
4
<td><a href="http://www.budget-net.com/conseuronl/default.htm" target="_blank">
[img]"/site_images/conseuro.gif"[/img]</a><br>
<font face="arial,helvetica,swiss" size="1">Alles over de euro</font>
</td>

Je exit dus niet na de header? Dat vreet een spider dus niet.

[edit] Hmmz die stond er al... ff doorkijken

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Op dinsdag 05 maart 2002 22:47 schreef The - DDD het volgende:
Een gebruiker uniek identificeren aan een IP-adres....
Mag ik even lachen?

En je wachtwoorden, die stuur je zeker cleartext over de lijn?
Ik identificeer niemand a.h.v. een IP-adres:

Procedure werkt als volgt:

1. gebruiker voert username en password in
2. checkpw.php controleert of username/password een geldige combinatie is a.h.v. variabelen in config.php (dus (als het goed is) niet voor de grote boze buitenwereld te zien)
3. indien klopt het klopt, maak bestandje aan met als naam het IP-adres, en daarin de username en het tijdstip van de laatste actie
4. bij elke leden-pagina die wordt opgevraagd, wordt het IP-adres van de client bekeken, gekeken of er een file is met als naam dat IP-adres, en tenslotte of de tijd nog niet verlopen is.
5. Als alles goed is, dan is checkAccess() true en wordt de pagina getoond (en tijd in IP-bestandje ge-update met nieuwe tijd)
6. Mocht het niet goed zijn, dan wordt de gebruiker direct redirected.
Op dinsdag 05 maart 2002 22:47 schreef The - DDD ook nog:
Uiteraard zullen er geen bedrijfskritische gegevens staan, of iets dergelijks. Maar toch, hoe gaan je wachtwoorden over de lijn?
Inderdaad zijn het geen zeer geheime gegevens: gaat er meer om dat niet jan-en-alleman zomaar in het forum gaan deelnemen of de vergaderings-notulen door kunnen lezen.

Daarom heb ik ook geen moeite genomen de transmissie van data zelf te beveiligen: wachtwoordveld is een <INPUT TYPE="password">, dus niet beveiligd op welke manier dan ook

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Maar wat als er nou 2 mensen via dezelfde proxy internetten, dan gaat het toch goed verkeerd?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Wokschotel
  • Registratie: December 1999
  • Laatst online: 08:53

Wokschotel

Op 6 wielen

Op dinsdag 05 maart 2002 23:31 schreef jelmervos het volgende:
Maar wat als er nou 2 mensen via dezelfde proxy internetten, dan gaat het toch goed verkeerd?
In het ip-bestandje staat toch ook de username?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op dinsdag 05 maart 2002 23:48 schreef Wokschotel het volgende:

[..]

In het ip-bestandje staat toch ook de username?
Ja, dus de laatste die heeft ingelogd wordt gebruikt onder dat IP. Komt er iemand anders met dat zelfde IP dan kan die ook gewoon bij het inlog gebeuren.

Dit komt omdat hij het IP als ID gebruikt. Dus volgens hem is het IP per gebruiker anders, en is het uniek.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Op dinsdag 05 maart 2002 22:55 schreef sjroorda het volgende:

[..]

Ik identificeer niemand a.h.v. een IP-adres:

Procedure werkt als volgt:

1. gebruiker voert username en password in
2. checkpw.php controleert of username/password een geldige combinatie is a.h.v. variabelen in config.php (dus (als het goed is) niet voor de grote boze buitenwereld te zien)
3. indien klopt het klopt, maak bestandje aan met als naam het IP-adres, en daarin de username en het tijdstip van de laatste actie
4. bij elke leden-pagina die wordt opgevraagd, wordt het IP-adres van de client bekeken, gekeken of er een file is met als naam dat IP-adres, en tenslotte of de tijd nog niet verlopen is.
5. Als alles goed is, dan is checkAccess() true en wordt de pagina getoond (en tijd in IP-bestandje ge-update met nieuwe tijd)
6. Mocht het niet goed zijn, dan wordt de gebruiker direct redirected.
[..]

Inderdaad zijn het geen zeer geheime gegevens: gaat er meer om dat niet jan-en-alleman zomaar in het forum gaan deelnemen of de vergaderings-notulen door kunnen lezen.

Daarom heb ik ook geen moeite genomen de transmissie van data zelf te beveiligen: wachtwoordveld is een <INPUT TYPE="password">, dus niet beveiligd op welke manier dan ook
Lijkt wel iets van een serverside cookie??? maar wat als er meerder gebruikers op de zelfde proxy zitten?? En waarom zou je dat zo doen, kan je toch beter sessions gebruiken. ik hoop voor je dat die bestanden ook auto-verwijderd worden want is het niet een onnodig belasting van je server?

Verwijderd

IP's gebruiken hiervoor is gewoon een slecht idee.
Probeer maar met een AOL'er. Die gaat over tig verschillende proxy's naar buiten en daarvan weet je dus nooit zeker of hij 2 tellen later nog hetzelfde IP adres heeft.

Waarom gebruik je geen sessies?
http://www.php.net/manual/en/ref.session.php

  • a3konijn
  • Registratie: Oktober 2000
  • Laatst online: 31-07 08:18
Bovendien kan je niet van iedereen zijn IP opvragen. Die van mij is i.i.g. geblokkeerd.

Verwijderd

Maar eh, ik kom er niet in het ledengedeelte nee btw....daar ging het toch om??
het is ook al laat trouwens

welterusten allemaal
:z

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Lijkt wel iets van een serverside cookie??? maar wat als er meerder gebruikers op de zelfde proxy zitten?? En waarom zou je dat zo doen, kan je toch beter sessions gebruiken. ik hoop voor je dat die bestanden ook auto-verwijderd worden want is het niet een onnodig belasting van je server?
Mijn primaire uitgangspunt voor de website was dat iedereen het met elke browser kan bekijken; dat wil zeggen: geen js, geen flash, geen andere leuke trucjes. En daar horen m.i. ook geen cookies bij.

Het probleem van de proxyserver was me ook al opgevallen: dan heb je dus in het systeem wel toegang, maar geen gebruikersnaam. Weet nog niet hoe ik dit op ga lossen.

Het probleem van AOL waar een andere reply-er mee kwam heb ik zelf meegemaakt op een andere compu; da's inderdaad knap vervelend. Na een keer of 4 heb je alle verschillende IP-adressen wel gehad, maar dan moet je wel vier keer inloggen...

Voorlopig worden de files nog niet automatisch verwijderd maar gooi ik ze er eens in de zoveel tijd zelf uit; dat is met de huidige hoeveelheid bezoekers (paar per dag ;() nog wel te doen.
Gezien het feit dat er na mijn eerste update (:P) niemand meer binnen is gekomen vind ik mijn beveiliging zelf wel goed genoeg *D, maar zal inderdaad eens gaan nadenken over cookies.

Of weet iemand een betere oplossing zonder cookies?

Thx iig iedereen!

Verwijderd

Je bent kwetsbaar:

http://www.crescendokrimpen.nl/cgi-bin/count.cgi

je hebt een oude counter die overflows toelaat en niet admins gifjes kan laten uitlezen die niet voor hen bedoeld zijn. Lees dit:


http://online.securityfocus.com/cgi-bin/vulns-item.pl?section=info&id=128

en upgrade.


Je smtp service:

VRFY command allowed. This allows an attacker to enumerate user accounts on the system.

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 08:04
Op woensdag 06 maart 2002 07:04 schreef sjroorda het volgende:

[..]

Mijn primaire uitgangspunt voor de website was dat iedereen het met elke browser kan bekijken; dat wil zeggen: geen js, geen flash, geen andere leuke trucjes. En daar horen m.i. ook geen cookies bij.
Met het gebruik van cookies sluit je nauwelijks browsers uit hoor.
Wat ik zou doen is iedereen die inlogt een unix timestamp geven en dát in een cookie zetten. Dat is een vrij unieke waarde.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Probeer het ip-adres niet te gebruiken. Hooguit voor extra checks tussen twee pagina's die erg snel tussen elkaar uitgevoerd worden. Want stel dat je op je website iets hebt om iets in te vullen en je hebt een gebruiker met gewoon een modempje en dailup verbinding. Als deze een grote tekst aan het intikken is en zo slim is om de verbinding te verbreken moet hij na het overnieuw verbinden overnieuw inloggen en de tekst overnieuw invullen... irriterend (als je nog niet van ctrl+c/v gehoord hebt).

Wat je eventueel kan doen is het genereren van een uniek random nummertje en hier een hash functie overheen gooien (md5 ofzo). Bovendien doe je dan vervolgens ook voor het wachtwoord en de combinatie van deze twee plak je aan elke url. PHP heeft hiervoor ingebouwd support: sessies.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12-08 22:08

Creepy

Tactical Espionage Splatterer

Op woensdag 06 maart 2002 00:47 schreef a3konijn het volgende:
Bovendien kan je niet van iedereen zijn IP opvragen. Die van mij is i.i.g. geblokkeerd.
Geloof je dit zelf? Een "geblokkeerd" ip bestaat niet, als iemand van jou je IP niet kan "opvragen" kan er ook geen informatie naar je terug gestuurd worden. Het kan zijn dat je via een proxy o.i.d. zit, en in dat geval zal dus het IP van die proxy verschijnen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Jo sjorda, woon je in krimpen aan de lek? dan kunnen we misschien wel een straat lannetje aanleggen :)

Verwijderd

[quote]Op woensdag 06 maart 2002 07:04 schreef sjroorda het volgende:

[..]

Mijn primaire uitgangspunt voor de website was dat iedereen het met elke browser kan bekijken; dat wil zeggen: geen js, geen flash, geen andere leuke trucjes. En daar horen m.i. ook geen cookies bij.


Als je scriptjes maar "valide" html en crossbrowser javascript uitpoept dan lijkt mij dat elke browser de output goed kunnen weergeven. Dat heeft meer te maken hoe je de heleboel programmeerd. cookies heeft niets te maken met de weergave in de browser (correct me if i'm wrong)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Op woensdag 06 maart 2002 08:03 schreef olav het volgende:
Je bent kwetsbaar:

http://www.crescendokrimpen.nl/cgi-bin/count.cgi

je hebt een oude counter die overflows toelaat en niet admins gifjes kan laten uitlezen die niet voor hen bedoeld zijn. Lees dit:

http://online.securityfocus.com/cgi-bin/vulns-item.pl?section=info&id=128

en upgrade.


Je smtp service:

VRFY command allowed. This allows an attacker to enumerate user accounts on the system.
Eerlijk gezegd gaan deze twee opmerkingen mijn kennis een beetje te boven. Ik heb het idee dat beide 'problemen' met de server te maken hebben? Als ik nl in mijn HTML-directory kijk, zie ik geen dir cgi-bin staan, wel een dir cgi, maar die is leeg...

Ook de tweede opmerking lijkt me een server-probleem? Wat houdt dit precies in? Alleen dat een attacker kan zien hoeveel user accounts op mijn domein bestaan?

Als dat zo is maar eens even een mailtje sturen naar hostingbedrijf...

Verwijderd

[quote]Op woensdag 06 maart 2002 07:04 schreef sjroorda het volgende:

Of weet iemand een betere oplossing zonder cookies?

Thx iig iedereen!



sessions??

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Op woensdag 06 maart 2002 11:05 schreef woz het volgende:
Als je scriptjes maar "valide" html en crossbrowser javascript uitpoept dan lijkt mij dat elke browser de output goed kunnen weergeven. Dat heeft meer te maken hoe je de heleboel programmeerd. cookies heeft niets te maken met de weergave in de browser (correct me if i'm wrong)
De HTML is valide (ok, volgens w3c niet helemaal, maar valide genoeg), maar javascript is iets wat sommige mensen uit hebben staan, net als cookies... ok, zullen er niet veel zijn, maar JS heb ik sowieso nergens voor nodig en cookies? Moet ik eens over denken, blijken toch wel handig te zijn :)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Op woensdag 06 maart 2002 11:08 schreef woz het volgende:
sessions??
Hmmm... uit deze en eerdere opmerkingen maak ik dus op dat sessions niet per definitie cookies zijn... zal ik me ook maar eens in gaan verdiepen dan!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Op woensdag 06 maart 2002 08:56 schreef Creepy het volgende:

[..]

Geloof je dit zelf? Een "geblokkeerd" ip bestaat niet, als iemand van jou je IP niet kan "opvragen" kan er ook geen informatie naar je terug gestuurd worden. Het kan zijn dat je via een proxy o.i.d. zit, en in dat geval zal dus het IP van die proxy verschijnen.
De proxy stuurt het in principe ook mee, tenzij hij geconfigureerd is dat niet te doen natuurlijk (X-Forwarded-For header)
Maar het lijkt me niet dat een proxy van een ISP dat ip adres niet meestuurt.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13-08 16:11
Op woensdag 06 maart 2002 08:59 schreef HAL-9000 het volgende:
Jo sjorda, woon je in krimpen aan de lek? dan kunnen we misschien wel een straat lannetje aanleggen :)
Nee, sorry, woon in Lekkerkerk (nog wel althans :?), jammer!

  • eborn
  • Registratie: April 2000
  • Laatst online: 05-08 20:55
Op woensdag 06 maart 2002 11:08 schreef sjroorda het volgende:

De HTML is valide (ok, volgens w3c niet helemaal, maar valide genoeg), maar javascript is iets wat sommige mensen uit hebben staan, net als cookies... ok, zullen er niet veel zijn, maar JS heb ik sowieso nergens voor nodig en cookies? Moet ik eens over denken, blijken toch wel handig te zijn :)
Je kunt natuurlijk wel tot in de eeuwigheid alle 'nieuwe' technieken weren, maar op een gegeven moment wordt het ook maar eens taak van de gebruiker om gewoon te upgraden. Sites op het internet gaan steeds meer cookies en javascript gebruiken, dus het is eigenlijk iets waar iedereen maar mee moet leren leven imho

Btw, sessions hebben niet perse cookies nodig. Ze kunnen ook dmv GET/POST variabelen meegegeven worden. En dat werkt i.i.g. altijd :)

Verwijderd

Op websidestory.com stond laatst de uitkomst van een onderzoek wat een jaar gelopen had. Uitkomst was dat minder dan 1% van de gebruikers cookies uit heeft staan. Javascript staat echter in meer dan 10% van de gevallen uit. (om die window.open popups te weren denk ik)
Hmmm... uit deze en eerdere opmerkingen maak ik dus op dat sessions niet per definitie cookies zijn... zal ik me ook maar eens in gaan verdiepen dan!
Gewoon met sessions aan de slag gaan dus.
Er zijn 2 smaken:
There are two methods to propagate a session id:

Cookies

URL parameter

The session module supports both methods. Cookies are optimal, but since they are not reliable (clients are not bound to accept them), we cannot rely on them. The second method embeds the session id directly into URLs.
Je kan ze volgens mij ook nog eerst met cookies proberen, lukt dat niet, dan doe je ze alsnog met URL parameters.

Verwijderd

Nog even over dat IP verhaal. Dat werkt sowieso niet bij mensen met een dialup verbinding.

Verwijderd

Op woensdag 06 maart 2002 14:20 schreef daxx909 het volgende:
Nog even over dat IP verhaal. Dat werkt sowieso niet bij mensen met een dialup verbinding.
En waarom niet?

Verwijderd

Omdat je steeds een ander IP adres krijgt. Op die manier kan ik geen webserver beginnen! :Y)

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Omdat je steeds een ander IP adres krijgt. Op die manier kan ik geen webserver beginnen! :Y)
Als je een webserver wilt BEGINNEN dan kun je simpelweg een doorstuur service (DynaIP enzo) gebruiken. En waar het echt omgaat, gaat jouw gedoe ook niet op. Die files op die server worden na een tijdje weer weggegooid... (Zie begin verhaal)
Pagina: 1