Possibili modi di sfruttare PHP register_globals [closed]

0

Ho uno script PHP che esegue una serie di comandi per verificare che un utente sia registrato.

if (( isset ($password) && $password!="" && auth($password,$hidden_password)==1) || (is_array($_SESSION) && $_SESSION["logged"]==1 ) ){
    $aff=display("you're logged in);
} else {
    $aff=display("you're not logged in");
}

Se register_globals è impostato su 1 nel mio php.ini , e voglio iniettare qualcosa nell'URL per ottenere l'autenticazione ogni volta, qualunque sia la password, cosa posso fare?

Ho già provato:

  • site.com/page.php?password=pass&logged=1
  • site.com/page.php?password=pass&_SESSION["logged"]=array("1")
  • site.com/page.php?password=pass&hidden_password=pass == > restituisce " non hai effettuato l'accesso " ma il fatto è che non voglio sovrascrivere Hidden_Password (ne ho bisogno!)
  • Ho provato a giocare anche con i cookie e altre intestazioni http, ma senza risultati

Qualche suggerimento?

    
posta TheEnglishMe 26.01.2014 - 20:14
fonte

1 risposta

2

Per correggere questa vulnerabilità specifica devi chiamare start_session() prima di utilizzare una variabile di sessione. In questo modo, PHP avvierà $_SESSION e sovrascriverà i valori iniettati. Per il valore $hidden_password , questo deve essere inizializzato da qualche parte nell'applicazione e quindi non può essere controllato.

In generale register_globals dovrebbe essere disabilitato! Causa altri problemi di sicurezza e verrà rimosso dalla lingua

    
risposta data 27.01.2014 - 02:35
fonte

Leggi altre domande sui tag