[PHP] NT user herkennen

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
We zitten met het probleem om in een webpagina de windows username van de client te verkrijgen op de server.

Probleempjes:
- Geen IIS die de LOGON_USER variabele kan uitlezen
- Gebruik maken van WScript + ActiveX werkt, maar vereist een update van security policies op alle clients en is gewoonweg niet veilig
- Met een nmblookup op het IP adres gaat het, maar als een gebruiker op meerdere PC's is ingelogd werkt dit slechts op de eerste client

Waar we aan dachten is het plaatsen van een cookie, maar da's ook niet 100% veilig en heeft ook nog een kans op fouten (users die cookies verwijderen)

Iemand nog ideeën of zoektips hiervoor?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik kom in de search redelijk wat tegen. Zit daar niets bruikbaars tussen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

Ik heb anders nog nooit een nette/werkende implementatie gezien (vanaf een *nix bak dan, IIS heeft wel wat truuks aanboord hiervoor).

Search dingen zijn trouwens bijna allemaal voorbeelden om mbv een formpje op een PHP/Apache webpagina een user te authenticeren tegen een Windows AD. Dat is ook niet zo moeilijk en niet wat de TS wil.

> IPadres gaat trouwens ook niet goed bij gebruik van DHCP.
> ActiveX oplossing werkt uiteraard ALLEEN met Internet Explorer :(.

[ Voor 98% gewijzigd door BCC op 07-02-2006 15:49 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Tenzij je Kerberos- of NTLM authenticatie doet mag de server helemaal niet weten welke username de client lokaal heeft.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

Dat is niet het punt nu. Op een internet pagina wil je dit uiteraard niet, maar in een intranet wel.

[ Voor 6% gewijzigd door BCC op 07-02-2006 15:50 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
De search levert weinig bruikbaars op, LDAP en een AD zijn ze hier te lui voor om die aan te vullen en te gebruiken, ...

Alles is hier IE only, dus ActiveX zou wel moeten kunnen. Het blijft echter een risico om unsafe ActiveX componenten toe te laten...

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Misschien een logonscript wat de username naar de server stuurt en deze zo koppeld aan de pc? Hierbij ga ik dus uit van een beschermde omgeving, waar dus niet een willekeurig persoon een dergelijke request naar de server kan doen.

[ Voor 43% gewijzigd door djluc op 07-02-2006 15:52 ]


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

Ik vind dat eigenlijk nog steeds een "HACK". Zorg dan in iedergeval dat je je ActiveX component netjes gesigned hebt, zodattie safe is.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

djluc schreef op dinsdag 07 februari 2006 @ 15:51:
Misschien een logonscript wat de username naar de server stuurt en deze zo koppeld aan de pc? Hierbij ga ik dus uit van een beschermde omgeving, waar dus niet een willekeurig persoon een dergelijke request naar de server kan doen.
Het is dan wel heel erg makkelijk om je collega/baas te impersonaten.
- Je forced je IP even op die van je Baas / stopt zijn kabel even in je laptop
- Je roept netjes het scriptje nog een keer aan: http://intranet/register.php?ip=10.0.0.100?username=baas

[ Voor 21% gewijzigd door BCC op 07-02-2006 16:02 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
BCC schreef op dinsdag 07 februari 2006 @ 15:58:
[...]

Het is dan wel heel erg makkelijk om je collega/baas te impersonaten.
- Je forced je IP even op die van je Baas / stopt zijn kabel even in je laptop
- Je roept netjes het scriptje nog een keer aan: http://intranet/register.php?ip=10.0.0.100?username=baas
De rest van mijn post ook gelezen? Je hebt het dan over beheerder omgevingen waar je dus alle systemen volledig dicht hebt staan en je geen IP krijgt op andere computers die er niet thuishoren.

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

djluc schreef op dinsdag 07 februari 2006 @ 16:04:
[...]
De rest van mijn post ook gelezen?
Ja, dan vervalt punt 1, maar punt 2 blijft gewoon bestaan. Je kan dat niet dichtgooien omdat het systeem tijdens logon zichzelf authenticeert. Dat betekend dat je dat later rustig nog een keer kan doen. Alles wat je post naar een Website kun je zelf aanpassen. Je krijgt hoogstens wat security by obscurity,maar daar zal geen enkel bedrijf genoegen mee nemen.

[ Voor 19% gewijzigd door BCC op 07-02-2006 16:07 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

BCC schreef op dinsdag 07 februari 2006 @ 15:50:
Dat is niet het punt nu. Op een internet pagina wil je dit uiteraard niet, maar in een intranet wel.
Vertrouw jij mensen op een intranet meer dan op internet? :?

Tis een beveiligingsgat, punt. Zonder Kerberos- of NTLM-authenticatie mag een server niet weten wat de client op zijn eigen puter doet en wie hij daar is. De rest van wat er hier genoemd wordt zijn hacks.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

BCC schreef op dinsdag 07 februari 2006 @ 15:40:
Ik heb anders nog nooit een nette/werkende implementatie gezien (vanaf een *nix bak dan, IIS heeft wel wat truuks aanboord hiervoor).
Ik wel, sterker nog, ik heb er laatst nog 1 gimplementeerd. Hierbij heb ik de NTLM Authenticatie uit de sandbox van Acegi gebruikt. Deze maakt gebruik van JCifs. Het is echter wel een java oplossing mbv filters. Om dit in php op te lossen zal een stuk moeilijker worden. Filters is 1 van die honderden dingen die php mist en die het webdevvers in J2ee en .Net een stuk makkelijker maakt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

curry684 schreef op dinsdag 07 februari 2006 @ 16:07:
[...]

Vertrouw jij mensen op een intranet meer dan op internet? :?

Tis een beveiligingsgat, punt. Zonder Kerberos- of NTLM-authenticatie mag een server niet weten wat de client op zijn eigen puter doet en wie hij daar is. De rest van wat er hier genoemd wordt zijn hacks.
Met ActiveX is het goed mogelijk te controleren wie de ingelogde gebruiker is en op basis van die gegevens verder te werken. Je moet dan echter de beveiliging van IE wel omlaag schroeven voor het intranet. (Anders kun je activeX controls niet gebruiken)

Dit is dus inderdaad een beveiligingsgat, maar niet groter dan dat mensen hun computer aan laten staan als ze naar de koffieautomaat lopen. Daarnaast zijn er vele voorbeelden van programma's die op basis van de windows authorisaties rechten verdelen zonder dat de gebuiker nogmaals hoeft in te loggen. Dus ja, ik vertrouw mensen op een intranet meer dan externen.

Maar ja, dat wil de TS dus niet. En dan is een seamless logon eigenlijk niet goed te implementeren.

[ Voor 6% gewijzigd door Verwijderd op 07-02-2006 16:32 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op dinsdag 07 februari 2006 @ 16:29:
[...]

Dit is dus inderdaad een beveiligingsgat, maar niet groter dan dat mensen hun computer aan laten staan als ze naar de koffieautomaat lopen.
Daar hebben ze domain policies voor die na 4 minuten je workstation locken ;)
Daarnaast zijn er vele voorbeelden van programma's die op basis van de windows authorisaties rechten verdelen zonder dat de gebuiker nogmaals hoeft in te loggen.
Ik heb er zelfs een centraal framework voor ontwikkeld dat binnen een onzer Nederlandse multinationals dagelijks in diverse applicaties wordt gebruikt. Wel via Windows- en IIS-integrated Kerberos-authenticatie. Niet via ranzige pingbacks naar machines of ActiveX rotzooi waar je security voor naar beneden moet schroeven.
Dus ja, ik vertrouw mensen op een intranet meer dan externen.
Vind ik een foute aanname. Zolang laptops op een intranet soms ook aan internet hangen, er geen perfecte virusscanners bestaan, en mensen op workstations rechten hebben om de CD-lade te openen cq. dingen te downloaden van internet vertrouw ik in beginsel een intranet net zo weinig als internet, misschien nog wel minder omdat intranet de valse sfeer van betrouwbaarheid wekt.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Als dat de aanname moet zijn, vraag ik me af wie in hemelsnaam dat personeel heeft aangenomen. Blind vertrouwen in het personeel hoef je niet te hebben, maar ik vind wel dat je een controleerbare gebruikersgroep in een gecontroleerde omgeving méér zou moeten vertrouwen dan Jan en alleman.

En niet ieder bedrijf is een multinationaal die het geld ervoor heeft om een complete infrastructuur hiervoor op te bouwen.

[ Voor 18% gewijzigd door Verwijderd op 07-02-2006 17:19 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op dinsdag 07 februari 2006 @ 17:16:
Als dat de aanname moet zijn, vraag ik me af wie in hemelsnaam dat personeel heeft aangenomen. Blind vertrouwen in het personeel hoef je niet te hebben, maar ik vind wel dat je een controleerbare gebruikersgroep in een gecontroleerde omgeving méér zou moeten vertrouwen dan Jan en alleman.
Het blijven users. Users zijn en blijven stom.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

curry684 schreef op dinsdag 07 februari 2006 @ 17:33:
[...]
Het blijven users. Users zijn en blijven stom.
Eeh, ik zou eerder zeggen: Als er IEMAND is die behoefte heeft om een login voor een intranet te omzeilen dan is het wel een User. En laten die nou net trusted zijn :X

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

Verwijderd

Je vertrouwt ze, of je vertrouwt ze niet. Als je ze niet vertrouwt, moet je ze niet aannemen. Vertrouw je ze wel, betekent dat automatisch dat je ze meer toegang geeft dan externen. Hoever die toegang gaat, is weer een andere zaak. Maar het niet vertrouwen van je eigen werknemers is geen oplossing voor het probleem dat er misschien onbetrouwbare elementen tussen zitten.

Werknemers kunnen het bedrijfsproces op vele manieren frustreren die niets met het intranet te maken hebben. Blokkeer je dat ook allemaal? Nee! Zonder vertrouwen in het eigen personeel kan een bedrijf niet functioneren. Dus waarom zo panisch over het intranet waar vaak niet eens de belangrijkste gegevens van het bedrijf op staan?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op woensdag 08 februari 2006 @ 01:41:
Maar het niet vertrouwen van je eigen werknemers is geen oplossing voor het probleem dat er misschien onbetrouwbare elementen tussen zitten.
Ik vertrouw m'n vriendin ook, maar no way dat ze het domain admin password van de server thuis krijgt. Vertrouwen in goede intenties is een ding, vertrouwen op dat het ook allemaal goed gaat is een tweede.
Werknemers kunnen het bedrijfsproces op vele manieren frustreren die niets met het intranet te maken hebben. Blokkeer je dat ook allemaal? Nee! Zonder vertrouwen in het eigen personeel kan een bedrijf niet functioneren. Dus waarom zo panisch over het intranet waar vaak niet eens de belangrijkste gegevens van het bedrijf op staan?
Ik heb intranetservers down zien gaan omdat mensen laptops met MSBlast van buitenaf hadden meegenomen en op het LAN ingeplugd. Bleek dat die OpenVMS servers ook niet zo goed tegen malformed RPC-requests op TCP/137 konden. Als ze nu gewoon normaal wantrouwen hadden gehad en die poort ook op het intranet gefirewalled hadden was er niets aan het handje geweest, en het ging om productieservers dus was wel even een foutje van een paar ton. Dat bedoel ik met intranet nog minder vertrouwen dan internet.

En dan heb ik het nog niet over de werknemer die zojuist een slechte beoordeling heeft gehad van z'n baas.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Het is NTLM geworden, in PHP vrij goed te implementeren mits wat "doe het zelfven" met headers.

Enige nadeel: als je in je browser "Prompt for user and password" hebt aanstaan, krijg je (ook bij invoer van de juiset gegevens) niks in je NTLM header teruggestuurd. Maar da's niet zo enorm erg.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

heb je al gedacht aan (schrik niet) NETBIOS? Daar kan je ook de windows username mee uitlezen voor zover ik weet :)

edit:
stukje gevonden op zend.com

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
yeah it is possible and complicate. Try this code

?php
    /*
     Getting netbios info
     CopyLeft 2002 (GNU GPL V2) by polo
    */     
    
    error_reporting(E_ALL);
    
    /* get the ip of the client */
    if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
 {
     $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
     $ip = $_SERVER["REMOTE_ADDR"]; 
    }    
    /* send a "special" packet */
    $fp = fsockopen('udp://'.$ip, 137);
    fwrite($fp, "\x80b\0\0\0\1\0\0\0\0\0\0 
CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\1");

    /* wait 2 secs, and get the data */
    socket_set_timeout($fp, 2);
    $data = fread($fp, 256);
    
    /* get netbios records number */
    $nbrec = ord($data[56]);
    
    /* display nebios records : the username is a record of type 3 */
   for($i = 3; $i <=3; $i++) {    $offset = 18 * $i;
echo ("your login is:");
printf ("%02d  %02X %s",$i,ord($data[72 + 
$offset]),trim(substr($data, 57 + $offset, 15)));
?>

//check anyway the syntax if i did not forget a "," 
// or whatever

[ Voor 96% gewijzigd door SchizoDuckie op 21-02-2006 16:06 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Die had ik ook gevonden, lokaal draait die goed, maar op de server komt er geen output (zou een firewall issue kunnen zijn).

Via NTLM werkt hij goed momenteel. Voorbeeldje op http://ng.secusquad.com/wiki/index.php/PHP_NTLM_GET_LOGIN , er zit in die header ook nog een hostnaam welke in dit script niet wordt opgevangen (meer info: zoek effe de RFC van NTLM)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Kan je niet gewoon je Linux userfile aan .htaccess hangen? Dan kan je middels $_SERVER[' PHP_AUTH_USER'] oid de username (en een andere variabele voor het wachtwoord) deze gegevens afvangen... ;) Om de boel dan nog uniek(er) te maken, kan je er ook nog een $_SERVER[' REMOTE_ADDR'] of zo erbij gooien... ;)

Of zeg ik nu hetzelfde als Curry en Janoz? O+

[ Voor 10% gewijzigd door CH4OS op 22-02-2006 10:19 ]


  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 00:11
Heb je niet ook nog ergens een Novell server waarop users al geauthenticeerd zijn? Dan zou je met Ichain wat kunnen doen.

Ik zit overigens met het zelfde probleem , maar heb het opgelost door (wij gebruiken geen Ichain dus) users in te laten loggen (authenticeren via secured ldap tegen NDS).

Dat is voor mij momenteel de enige manier om 100% zeker te zijn wie wie is.. voor de overige zaken werkt bij mij het Netbios get_username goed , maar niet foutloos. Ik zou er zeker niet op vertrouwen voor authenticatie.
Pagina: 1