Bash script para medir el tiempo de sesión de una web


Bash script icono Cuando estamos realizando una auditoria web hay una parte importante que es el manejo de las sesiones de los usuarios. Esta parte se puede hacer a mano, entrando cada x tiempo a la web para ver si sigue activa o através de este script.

El código del script es este:

#!/bin/bash
# Controls user session

declare session=$1
declare url=$2
declare okFlag=$3
declare -a timeWaitMinuts=( 0 1 10 30 60 90 )
declare -i loop=0
declare -i count=0

function searchOcurrence(){
    curl -H "Cookie: $1" "$2" 2> /dev/null | grep "$3" > /dev/null
    return $?
}

while [ "$loop" -eq 0 ]; do
    sleep ${timeWaitMinuts[$count]}"m"
    searchOcurrence "$session" "$url" "$okFlag"
    loop=$?
    echo "Time check session:"$(date)
    let count=count+1
    if [ "$count" -gt 4 ];then
        count=0
    fi
done

Básicamente lo que hace es utilizar una sesión ya empezada a través del id de sesión que se encuentra en la cookie y junto con la url a la que hay que hacer la petición hará falta un texto que identifique que la sesión está activa. Un ejemplo de uso sería el siguiente.

bash csc.sh "security_level=0; PHPSESSID=rshq58ikkh7evl0v61u5dd0421" "http://webauditable.com/users/home.php" "Hello Sample User"

Esto mostrará la siguiente salida en la consola:

Time check session:Sat Dec 16 13:48:27 CET 2017
Time check session:Sat Dec 16 13:49:27 CET 2017
Time check session:Sat Dec 16 13:59:27 CET 2017

Si el script acaba quiere decir que ha terminado la sesión. Como podemos comprobar con la salida la primera comprobación pone que la sesión sigue activa un minutos después, en la tercera 10 minutos después sigue activa. Si la sesión siguiera activa mostrará la fecha.

Si se quieren modificar los tiempos de comprobación ( actualmente son 0,1,10,30,60,90 minutos de espera ) se pueden tocar los valores del array "timeWaitMinuts".