OSINT - Gateway Vulnerability

NoBracketCTF-Final-2023 Nov 22, 2023

📜Scenario

Deutsche Gesetzliche Unfallversicherung E.V. (DGUV), votre entreprise partenaire se demande si elle dispose de machine hébergeant des gateway touché par la nouvelle 0 days citrix ADC. Aidez-les à investiguer pour savoir s'ils sont touchés ou non. Pour cela vous aider dans votre travail DGUV vous a fournit le favicon correspondant aux pages de connexion des gateway, faites en bon usage.
1. Le numéro de CVE
2. Les web technologies utiliser dans ces pages d'authentification

NOTE : Remplacer les espaces par des - (tiret du 6)
Format du flag : NBCTF{CVE-2023-28479:flask_sql_html_css_js_apache-server}

🔎Solve

Première partie

Dans un premier temps on se renseigne sur les 0 days récentes touchant les gateway citrix :

Le premier lien mène vers un article publié par IT-Connent Citrix 0day article nous donne le numéro de la CVE : CVE-2023-3519

Deuxième partie

Pour la deuxième partie on cherche les webs technologies utiliser dans la page d'authentification des gateways citrix exposé sur Internet dont dispose l'entreprise Deutsche Gesetzliche Unfallversicherung E.V. (DGUV).

Pour ce faire, on utilise shodan. Une méthode pour ce genre de recherche est de se baser sur le favicon hash de la page d'authentification.

En calculant le hash de ce favicon nous pouvons retrouver toutes les pages d'authent des gateway citrix.

Pour ce faire, on se base sur les travaux suivants : phor3nsic : favicon_hash_shodan et on modifie un peu sont script pour ouvrir un fichier courant.

Script modifié

import mmh3
import codecs
import sys

if len(sys.argv) < 2:
    print("[!] Error!")
    print(f"[-] Use: python3 {sys.argv[0]} path/to/image.png")
    print("[i] Get all hosts with the same image hash!")
    sys.exit()

def main():
    try:
        with open(sys.argv[1], 'rb') as image_file:
            image_content = image_file.read()
    except FileNotFoundError:
        print("[!] Error: File not found.")
        sys.exit()
    favicon = codecs.encode(image_content,"base64")
    hash_image = mmh3.hash(favicon)

    print("[!] Image hash: " + str(hash_image))
    print("[*] View Results:\n> https://www.shodan.io/search?query=http.favicon.hash%3A" + str(hash_image))

if __name__ == '__main__':
    main()

Resultat :

$ python3 favicon_hash_shodan/favicon_img.py citrix_favicon.ico
[!] Image hash: -1292923998
[*] View Results:
> https://www.shodan.io/search?query=http.favicon.hash%3A-1292923998

On peut ensuite faire une recherche shodan avec les filtres suivant :
http.favicon.hash:-1292923998 org:"Deutsche Gesetzliche Unfallversicherung E.V. (DGUV)"

On fait notre recherche avec les dorcks shodan donnée :

On clique sur l'un des résults de la recherche :

📝NOTE :

Voici des ressources pour comprendre le fonctionnement de l'algorithme de hashage mmh avec sont implémentation en python mmh3 :

MurmurHash - Wikipedia
mmh3
Python extension for MurmurHash (MurmurHash3), a set of fast and robust hash functions.

Tags