Gå til innhold

PHP-kode virker på en server og ikke på en annen


Anbefalte innlegg

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
Videoannonse
Annonse

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
  • 2 uker senere...
  • 1 måned senere...
  • 1 måned senere...

 

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

 

 

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...