12 - Index of et directorylisting de 1998 à aujourd'hui - Part 1

Introduction


Cet article aurait pu ête écrit il y a 20 ans, mais comme le sujet est malheureusement encore d’actualité

Si c’est la première fois que vous entendez parler de directorylisting ou encore index of / vous devriez commencer par lire un peu sur le sujet :

L’article de portswigger résume très bien la situation :

Directory listings themselves do not necessarily constitute a security vulnerability. Any sensitive resources within the web root should in any case be properly access-controlled, and should not be accessible by an unauthorized party who happens to know or guess the URL. Even when directory listings are disabled, an attacker may guess the location of sensitive files using automated tools.


Identifier des sites avec directorylisting activés sans trop d’effort en utilisant shodan


Exemple de requête shodan avec une requête ciblée pour le Canada : "index of" country:"CA"

screenshot


sites *.ca avec directorylisting activé :


Requête 1 retourne 181 000 résultats : site:ca intitle:"index of" "parent directory" "size" "last modified" "description"


screenshot


Requête 2 retourne 179 000 résultats : q


screenshot


sites *.com avec directory listing activé + avec des fichiers de backup + en format SQL


Pour cet exemple, nous utiliserons ‘googler’ en ligne de commande :

https://github.com/jarun/googler

Une personne ayant de mauvaises intentions pourrait facilement identifier une quantité importante de backup de base de données de site juste avec une commande similaire à :

schaos@stack:~$ googler -x -n 20 'site:.com intitle:"index of" backup sql 2021'

 1.  Index of /backup/
     https://kurniajayabersama.com/backup/
     Index of /backup/. Name Last modified Size Description. up Parent Directory 28-​Apr-2020 15:58 - unknown AJR.sql 07-Jun-2021 15:58 4k unknown KJB.sql ...

 2.  Index of /database/Backup
     http://www.vaubandole.com/database/Backup/
     Index of /database/Backup. Icon Name Last modified Size Description. [​PARENTDIR] Parent Directory - [ ] agence_vauban.sql 2021-03-12 11:23 17M.

 3.  Index of /backup-4.18.2021_21-18-54_reangro1/mysql - Rean Group
     https://reangroup.com/backup-4.18.2021_21-18-54_reangro1/mysql/
     Index of /backup-4.18.2021_21-18-54_reangro1/mysql ... reangro1_wp.create, 2021-04-23 07:34, 1.3K. reangro1_wp.sql, 2021-04-23 07:34, 7.7M.

 4.  Index of /backup-4.23.2021_13-09-23_cushysurgical/mysql/
     http://www.cushysurgical.com/backup-4.23.2021_13-09-23_cushysurgical/mysql/?ND
     Index of /backup-4.23.2021_13-09-23_cushysurgical/mysql/. Name Last ... 17:08 4k unknown cushysur_wp202.sql 23-Apr-2021 17:08 27000k unknown ...

 5.  Index of /backup/mysql/
     http://xintek-iot.com/backup/mysql/
     Index of /backup/mysql/ ../ xinjihua_20210606235901.sql 06-Jun-2021 15:59 3018806951.

 6.  Index of /wp-content/uploads - Mideye
     https://www.mideye.com/wp-content/uploads/
     flags/, 2015-02-17 15:13, -. [ ], kari-backup.sql.gz, 2020-09-30 09:54, 1.6M. [ ], logcopy.zip, 2021-02-26 08:27, 9.5M. [DIR], saml-20-single-sign-on/, 2017-03-07​ ...

 7.  Index of /Backup
     http://akmaltechnology.com/Backup/
     Name · Last modified · Size · Description · Parent Directory, -. 04012021/, 2021-​01-04 09:49, -. SQL/, 2020-11-27 21:53, -. fastentix_template_v..> 2020-12-13 ...

 8.  Index of /Backup - ClearDetections
     http://www.clear-detections.com/Backup/
     Name · Last modified · Size · Description. [PARENTDIR], Parent Directory, -. [ ], artyapi1510.sql, 2021-04-11 11:57, 9.0M. [ ], cleardetections.sql, 2021-04-11 11:​ ...

 9.  Index of /test
     http://urllinux.com/test/
     Index of /test. Name · Last modified · Size · Description · Parent Directory, -. backup.sql, 2021-01-01 00:00, 0.

 10. Index of /Firstobjectindia backup/
     https://firstobjectindia.com/Firstobjectindia%20backup/
     Mar. 1, 2021 —

 11. Index of /wp-content/uploads/backup-wd-files-db-7e1ef7/
     http://downtownmosque.com/wp-content/uploads/backup-wd-files-db-7e1ef7/?DD
     Index of /wp-content/uploads/backup-wd-files-db-7e1ef7/. Name Last modified Size Description ... error_log 22-May-2021 10:27 28k unknown downtown_wp1.​sql 18-Sep-2017 15:03 4456k
     unknown buwd_config.json 18-Sep-2017 15:03 8k​ ...

 12. Index of /wp-content/uploads - Maxtena
     http://www.maxtena.com/wp-content/uploads/
     2021/, 2021-05-31 22:00, -. ai1ec_static ... bsr_db_backup.sql.gz, 2017-10-15 16​:29, 3.6M. calls-to-action ... 14:51, 100K. wpfc-backup/, 2017-02-15 12:46, -

 13. Index of /dbbackup
     http://www.bhadraagencies.com/dbbackup/
     Name · Last modified · Size · Description · Parent Directory, -. db-backup-2019-11​-06..> 2019-11-06 23:45, 46M. db-backup-2021-05-20..> 2021-05-20 23:45 ...

 14. Index of /wp-content/uploads - Miller-Stephenson
     https://www.miller-stephenson.com/wp-content/uploads/
     ShortpixelBackups/, 2021-02-04 14:03, -. bfi_thumb/, 2021-02-04 ... 2021-02-04 14:02, -. notactiv_wp1_wp_.sql, 2017-03-01 05:22, 28M. notactiv_wp4_wp_.sql, 2017-08-22 04:56, 37M ...
     2021-02-04 14:02, -. wpfc-backup/, 2021-02-04 14:02, -.

 15. Index of /resources/common/organization/583/backup ...
     http://ftp.pearnode.com/resources/common/organization/583/backup/1602255015882/
     Name · Last modified · Size · Description. [PARENTDIR], Parent Directory, -. [ ], INVENTORY.sql, 2021-03-20 00:13, 151K. [ ], PROCESS.sql, 2021-03-20 00:13 ...

 16. Index of /backup
     http://www.yourdevelopmentlink.com/backup/
     Parent Directory, -. [ ], epicurean_db.sql, 2020-10-13 20:04, 1.4M. [ ], epicurean_files.zip, 2020-10-13 20:05, 227M. [ ], loveshape-db.sql, 2021-01-13 16:45, 5.4M.

