crappkid Skrevet 20. november 2013 Del Skrevet 20. november 2013 Hei.. Har opplevd et merkelig fenomen. Byttet nylig server fra en unmanaged vps server til en managed server. Koden nedenfor virker 100% på 2 andre servere jeg har: <?php $d = isset($_GET['d']) ? $_GET['d'] : ''; ?> <html> <head> <title>WHOIS <?php echo $d; ?></title> </head> <body> <pre> <?php if(!empty($d)){ exec("whois ".escapeshellarg($d), $results); if(isset($_GET['debug'])){ print_r($results); } $server = ''; foreach($results as $result){ if(stripos($result, 'whois server:')){ $server = trim(str_replace('whois server:','',strtolower($result))); } } if(!empty($server)){ passthru("whois -h ".escapeshellarg($server)." ".escapeshellarg($d)); }else{ foreach($results as $result){ echo $result.PHP_EOL; } } } ?> </pre> </body> </html> Koden (whois) virker ikke på den nye managed serveren min. Jeg får ikke opp noe som helst. Hvorfor? Lenke til kommentar
Araho Skrevet 20. november 2013 Del Skrevet 20. november 2013 Vil tro at OSet på den nye serveren din ikke har installert whois (enkelte windows-installasjoner, f.eks), eller at det ikke ligger i PATH, slik at å bare kjøre exec("whois [...]"); ikke funker.Har du tilgang til SSH eller lignende kan du jo logge deg inn og prøve å kjøre whois direkte? Lenke til kommentar
Crowly Skrevet 20. november 2013 Del Skrevet 20. november 2013 (endret) Bytt ut passthru() med system() og legg til kode for å sjekke output. Hvis whois ikke finnes vil OSet gi en feilmeldingen, system() vil returnere denne outputen. Endret 20. november 2013 av Crowly Lenke til kommentar
nettforfullt Skrevet 28. november 2013 Del Skrevet 28. november 2013 Hvilken PHP versjon bruker du? Lenke til kommentar
TheClown Skrevet 3. desember 2013 Del Skrevet 3. desember 2013 NB: exec-metoden din er åpen for å hacke hele serveren din. Det der er et stort sikkerhetshull. Lenke til kommentar
Driiper Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 NB: exec-metoden din er åpen for å hacke hele serveren din. Det der er et stort sikkerhetshull. Skal ikke være uenig at exec er litt ymse, men det er da på ingen måte et sikkerhetshull? Lenke til kommentar
rockPaperScissors() Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 Er serveren satt opp med safe mode påslått? Lenke til kommentar
Driiper Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 Er serveren satt opp med safe mode påslått? Om det er satt opp bør han oppdatere PHP'en, de aller fleste distroer har vell forsåvidt 5.4.x ++ Lenke til kommentar
rockPaperScissors() Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 CentOS/RHEL 6.5 og Ubuntu 12.04 LTS kommer med PHP versjon 5.3 som standard. Til og med webhotellet mitt bruker PHP 5.3, men det sistenevnte er vel ikke noen overraskelse. Lenke til kommentar
rockPaperScissors() Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 Hva mener du? Lenke til kommentar
Driiper Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 Ikke noe spesiell mening , Har brukt latest (wheezy, saucy) en stund nå så tenkte ikke over å skjekke LTS versjonene. Men on topic så tror jeg dette har lite med safe mode å gjøre, og heller TS ikke har tilgang til whois e.l Lenke til kommentar
rockPaperScissors() Skrevet 7. januar 2014 Del Skrevet 7. januar 2014 Godt poeng, whois behøver ikke å være installert engang. Lenke til kommentar
TheClown Skrevet 28. februar 2014 Del Skrevet 28. februar 2014 NB: exec-metoden din er åpen for å hacke hele serveren din. Det der er et stort sikkerhetshull. Skal ikke være uenig at exec er litt ymse, men det er da på ingen måte et sikkerhetshull? Selvsagt er det det. Du sanitizer ikke input fra get. Hva skjer om jeg skriver ;rm -rf / Jo, hele serveren din får alt innholdet sitt slettet Lenke til kommentar
Ernie Skrevet 2. mars 2014 Del Skrevet 2. mars 2014 NB: exec-metoden din er åpen for å hacke hele serveren din. Det der er et stort sikkerhetshull. Skal ikke være uenig at exec er litt ymse, men det er da på ingen måte et sikkerhetshull? Selvsagt er det det. Du sanitizer ikke input fra get. Hva skjer om jeg skriver ;rm -rf / Jo, hele serveren din får alt innholdet sitt slettet Ehh... kan du utdype hva du mener her? Vil ikke escapeshellarg forhindre slikt da? Iallfall hos meg gir escapeshellarg(";rm -rf /") tilbake ';rm /' Når det er sagt så er jeg umåtelig skeptisk til å putte inn brukerdata rett inn i exec og tilsvarende funksjoner. Man bør i aller høyeste grad verifiser at dataene inn er der man ønsker de skal være. Lenke til kommentar
GeirGrusom Skrevet 3. mars 2014 Del Skrevet 3. mars 2014 Jeg vil påstå at det generelt ikke er noen god idé å bruke system eller exec. Det finnes flere implementasjoner av whois for PHP der du slipper å kalle operativsystemkommandoer overhode, så jeg vil tørre å påstå at det er en bedre idé å bruke dem. Her er en implementasjon Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå