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
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
$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
te refieres a esto:
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']
?
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
entonces utilizar esto que tal iria? pueden hackearte si saben id de session del PHPSESSID?:
$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
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
y eso como lo podria hacer? porque esto verde. Gracias
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
// en login
$_SESSION["ip"]=$_SERVER["REMOTE_ADDR"];
en carga de pagina
if($_SESSION["ip"] != $_SERVER["REMOTE_ADDR"]) destruir_sesion();
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?:
<?
if (mysqli_query("select * from usuarios_admin WHERE ip = '$_SERVER[REMOTE_ADDR]' and user='$user' AND pass='$pass')
echo "Estas logueado";
?>
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?:
<?
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?
exacto, literalmente como te di el ejemplo