googler (? for help) q
schaos@stack:~$

La requête : site:.com intitle:"index of" backup sql Retourne 9 080 résultats. Même s’il y aurait seulement 500 liens avec des backup d’export SQL de disponible, ça fait quand même pas mal de base de données ….

screenshot


En moins de 2 minutes, il est possible de trouver des fichiers comme :

screenshot


Pendant les mêmes 2 minutes, il est possible de trouver aussi cette petite merveille : https://vgslaw.com/mos/root/all_db_backup/

screenshot

Aussi : https://vgslaw.com/mos/root/etc/ssl/private/


Avec une minute de plus, un collectionneur ayant des mauvaises intentions pourrait télécharger toutes les bases de données de ce répertoire avec la commande :

wget --recursive --no-parent https://vgslaw.com/mos/root/all_db_backup/

L’utilisation de googler simplifie l’automatisation des requêtes, il est ensuite possible de filtrer les résultats en scriptant minimalement et d’envoyer des notifications email, slack ou encore discord.

Pour les collectionneurs, googler simplifie aussi l’automatisation du téléchargement des nouveaux fichiers disponibles . . .


Si vous avez la responsabilité de surveiller et protéger les infrastructures du gouvernement du Canada, une des requêtes pourrait ressembler à :


site:gc.ca intitle:"index of" "parent directory" "size" "last modified" "description"

