[hack] web server

Pietro Saccone pedro.s@neomedia.it
Lun 17 Gen 2011 16:37:31 CET


Allora, ti spiego un pò come rimediare ai problemi.
Intanto buttiamo quello script di autenticazione che hai scaricato e
vediamo di farne uno semplice insieme utilizzando il php.

Quello che vogliamo è che un utente entri in una sezione del nostro sito
e si logghi per vedere il contenuto dei file....

presumendo che la cartella sia archivio, creiamo un file index.php che
contenga questo codice:

<?php
session_start();        // avvia una sessione per l'autenticazione

if (isset($_SESSION['user'])) { //controllo se l'utente è già loggato

header('location:pagina_dello_script_che_lista.php'); //se lo è lo
riamando alla pagina dello script

}

else {

header('location:login.php'); //altrimenti lo rimando al login

}

?>

ed ecco la pagina login.php

<?php
session_start();
if (!isset($_SESSION['user'])) //controllo se non è loggato, se non lo è
mostro il form per il login
  {

print "<table><form action=autentica.php method=post>"; //mando il
risultato del mio form alla pagina autentica.php
print "<tr><td></td><td></td></tr>";
print "<tr><td align=right>User:</td><td> <input type=text
name=user></td></tr>";
print "<tr><td align=right>Password:</td><td> <input type=password
name=password></td></tr>";
print "<tr><td></td><td><input type=submit value=Login> <input
type=reset value=Reset></td></tr>";
print "</form></table>";
}
else
{
header('location:pagina_dello_script_che_lista.php'); //altrimenti lo
riamando alla pagina dello script
}

e la pagina autentica.php

<?php
session_start();


if (isset($_SESSION['user'])) { //controllo se l'utente è già loggato

header('location:pagina_dello_script_che_lista.php'); //se lo è lo
riamando alla pagina dello script

}
else {                                                     //altrimenti
$user=$_POST['user'];                          //leggo user e password
dal form
$password=$_POST['password'];

if (!$user)                                 //se non ho inserito la user
lo rimando al login
{
header('location:login.php');
}

else                                                
{
$usercontr = "user";                            //la nostra user
$passcontr = "pass";                   //e la pass

if (($user==$usercontr)&&($password==$passcontr))      //confronto le
credenziali inserite nel form con quelle registrare in questo file
{                                                        //se coincidono
$_SESSION['user']=$user;                 //assegno una variabile alla
sessione con il nome utente, questo mi indica che è avvenuto
correttamente il login
                                                          //basta far
leggere questa variabile agli script php per verificare l'effettivo login
header('location:pagina_dello_script_che_lista.php');          //e lo
rimando allo script
}
else
{
die("Utente o Password errati<br><a href=login.php>Ritenta</a>");
}
}
}
?>

Adesso non devi fare altro che inserire questo pezzo di codice prima di
qualunque pagina php, compreso il file zls.php (subito dopo <?php):

if (!isset($_SESSION['user']))
  {
    header('location:login.php');
    exit;
  }

Non fa altro che controllare se l'utente è loggato, se non lo è lo
rimanda alla pagina di login.

Per quanto riguarda il problema del list di apache, intanto il problema
lo risolvi già quando crei il file index.php, perchè in pratica apache
se trova questo file non fa il list....
Però per farti capire come non farlo fare:

crea all'interno della cartella desiderata un file chiamato .htaccess

e dentro scrivi

Option -Indexes

Salvi e sei apposto!

Non fa altro che dire ad apache di non utilizzare il modulo indexes
(quello che lista) in quella determinata cartella

Nel prossimo capitolo ti spiego come usare l'autenticazione interna di
apache, che è molto più semplice da gestire e più sicura! ;-)

Spero ti sia stato di aiuto, e sopratutto che funzioni tutto :-)

ciao



Il 17/01/2011 09:45, Pietro Saccone ha scritto:
> Purtroppo devo dirti che hai sbagliato qualcosina.....che in realtà è
> molto grave!
> Ma non è colpa tua :-) sei alle prime armi
> tu non hai fatto altro che fare una pagina di accesso che ti
> reindirizza ad una pagina dove poi vai a puntare uno script in php.....
> Io non so come funzioni lo script di autenticazione che hai fatto, ma
> sicuramente lavora con le sessioni....ma nello script che ti elenca i
> file non è presente sicuramente nessun richiamo al sistema di
> autenticazione (cioè la verifica che l'utente sia veramente loggato) e
> quindi chiunque conoscendo il percorso del link può leggere tutto
> anche senza loggarsi....
> es: se senza fare il login punti a
> http://79.32.123.248/archivio/ab12cd/zls.php guarda che succede....
> Altro grave errore è che non hai protetto le directory dal list
> interno di apache....mi spiego:
> se punti a http://79.32.123.248/archivio/ab12cd/ o
> http://79.32.123.248/archivio/ hai il list di tutto il contenuto....
> (questa opzione in apache si chiama Indexes)
> Quindi anche ammesso che tu abbia fatto un buon sistema di
> autenticazione, chiunque può comunque vedere i file presenti, e nel
> caso di file pdf, immgini o altro, può scaricarli e visionarli.....
> Ovviamente sei alle prime armi e queste cose devi apprenderle come
> starai facendo adesso.....
> Adesso sono a lavoro e non posso spiegarti tanto, di pomeriggio o se
> trovo 10 minuti ti spiego un pò di cose e come rendere sicure quelle
> cartelle....
> In ogni caso complimenti per aver messo su tutto questo ;-)
>
> ciao
>
>
> m.banda@alice.it ha scritto:
>> Dopo un po' di prove sono arrivato a questo punto:
>>
>> installare apache2
>> modificare la pagina di benvenuto
>> fare una prova di accesso ad un'area riservata
>> far listare il contenuto dell'area riservata da uno script .php
>>  (non fatto da me tengo a precisare ho solo collegato lavori già
>> pronti all'uso)
>>
>> l'indirizzo è: 79.32.123.248
>>
>> mi chiedo però quanto questo sistema di accere ad un' area riservata
>> sia efficace
>> nel senso di sicurezza e riservatezza dei dati contenuti nelle
>> cartelle che il .php lista?????
>>
>> ciao
>> mb
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> hack mailing list
>> hack@firenze.linux.it
>> https://lists.firenze.linux.it/mailman/listinfo/hack
>>   
> _______________________________________________
> hack mailing list
> hack@firenze.linux.it
> https://lists.firenze.linux.it/mailman/listinfo/hack





Maggiori informazioni sulla lista golem-hack