Una tarea que todo SysAdmin debería realizar de forma periódica es revisar los logs del servidor web (además de otros servicios). Centrándonos en aquellas entradas del log que representan intentos de penetración vemos que se centran en sistemas o frameworks conocidos. Veamos aquí un ejemplo de un fragmento de los logs de un servidor web hace pocos días:
91.230.225.131 - - [15/Oct/2023:01:30:01 +0000] "POST /vendor/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 4411
185.192.71.173 - - [15/Oct/2023:01:30:01 +0000] "POST /vendor/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 4413
91.230.225.117 - - [15/Oct/2023:01:30:02 +0000] "POST /phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 4413
91.230.225.121 - - [15/Oct/2023:01:30:02 +0000] "POST /phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 4412
185.192.71.185 - - [15/Oct/2023:01:30:02 +0000] "POST /phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 4411
185.192.71.182 - - [15/Oct/2023:01:30:03 +0000] "POST /phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 4412
185.192.71.170 - - [15/Oct/2023:01:30:04 +0000] "POST /lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 4411
185.92.25.56 - - [15/Oct/2023:01:30:04 +0000] "POST /lib/phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 4412
185.192.71.180 - - [15/Oct/2023:01:30:25 +0000] "-" 408 3897
91.230.225.130 - - [15/Oct/2023:01:30:33 +0000] "GET /.git/config HTTP/1.1" 404 4412
185.92.25.60 - - [15/Oct/2023:01:30:34 +0000] "GET / HTTP/1.1" 200 4214
185.192.71.172 - - [15/Oct/2023:01:30:34 +0000] "GET /.DS_Store HTTP/1.1" 404 4412
185.92.25.131 - - [15/Oct/2023:01:30:35 +0000] "GET /.env HTTP/1.1" 404 4411
185.192.71.181 - - [15/Oct/2023:01:30:35 +0000] "POST /.env HTTP/1.1" 404 4413
91.230.225.133 - - [15/Oct/2023:01:30:36 +0000] "GET /.env.save HTTP/1.1" 404 4412
185.92.25.60 - - [15/Oct/2023:01:30:36 +0000] "POST /.env.save HTTP/1.1" 404 4412
91.230.225.134 - - [15/Oct/2023:01:30:37 +0000] "GET /.env.old HTTP/1.1" 404 4412
91.230.225.129 - - [15/Oct/2023:01:30:37 +0000] "POST /.env.old HTTP/1.1" 404 4412
91.230.225.123 - - [15/Oct/2023:01:30:38 +0000] "GET /.env.prod HTTP/1.1" 404 4413
185.192.71.181 - - [15/Oct/2023:01:30:38 +0000] "POST /.env.prod HTTP/1.1" 404 4413
185.92.25.57 - - [15/Oct/2023:01:30:39 +0000] "GET /.env.production HTTP/1.1" 404 4413
185.92.25.60 - - [15/Oct/2023:01:30:39 +0000] "POST /.env.production HTTP/1.1" 404 4413
185.92.25.61 - - [15/Oct/2023:01:30:40 +0000] "GET /.env.development HTTP/1.1" 404 4412
185.192.71.170 - - [15/Oct/2023:01:30:40 +0000] "POST /.env.development HTTP/1.1" 404 4412
185.92.25.59 - - [15/Oct/2023:01:30:41 +0000] "GET /laravel/.env HTTP/1.1" 404 4411
91.230.225.130 - - [15/Oct/2023:01:30:41 +0000] "POST /laravel/.env HTTP/1.1" 404 4412
185.192.71.168 - - [15/Oct/2023:01:30:42 +0000] "GET /admin-app/.env HTTP/1.1" 404 4411
91.230.225.121 - - [15/Oct/2023:01:30:42 +0000] "POST /admin-app/.env HTTP/1.1" 404 4413
185.92.25.61 - - [15/Oct/2023:01:30:43 +0000] "GET /api/.env HTTP/1.1" 404 4413
185.192.71.181 - - [15/Oct/2023:01:30:43 +0000] "POST /api/.env HTTP/1.1" 404 4412
91.230.225.133 - - [15/Oct/2023:01:30:44 +0000] "GET /app/.env HTTP/1.1" 404 4412
185.92.25.52 - - [15/Oct/2023:01:30:45 +0000] "POST /app/.env HTTP/1.1" 404 4413
185.92.25.49 - - [15/Oct/2023:01:30:45 +0000] "GET /development/.env HTTP/1.1" 404 4412
185.92.25.63 - - [15/Oct/2023:01:30:46 +0000] "POST /development/.env HTTP/1.1" 404 4411
185.192.71.169 - - [15/Oct/2023:01:30:46 +0000] "GET /apps/.env HTTP/1.1" 404 4412
185.192.71.173 - - [15/Oct/2023:01:30:47 +0000] "POST /apps/.env HTTP/1.1" 404 4412
185.92.25.52 - - [15/Oct/2023:01:30:47 +0000] "GET /cp/.env HTTP/1.1" 404 4412
185.92.25.55 - - [15/Oct/2023:01:30:48 +0000] "POST /cp/.env HTTP/1.1" 404 4412
91.230.225.121 - - [15/Oct/2023:01:30:48 +0000] "GET /private/.env HTTP/1.1" 404 4412
185.192.71.185 - - [15/Oct/2023:01:30:49 +0000] "POST /private/.env HTTP/1.1" 404 4413
185.92.25.51 - - [15/Oct/2023:01:30:49 +0000] "GET /system/.env HTTP/1.1" 404 4413
91.230.225.133 - - [15/Oct/2023:01:30:50 +0000] "POST /system/.env HTTP/1.1" 404 4413
185.192.71.177 - - [15/Oct/2023:01:30:50 +0000] "GET /docker/.env HTTP/1.1" 404 4412
185.92.25.61 - - [15/Oct/2023:01:30:50 +0000] "POST /docker/.env HTTP/1.1" 404 4413
185.92.25.59 - - [15/Oct/2023:01:30:51 +0000] "GET /cms/.env HTTP/1.1" 404 4413
185.192.71.172 - - [15/Oct/2023:01:30:51 +0000] "POST /cms/.env HTTP/1.1" 404 4412
185.192.71.167 - - [15/Oct/2023:01:30:52 +0000] "GET /script/.env HTTP/1.1" 404 4412
91.230.225.133 - - [15/Oct/2023:01:30:53 +0000] "POST /script/.env HTTP/1.1" 404 4413
185.92.25.53 - - [15/Oct/2023:01:30:53 +0000] "GET /live_env HTTP/1.1" 404 4412
185.192.71.171 - - [15/Oct/2023:01:30:53 +0000] "POST /live_env HTTP/1.1" 404 4412
Evidentemente vemos ese 404 (forbidden) pero qué le hacemos pensar al atacante. Claramente que esos archivos existen y además están protegidos cuando la realidad puede ser bien distinta, porque ni siquiera usamos, como en este caso Laravel.
Esto, como desarrolladores, nos debe hacer pensar que, a lo mejor, prescindir del uso de conocidos frameworks tiene muchas ventajas a la hora de hacer más segura una aplicación o sitio web, además de evitar cargas innecesarias en el servidor (al margen de que por encima tengamos un firewall). Hoy día, muchos se centran en la velocidad de desarrollo pero dejan de lado algo muy importante, la seguridad, no es lo mismo el desarrollo de una aplicación bajo un framework propietario no conocido bien testado que uno muy conocido, sencillamente porque los hackers se centran en atacar lo más usado.
Aún recuerdo este titular: “Subsanado el error informático que impedía pedir cita médica o solicitar plaza escolar en la web de la Comunidad” y que juraban por activa y por pasiva que “con la gestión del almacenamiento de la información y de los datos”, pero desde el primer momento se descartó que se tratara de de un “hackeo”. Más abajo se dice “Aun así, el Gobierno autonómico acaba de aprobar la creación de un Centro de Operaciones de Seguridad, una herramienta que permitirá “poder actuar de forma más rápida y eficiente ante los ciberataques”.
Claro que se trataba de un hackeo a través de un agüjero de seguridad de la app, personalmente pude ver la respuesta JSON con datos personales y no precisamente los tuyos.
La pregunta es ¿hubo consecuencias para la empresa que desarrolló la app para la CAM? la respuesta en NO, de hecho creo recordar que les renovaron el contrato, pero esto es otro tema.