l’article find domain by asn fournit quelques exemples pour identifier d’autres domaines d’intérêt associé à un ASN. pour l’exemple du gouvernement du canada, la même requête devrait être exécutée pour les domains canada.ca, dnd.ca, etc . . .

screenshot


Vous voulez exclure ssl-templates.services.gc.ca des résultats ?

Essayer : site:gc.ca intitle:"index of" "parent directory" "size" "last modified" "description" -inurl:"ssl-templates.services.gc.ca"

Dernier exemple avec plusieurs exclusions : site:gc.ca intitle:"index of" "parent directory" "size" "last modified" "description" -inurl:"ssl-templates.services.gc.ca" -meteo -wind -anran -anrran -sirc -courteau -geo -weather -science


Volet sensibilisation avec un exemple concret


NB: L’équipe responsable de la sécurité pour l’organisation concernée dans l’exemple ci-dessous a préalablement été informée de la situation et elle a procédé à la correction très rapidement

Une simple requête sur shodan.io a permis d’identifier le site d’une organisation Québecois qui avait le directorylisting enabled.

Rapidement, il était possible d’identifier des fichiers qui étaient récents et qui pouvait être d’intérêt pour une personne ayant des mauvaises intentions :

screenshot


Un premier fichier production.json contenait les informations sur les bases de données, host + database + username.

Si ce n’est pas déjà fait, production.json devrait faire partie de votre liste de recherche pour google, github, * Bucket, bing, etc.

screenshot


Un deuxième fichier *-enviro*.json contient une liste de mot de passe.

screenshot


un autre exemple :


screenshot

Pour cet exemple, une personne mal intentionnée qui aurait l’intention de cibler précisément Desjardins pourrait envisager de :

  • Essayer d’identifier d’autres répertoires disponibles qui pourraient contenir des informations utiles. Ça s’automatise assez bien avec des solutions comme https://github.com/OJ/gobuster , https://github.com/maurosoria/dirsearch , etc.
  • Identifier s’il existe d’autres sites hébergés sur le même IP et tester chacun des sites identifiés.
    • Normalement, lorsque plusieurs sites sont hébergés sur un même IP, la configuration du serveur web est NamedBase virtualhost. Il y à donc 1 fichier de configuration par site. Il est possible qu’un des sites soins mal sécurisés.
    • Tester http://IP_du_site , parce que souvent, la configuration du site en accédant par l’IP est associée au fichier de configuration DEFAULT. Qui est souvent très différent d’un fichier de configuration de production.
    • Pour identifier les FQDN valident, il pourrait facilement utiliser https://securitytrails.com/ , https://securitytrails.com/ , https://subdomainfinder.c99.nl/. Si la personne mal intentionnée collectionne déjà les informations exemple avec amass, subfinder, sublist3r, etc. Alors, il lui reste juste à faire un grep.
    • Afficher le certificat et consulter les autres noms DNS. Il est parfois possible d’identifier rapidement des fqdn valident de cette façon.

Article à venir sur github et la bêtise humaine

Des exemples de leakops comme ci-dessous sont trop nombreux.

screenshot

Le responsable du repo github n’a pas été informé de cette situation

  • Certaines données date de plus de 2 ans.
  • Je manque de temps, alors je priorise ce qui peut avoir un impact direct sur les Québecois en premier lieu, suivi des autres canadiens.
  • Trop de notification envoyées sont simplement ignorées. Un exemple https://www.securitychaos.ca/posts/dataleak/s3-vw-websites/
  • Il y à tout simplement trop de données confidentielles disponibles publiquement pour pouvoir notifier toutes les organisations.

Suggestion pour mononcle et matante


Une des choses que vous devriez retenir est que si vous voulez absolument vous inscrire sur un site de marde pour pouvoir commenter une recette de biscuit . . . svp n’utiliser pas le même mot de passe que pour votre compte facebook, hotmail, gmail, employeur, pornhub.

Comme ça, quand le site de marde exposera les données utilisateurs, les impacts seront potentiellement beaucoup moins grave pour vous.

Un bon exemple pour mononcle et matante qui pourrait aider à sensibiliser : https://ici.radio-canada.ca/nouvelle/1662088/anapharm-inventiv-syneos-health-breche-faille-fuite