tags: LogPoisoning


Il Log Poisoning è un attacco nel quale si sfrutta l’User-Agent del servizio web in modo tale da poterci permettere di eseguire codice arbitrario all’interno della macchina vittima. Per poter effettuare questo tipo di attacco dobbiamo avere accesso al file di log della macchina vittima tramite per esempio Local File Inclusion per poter verificare se effettivamente è possibile eseguire codice, perchè sostanzialmente noi facciamo una richiesta http al server tramite curl e sostituiamo tramite la flag -H l’User-Agent e se riusciamo a vedere nel file di log che il nostro file viene eseguito allora possiamo innettare codice arbitrario e potenzialmente ottenere una reverse shell.

Il comando di curl è il seguente:

curl -s -X GET "http://indirizzoIP/pagina" -H "User-Agent: <?php system('whoami'); ?>"

Mentre le cartelle di default dei servizi web più comuni sono:

1. Apache HTTP Server
File di log degli accessi (access log): /var/log/apache2/access.log (in Debian/Ubuntu) o /var/log/httpd/access_log (in CentOS/RHEL).
File di log degli errori (error log): /var/log/apache2/error.log (in Debian/Ubuntu) o /var/log/httpd/error_log (in CentOS/RHEL).
2. Nginx
File di log degli accessi (access log): /var/log/nginx/access.log
File di log degli errori (error log): /var/log/nginx/error.log
3. MySQL/MariaDB
File di log generico: /var/log/mysql/mysql.log (Debian/Ubuntu) o /var/log/mysqld.log (CentOS/RHEL).
File di log errori: /var/log/mysql/error.log (Debian/Ubuntu) o /var/log/mysqld.log (CentOS/RHEL).
Log delle query lente (slow query log): /var/log/mysql/mysql-slow.log (Debian/Ubuntu) o /var/log/mysqld-slow.log (CentOS/RHEL).
4. PostgreSQL
File di log generale: /var/log/postgresql/postgresql-[version].log (Debian/Ubuntu) o /var/lib/pgsql/data/pg_log/postgresql.log (CentOS/RHEL).
5. Docker
Log del daemon di Docker: /var/log/docker.log
Log dei container (di default in formato JSON): /var/lib/docker/containers/[container-id]/[container-id]-json.log
6. Systemd (per i log di sistema)
Log di sistema (consultabili con journalctl): /var/log/journal/ (se configurato).
Se non è presente in file, i log possono essere visualizzati con il comando journalctl.
7. SSH (Secure Shell)
Log degli accessi e degli errori SSH: /var/log/auth.log (Debian/Ubuntu) o /var/log/secure (CentOS/RHEL) o var/log/btmp.
8. FTP (vsftpd)
File di log FTP: /var/log/vsftpd.log
9. Squid (Proxy)
File di log accessi: /var/log/squid/access.log
File di log errori: /var/log/squid/cache.log
10. Samba
File di log generale: /var/log/samba/log.smbd o /var/log/samba/log.nmbd
Log degli accessi e dei dettagli possono essere trovati in file simili a /var/log/samba/log.[client-ip].
11. Cron
Log delle attività di cron: /var/log/cron.log (Debian/Ubuntu) o /var/log/cron (CentOS/RHEL). In molti casi è parte del file /var/log/syslog su Debian/Ubuntu.
12. Mail Server (Postfix)
File di log di Postfix: /var/log/mail.log (Debian/Ubuntu) o /var/log/maillog (CentOS/RHEL).
13. PHP-FPM (PHP FastCGI Process Manager)
Log degli errori: /var/log/php7.4-fpm.log (la versione può variare in base a quella installata).
14. Redis
Log di Redis: /var/log/redis/redis-server.log
15. MongoDB
File di log di MongoDB: /var/log/mongodb/mongod.log