Annonce

Réduire
Aucune annonce.

(Python) mon scanner de vulnérabilités Include et directory traversal

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • (Python) mon scanner de vulnérabilités Include et directory traversal

    Salut à tous !!
    Aujourd'hui je partage avec vous mon simple scanner de LFI et RFI écrit en python
    vous aurez besoin du module requests et l'interpréteur python +3.0
    CODE
    Code:
    #!usr/bin/env python
     """ IDTscan(Include and Directory Traversal scanner ) is a script written in python for Web-audit and penetration testing .
    It scan a host for discover  include and directory traversal vulnerabilities  fastly !!
    The author isn't responable for all damages caused by script
    Author:Had1x aka H11
    licence: GNU GPL V3
    Requirements :
    -requests module
    -python version + 3.0
    Installing requests in Debian-based distribution :
    sudo apt-get install python-pip
    pip install requests
    Usage:
    python IDTscan.py https://www.domain-name.com
    ./IDTscan.py https://www.domain-name.com  """
    
    
    import sys
    import time
    try:
        import requests
    except ImportError:
        print ("please install requests module with pip ")
        sys.exit()
    
    if  len(sys.argv) != 2:
        print ("Usage : python IDTscan.py  https://www.domain.com ")
    elif len(sys.argv) == 2:
        domain = sys.argv[1]
        include_url = ((domain) + "/index.php?page=https://www.google.com")
        directory_traversal_url = ((domain) + "/index.php?page=.../.../.../.../etc/passwd")
        print ("_____ _____ _______")
        print(" |_   _|  __ \__   __| ")
        print (" | | | |  | | | |___  ___ __ _ _ __    ")
        print (" | | | |  | | | / __|/ __/ _` | '_ \ ")                  
        print (" | |_| |__| | | \__ \ (_| (_| | || | ")
        print (" |__ __|_____/|_|___/\___\__,_|_||_| ")
        print ("")
        print ("author: Had1X ")
        time.sleep(2)
        print ("")
        print ("[+] scanning : ",(domain),"...")
        print ("scanning for include vulnerability ...")
        r = requests.get(include_url)
        if (r.status_code) == (requests.codes.ok):
            time.sleep(2)
            print ("[+] include vulnerability was discovered:\n ",(include_url))
            include_vuln = True
            time.sleep(2)
        else:
            print (" [-] include vulnerability was no discovered ")
            include_vuln = False
            time.sleep(2)
            print ("")
            print (" scanning host for directory traversal  vulnerability ... ")
            time.sleep(2)
            d  = requests.get(directory_traversal_url)
            if (d.status_code)  == (requests.codes.ok):
               print (" [+] directory traversal vulnerability was discovered :\n",(directory_traversal_url))
               dir_trav_vuln = True
               time.sleep(3)
               print ("")
            else:
             print ("[-]directory traversal vulnerability was no discovered ")
             dir_trav_vuln = False
             time.sleep(3)
             print ("")
    
        if (include_vuln) == True and (dir_trav_vuln) == True :
            print ("[*] host : ",(domain))
            print ("[+]Include vulnerability : Yes ")
            print  ("[+]Directory traversal vulnerability :  Yes ")
            time.sleep(3)
            sys.exit()
        elif (include_vuln) == False  and (dir_trav_vuln) ==  False :
            print ("[*]host ",(domain))
            print ("[-]Include vulnerability : No ")
            print  ("[-]Directory traversal vulnerability : No ")
            time.sleep(3)
            sys.exit()
        elif (include_vuln)  == True and (dir_trav_vuln) == False :
            print ("[*] host ",(domain))
            print ("[+]Include vulnerability : Yes ")
            print ("[-]Directory traversal : No ")
            time.sleep(3)
            sys.exit()
        else:
            print ("host : ",(domain))
            print ("[-]Include vulnerability : No ")
            print ("")
            print ("[+]Directory traversal vulnerabilty : Yes")
            print (" page : ",(directory_traversal_url))
            time.sleep(3)
            sys.exit()
    Ps: vos propositions et commentaires sont les bienvenu , merci à Blend pour son aide
    Dernière modification par Hades Worm, 13 mars 2016, 10h58.
    Plus tu persévereras , plus tu t'amélioreras

  • #2
    Salut je suis Rodrigue Daniel

    Je vais essayer d'apporter mon peu. Je suis encore très nul en python.

    Ton script spécifie qu'il utilise python3, mais apparemment en voyant cette portion de ton code :
    Code:
    python IDTscan.py https://www.domain-name.com
    tu fais appel à python version < 3 (strictement inférieur). En effet pour faire appel à python version 3 (l'une de ses versions), on tape la commande "python3". Bon peut être je me trompe.

    Avec cet usage de ton script comme tu le préconises
    Code:
    ./IDTscan.py https://www.domain-name.com
    Je ne sais pas si cela peut marcher sans avoir précisé l'interpréteur de python3 gràce à une ligne de shebang.
    Bon peut être je trompe.

    Pour le test de tes arguments, je pense qu'il est préférable de faire l'inverse car apparemment ton script ne prend que deux arguments.
    Donc tu n'as pas géré le fait qu'un utilisateur peut saisir 3 arguments (ça peut arriver). Voici ta portion modifiée :
    Code:
    if len(sys.argv) == 2:
       ...instruction...
       ...instruction...
       ..................
    else:
       print ("Usage : python IDTscan.py  https://www.domain.com ")
       sys.exit()
    Aussi ton script doit s'arrêter une fois qu'il y'a erreur de syntaxe. C'est pourquoi il y'a le "sys.exit()" après le "print".

    D'après cette portion de ton code :
    Code:
    if (r.status_code) == (requests.codes.ok):
            time.sleep(2)
            print ("[+] include vulnerability was discovered:\n ",(include_url))
            include_vuln = True
            time.sleep(2)
        else:
            print (" [-] include vulnerability was no discovered ")
            include_vuln = False
            time.sleep(2)
            print ("")
            print (" scanning host for directory traversal  vulnerability ... ")
            time.sleep(2)
            d  = requests.get(directory_traversal_url)
            if (d.status_code)  == (requests.codes.ok):
               print (" [+] directory traversal vulnerability was discovered :\n",(directory_traversal_url))
               dir_trav_vuln = True
               time.sleep(3)
               print ("")
            else:
             print ("[-]directory traversal vulnerability was no discovered ")
             dir_trav_vuln = False
             time.sleep(3)
             print ("")
    C'est comme si ton script ne scanne la vulnérabilité "directory traversal" que si le scan de la vulnérabilité "include" a échoué. Pourtant plus
    loin en bas, tu veux gérer la découverte des deux vulnérabilités en observant cette portion :
    Code:
    if (include_vuln) == True and (dir_trav_vuln) == True :
    Sauf si je me trompe, je ne vois pas comment les deux variables seront à "True" en même temps. Si je me trompe, STP éclaircir moi.
    Bon peut être c'est ta spécification. Ne penses-tu pas qu'il serait mieux de scanner les deux vulnérabilités sans que les résultats de l'un
    n'influencent sur les résultats de l'autre?

    Sans toutefois t'offenser, je ne vois pas trop l'utilité de la dernière portion :
    Code:
    if (include_vuln) == True and (dir_trav_vuln) == True :
            print ("[*] host : ",(domain))
            print ("[+]Include vulnerability : Yes ")
            print  ("[+]Directory traversal vulnerability :  Yes ")
            time.sleep(3)
            sys.exit()
        elif (include_vuln) == False  and (dir_trav_vuln) ==  False :
            print ("[*]host ",(domain))
            print ("[-]Include vulnerability : No ")
            print  ("[-]Directory traversal vulnerability : No ")
            time.sleep(3)
            sys.exit()
        elif (include_vuln)  == True and (dir_trav_vuln) == False :
            print ("[*] host ",(domain))
            print ("[+]Include vulnerability : Yes ")
            print ("[-]Directory traversal : No ")
            time.sleep(3)
            sys.exit()
        else:
            print ("host : ",(domain))
            print ("[-]Include vulnerability : No ")
            print ("")
            print ("[+]Directory traversal vulnerabilty : Yes")
            print (" page : ",(directory_traversal_url))
            time.sleep(3)
            sys.exit()
    A mon avis tu peux insérer cela dans la portion du haut. Essayer de gérer les deux scans de manière indépendante en laissant de côté les cas
    où il y'a détection en "même temps" ou "l'un et l'autre" ou "l'un ou l'autre". En les gérant séparement, tous ces cas peuvent apparaître.
    Bon peut être je trompe encore ou alors ce sont tes spécifications.

    Sans toutefois t'offenser, c'est un peu mon avis.
    MERCI
    Dernière modification par rodrigue daniel, 13 mars 2016, 06h29.
    Passionné par la Sécurité Informatique.
    Le véritable ennemi de la connaissance n'est pas l'ignorance mais l'illusion de la connaissance.
    La quête de la connaissance passe d'abord par l'humilité et ensuite la détermination.

    Commentaire


    • #3
      Envoyé par rodrigue daniel Voir le message
      Salut je suis Rodrigue Daniel

      Je vais essayer d'apporter mon peu. Je suis encore très nul en python.

      Ton script spécifie qu'il utilise python3, mais apparemment en voyant cette portion de ton code :
      Code:
      python IDTscan.py https://www.domain-name.com
      tu fais appel à python version < 3 (strictement inférieur). En effet pour faire appel à python version 3 (l'une de ses versions), on tape la commande "python3". Bon peut être je me trompe.

      Avec cet usage de ton script comme tu le préconises
      Code:
      ./IDTscan.py https://www.domain-name.com
      Je ne sais pas si cela peut marcher sans avoir précisé l'interpréteur de python3 gràce à une ligne de shebang.
      Bon peut être je trompe.
      (...)I
      En fait, - à moins que je ne me trompe - cela est plus "sybillin" ...

      Normalement, tu as raison, l'instruction python est strictement relative à Python 2, et fera appel à l'environnement Python 2.
      Si tu veux être absolument sûr d'appeler l'environnement Python 3, il faut en effet instruire python3 ...
      Mais si tu n'as que Python 3 d'installer ... quid ?
      Si ton instruction python renvoit strictement à Python 3 ;-)

      Quoiqu'il en soit, officiellement, pour l'instant, l'instruction python appelle absolument l'environnement Python 2.
      "Un hacker est un justicier du monde libre, du libre partage, de la libre information... "
      Quel slogan !
      Tout un programme ... une sacrée vision ... comme je les aime !

      Commentaire

      Chargement...
      X