ataques weak session ids

Iniciado por tecasoft, 1 Diciembre 2017, 13:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

tecasoft

buenas ante todo gracias de antemano, busco un experto en ataques a nivel web y que me pueda hechar una mano, tengo una serie de problemas respecto a los ataques WEAK SESSION IDs he utiizado la herramienta DVWA y todo correcto a la hora de atacar, pero si quiero proteger mi web: utilizo solo $_SESSION para el usuario y contraseña y la contraseña va cifrada en sha512, tendria que hacer algo al respecto sobre esas $_SESSION porque la web me crea un >>>>>>>>>>>>>>>>>>>> PHPSESSID   con CONTENT: 3hhmi0d138ist11178q0ovt7a5

lo estoy haciendo en localhost
y con el burp suite he sido capaz de superar los niveles de DVWA pero nose si deberia aplicar algo al respecto sobre esa sesion o solo es si utilizas $_COOKIE ?

espero que me guieis gracias
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

engel lex

aclaracion: la contraseña no está cifrada, sha256 es un hash

digamos que tienes 3 niveles de control con respecto a sesiones, de más alto a más bajo

1- session_start(): el normal de siempre, simplemente usarlo e iniciar sesión
2- session_id(): te permite establecer el id de sesion a mano ejemplo de uso
Código (php) [Seleccionar]
$sid = md5('numero al azar');   
session_id($sid);
session_start();

3- $_COOKIE + MySQL: este metodo es establecer en una tabla temporal de MySQL la session y manejarla tu totalmente a mano desde COOKIE

ojo, control != seguridad

con lo que respecta a seguridad las capas de seguridad serían (cada vez más radical pudiendose hacer hasta molesta para el usuario), se pueden aplicar independiente o apiladas

-establecer una sesión (lo básico de arriba)
-validar sesión contra ip
-validación de sesión por huella de navegador por $_SERVER
-validación de sesión por huella de navegador por <script>
-cambiar id por petición hecha

espero esto te sirva de algo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tecasoft

te refieres a esto:

Código (php) [Seleccionar]

if ($_SERVER['REQUEST_METHOD'] == "POST") {
   $cookie_value = sha1(mt_rand() . time() . "Impossible");
   setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}


pero yo solo utilizo el PHPSESSID, ya que no utiizo $_COOKIE de momento.

solo utilizo $_SESSION['usuario'] y $_SESSION['contrasena']

?
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

engel lex

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}


no se de donde sacaste eso... pero no del todo, me referí a múltiples cosas

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tecasoft

entonces utilizar esto que tal iria? pueden hackearte si saben id de session del PHPSESSID?:

Código (php) [Seleccionar]


$sid = sha1('numero al azar');   
session_id($sid);
session_start();


como lo aplicarias tu para protegerte un poco las $_SESSION[], un ejemplo me vendria bien para calentar motores. Gracias
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

engel lex

si se llevan el PHPSESSID y no tienes algún metodo de confirmación, secuestrarán la sesión... lo primero para evitar esto es validar sesión contra ip, si la conexión no es la misma ip, ignoras la peticion
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tecasoft

y eso como lo podria hacer? porque esto verde. Gracias
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

engel lex

al iniciar la sesión guardas la ip como variable de sesion, y luego todas las conexiones las comparas, si no es la misma ip, destruyes la sesion

Código (php) [Seleccionar]
// en login
$_SESSION["ip"]=$_SERVER["REMOTE_ADDR"];


en carga de pagina
Código (php) [Seleccionar]
if($_SESSION["ip"] != $_SERVER["REMOTE_ADDR"]) destruir_sesion();
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tecasoft

pero hace falta guardar en una base de datos estilo y que verifique en cada pagina esto al iniciar, estaria haciendolo bien? o me faltaria comprobar algo mas la seguridad?:

Código (php) [Seleccionar]

<?
if (mysqli_query("select * from usuarios_admin   WHERE ip = '$_SERVER[REMOTE_ADDR]' and user='$user' AND pass='$pass')

echo "Estas logueado";
?>
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

tecasoft

Cita de: tecasoft en  1 Diciembre 2017, 15:06 PM
pero hace falta guardar en una base de datos estilo y que verifique en cada pagina esto al iniciar, estaria haciendolo bien? o me faltaria comprobar algo mas la seguridad?:

Código (php) [Seleccionar]

<?
if (mysqli_query("select * from usuarios_admin   WHERE ip = '$_SERVER[REMOTE_ADDR]' and user='$user' AND pass='$pass')

echo "Estas logueado";
?>


vale ya voy pillandolo, es decir trabajo con sessiones y sin recurrir a una base de datos no haria falta verdad?
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits